# 08. Каталогный домен ## Назначение Каталогный домен описывает правила формирования витрин, листингов и поисковых выборок для tenant-магазина. ## Поведение системы - Каталог строится из API-данных и bootstrap-конфигурации. - Bootstrap определяет структуру страниц каталога и виджеты. - API возвращает содержимое: товары, категории, метаданные фильтров. ## Обязательные JSON-свойства каталога - catalog.defaultSort - catalog.availableSorts - catalog.enabledFilters - catalog.layout ## Опциональные свойства - catalog.navigationMode - catalog.showBreadcrumbs - catalog.showCategoryBanner - catalog.showSubcategoryChips - catalog.showRatings - catalog.showDiscounts - catalog.showAvailability - catalog.suggestionsEnabled - catalog.searchHistoryEnabled - catalog.facets (future backend-driven) ## Строгие правила - Каталог не содержит tenant-specific условий в frontend-коде. - Сортировка и фильтры должны быть согласованы между frontend и backend. - Видимость товаров контролируется данными backend, а не frontend-хардкодом. ## Reusable Domain Models - SearchCriteria - FilterDefinition - FilterOption - SortDefinition - CatalogView - SearchResult ## Пример catalog JSON (bootstrap fragment) ```json { "catalog": { "layout": "grid", "defaultSort": "relevance", "availableSorts": ["relevance", "latest", "price_asc", "price_desc", "rating", "popular", "discount"], "enabledFilters": ["price", "availability", "rating", "brand", "category", "subcategory", "discount", "new", "color", "size", "attributes"], "showBreadcrumbs": true, "showCategoryBanner": true, "showSubcategoryChips": true } } ``` ## Ответственность Frontend - Отобразить листинг, фильтры, сортировки и пагинацию. - Синхронизировать состояние каталога с URL. - Стабильно обрабатывать пустые и частично заполненные наборы данных. ## Ответственность Backend - Возвращать согласованные данные для листингов и фильтров. - Гарантировать корректные totals/pagination. - Поддерживать стабильные ключи сортировки и фильтрации.