ADR-013: Каскадная активация категорий и сортировка товаров

Статус

accepted

Контекст

При верификации BR 1.7 обнаружены два расхождения между слоями документации. Фиксируем решения. Фронтенд реализуется с расчётом на эти правки бэкенда.

Замечание 1: Каскадная активация категорий

Проблема

BR 1.7 и бизнес-спека описывают: “Обратная активация — поштучно или каскадно (выбор в UI)“. Но API (PATCH /categories/{id}) и фронтенд-спека (Каталог — Категории) реализуют только поштучную активацию. Нет параметра cascade в API и нет UI-выбора.

Деактивация при этом каскадная — это работает корректно.

Решение

Фронтенд реализует каскадную активацию через модалку с выбором:

  • При активации категории с дочерними → модалка: “Активировать только эту категорию или вместе с подкатегориями?”
  • Два варианта: “Только эту” / “Вместе с подкатегориями”

Бэкенд должен поддержать: параметр cascade: boolean в PATCH /api/v1/categories/{id} при is_active: true. Если cascade: true → активировать категорию + все дочерние рекурсивно.

Фронтенд реализован с расчётом на этот параметр

До реализации бэкендом — фронт отправляет cascade: true/false, бэкенд может игнорировать (активирует только текущую). После доработки бэкенда — заработает полностью.

Замечание 2: Параметр sort в GET /products

Проблема

Фронтенд-спека (Каталог — Товары) описывает сортировку: sort=name_asc / sort=name_desc. Но API-контракт GET /api/v1/products не содержит параметр sort.

Решение

Фронтенд отправляет sort=name_asc / sort=name_desc как query parameter.

Бэкенд должен поддержать: параметр sort в GET /api/v1/products с значениями name_asc (default), name_desc, created_at_desc.

Фронтенд реализован с расчётом на этот параметр

До реализации бэкендом — сортировка не работает (бэкенд возвращает в дефолтном порядке). После доработки — заработает.

Ссылки