Files
marketplaces/docs/platform/08-catalog-domain.md
sdarbinyan ee269a9e33
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
fixes
2026-07-10 15:55:38 +04:00

3.4 KiB
Raw Blame History

08. Каталогный домен

Назначение

Каталогный домен описывает правила формирования витрин, листингов и поисковых выборок для tenant-магазина.

Поведение системы

  • Каталог строится из API-данных и bootstrap-конфигурации.
  • Bootstrap определяет структуру страниц каталога и виджеты.
  • API возвращает содержимое: товары, категории, метаданные фильтров.

Обязательные JSON-свойства каталога

  • catalog.defaultSort
  • catalog.availableSorts
  • catalog.enabledFilters
  • catalog.layout

Опциональные свойства

  • catalog.navigationMode
  • catalog.loadingStrategy
  • catalog.showBreadcrumbs
  • catalog.showCategoryBanner
  • catalog.showSubcategoryChips
  • catalog.showRatings
  • catalog.showDiscounts
  • catalog.showAvailability
  • catalog.suggestionsEnabled
  • catalog.searchHistoryEnabled
  • catalog.features (via bootstrap.features)
  • catalog.facets (future backend-driven)

Строгие правила

  • Каталог не содержит tenant-specific условий в frontend-коде.
  • Сортировка и фильтры должны быть согласованы между frontend и backend.
  • Видимость товаров контролируется данными backend, а не frontend-хардкодом.
  • Пустая категория рендерит отдельный catalog empty-state, а не product grid empty-state.
  • Корневой переход All Categories всегда возвращает category browser /catalog.
  • Loading strategy выбирается конфигурацией без дублирования list logic.

Reusable Domain Models

  • SearchCriteria
  • FilterDefinition
  • FilterOption
  • SortDefinition
  • CatalogView
  • SearchResult

Пример catalog JSON (bootstrap fragment)

{
  "catalog": {
    "layout": "grid-4",
    "loadingStrategy": "pagination",
    "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
  }
}

Loading Strategies

  • pagination
  • loadMore
  • infiniteScroll

Grid Modes

  • grid-2
  • grid-3
  • grid-4
  • list
  • compact

Legacy aliases still normalize safely:

  • grid
  • large-grid
  • compact-grid

Ответственность Frontend

  • Отобразить листинг, фильтры, сортировки и пагинацию.
  • Синхронизировать состояние каталога с URL.
  • Стабильно обрабатывать пустые и частично заполненные наборы данных.

Ответственность Backend

  • Возвращать согласованные данные для листингов и фильтров.
  • Гарантировать корректные totals/pagination.
  • Поддерживать стабильные ключи сортировки и фильтрации.