This commit is contained in:
55
docs/platform/08-catalog-domain.md
Normal file
55
docs/platform/08-catalog-domain.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# 08. Каталогный домен
|
||||
|
||||
## Назначение
|
||||
Каталогный домен описывает правила формирования витрин, листингов и поисковых выборок для tenant-магазина.
|
||||
|
||||
## Поведение системы
|
||||
- Каталог строится из API-данных и bootstrap-конфигурации.
|
||||
- Bootstrap определяет структуру страниц каталога и виджеты.
|
||||
- API возвращает содержимое: товары, категории, метаданные фильтров.
|
||||
|
||||
## Обязательные JSON-свойства каталога
|
||||
- catalog.settings.defaultSort
|
||||
- catalog.settings.pageSize
|
||||
- catalog.routes.list
|
||||
- catalog.routes.details
|
||||
|
||||
## Опциональные свойства
|
||||
- catalog.filters.available
|
||||
- catalog.facets
|
||||
- catalog.badges
|
||||
- catalog.promotions
|
||||
|
||||
## Строгие правила
|
||||
- Каталог не содержит tenant-specific условий в frontend-коде.
|
||||
- Сортировка и фильтры должны быть согласованы между frontend и backend.
|
||||
- Видимость товаров контролируется данными backend, а не frontend-хардкодом.
|
||||
|
||||
## Пример catalog JSON (bootstrap fragment)
|
||||
```json
|
||||
{
|
||||
"catalog": {
|
||||
"settings": {
|
||||
"defaultSort": "priority_desc",
|
||||
"pageSize": 20
|
||||
},
|
||||
"routes": {
|
||||
"list": "/catalog",
|
||||
"details": "/product/:id"
|
||||
},
|
||||
"filters": {
|
||||
"available": ["price", "brand", "availability"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Ответственность Frontend
|
||||
- Отобразить листинг, фильтры, сортировки и пагинацию.
|
||||
- Синхронизировать состояние каталога с URL.
|
||||
- Стабильно обрабатывать пустые и частично заполненные наборы данных.
|
||||
|
||||
## Ответственность Backend
|
||||
- Возвращать согласованные данные для листингов и фильтров.
|
||||
- Гарантировать корректные totals/pagination.
|
||||
- Поддерживать стабильные ключи сортировки и фильтрации.
|
||||
Reference in New Issue
Block a user