50 lines
2.0 KiB
Markdown
50 lines
2.0 KiB
Markdown
|
|
# 09. Домен категорий
|
|||
|
|
|
|||
|
|
## Назначение
|
|||
|
|
Категорийный домен описывает иерархию каталога, правила вложенности и отображения категорий.
|
|||
|
|
|
|||
|
|
## Поведение системы
|
|||
|
|
- Frontend получает плоский список или дерево категорий из backend.
|
|||
|
|
- Для витрины строится дерево root -> children.
|
|||
|
|
- Выбор категории влияет на выборку товаров и хлебные крошки.
|
|||
|
|
|
|||
|
|
## Обязательные JSON-свойства категории
|
|||
|
|
- id
|
|||
|
|
- title
|
|||
|
|
- parentId (null для корня)
|
|||
|
|
- visible
|
|||
|
|
- priority
|
|||
|
|
|
|||
|
|
## Опциональные свойства
|
|||
|
|
- icon
|
|||
|
|
- image
|
|||
|
|
- itemCount
|
|||
|
|
- seo
|
|||
|
|
- translations
|
|||
|
|
|
|||
|
|
## Строгие правила
|
|||
|
|
- id категории должен быть уникальным в tenant.
|
|||
|
|
- Циклические ссылки parentId запрещены.
|
|||
|
|
- Невидимые категории не отображаются в публичной витрине.
|
|||
|
|
- Порядок показа определяется priority, затем id.
|
|||
|
|
|
|||
|
|
## Пример JSON категорий
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"data": [
|
|||
|
|
{ "id": 1, "title": "Электроника", "parentId": null, "visible": true, "priority": 1 },
|
|||
|
|
{ "id": 2, "title": "Смартфоны", "parentId": 1, "visible": true, "priority": 1 }
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Ответственность Frontend
|
|||
|
|
- Корректно строить дерево категорий и breadcrumbs.
|
|||
|
|
- Переходить в каталог категории по маршруту конфигурации.
|
|||
|
|
- Не показывать скрытые категории.
|
|||
|
|
|
|||
|
|
## Ответственность Backend
|
|||
|
|
- Поддерживать целостность иерархии категорий.
|
|||
|
|
- Возвращать категории в tenant-контексте.
|
|||
|
|
- Отдавать метрики itemCount при их поддержке.
|