Files
marketplaces/docs/platform/08-catalog-domain.md
sdarbinyan 1a8f916942
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
feat(catalog): implement sprint 10 advanced search experience
2026-07-09 00:55:50 +04:00

2.7 KiB
Raw Blame History

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)

{
  "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.
  • Поддерживать стабильные ключи сортировки и фильтрации.