# 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 при их поддержке.
