Каталог
Категории, товары, модификаторы, прейскуранты, стоп-листы, техкарты, меню в карточке ТТ.
Известно багов в зоне: 24 + cross-cutting (X02, X04)
1 Critical, 13 Major, 10 Minor. Подробности — inline ниже.
Категории
- Дерево с
parent_id, неограниченная вложенность (на практике 2-3 уровня) - Активность с каскадной деактивацией (отключаешь родителя → дочерние и товары отключаются)
- Каскадная активация — НЕ работает, дочерние не включаются автоматически (BUG-040)
- Удаление — только если нет дочерних (
CATEGORY_HAS_CHILDREN) и нет товаров (CATEGORY_HAS_PRODUCTS) - Порядок отображения, цвет, доступность по каналам — недоступны для редактирования, можно только название (BUG-039)
- Создание с пустым именем — сохраняется без ошибки и подсказки (BUG-042)
- 255 символов без пробелов — ломает вёрстку, при редактировании 409 (BUG-041)
- «Без категории» — товары с
category_id=NULL
Товары — CRUD
- CRUD: создание, редактирование (моментально), soft delete с восстановлением
- Тип:
dish/good(типingredientубран в BR 1.11) - Уникальность названия в рамках franchise_id среди неудалённых
- Категория (nullable)
- Смена категории на «Без категории» — возвращается исходная категория (BUG-035)
- Дублирование товара — не переносит фото, модификаторы, техкарту (BUG-036)
- Фильтры по типу, статусу, категории
- Фильтр «Ингредиент» — пусто, хотя ингредиенты в системе есть (BUG-032)
- Поиск по названию
Товары — поля
- КБЖУ: kcal, protein, fat, carbs (миграция 019, BR 2.1)
- Фискальные атрибуты (BR 3.3):
vat_rate,payment_subject,payment_type— обязательны для PayKeeper invoice - Технологические флаги:
is_open_price,is_by_weight,is_exclude_from_promo,is_manual_discount_banned,is_admin_only,is_alcohol,is_tobacco,is_sugary_drink - Связка
requires_kitchen↔kitchen_station_id(обязательна при requires_kitchen=true, NULL при false) - При смене requires_kitchen=true→false — kitchen_station_id сбрасывается
- «Доступно во всех точках» — снятие галочки не сохраняется (BUG-031)
Товары — UX полей
- Поле «Описание» — шрифт textarea, не консистентен с обычными input (BUG-030, BUG-X02)
- Поле «Описание» — растягивается без предела (нет auto-resize / max-height) (BUG-037)
- Поле «Описание» — длинные строки без пробелов выходят за границы страницы (BUG-038, BUG-X04)
Товары — версионирование (BR 1.7 / ADR-011)
- Изменение товара должно создавать новую version — НЕ реализовано (BUG-033)
- Фильтр версионного списка в каталоге — отсутствует (BUG-034)
Модификаторы
- Группы CRUD с
binding_type(structural / free) - Опции с ценой, привязанные к группе
- Min/max по группе и опциям — нет валидации (нет проверки max ≥ min) (BUG-044)
- Опция: нет maxlength=255, принимает «Пробел» как значение (BUG-045)
- Привязка модификаторов к товарам через таб «Модификаторы» (BR 1.8.1)
- Две секции: «Закреплённые» (structural) / «Свободные» (free)
- Изменения применяются мгновенно (BR 1.8)
- Поле «Описание» при создании модификатора — шрифт textarea (BUG-043)
Прейскуранты
- CRUD прейскурантов
- Привязка к ТТ (один прейскурант на ТТ через
stores.price_list_id) - Цены товаров и опций модификаторов в
price_list_items/price_list_modifier_items - Auto-populate активным каталогом при создании
- Только цены редактируются — Название/Активность/Назначено ТТ недоступны (BUG-050)
- Создание — нельзя вручную привязать к ТТ, всегда становится дефолтным (BUG-051)
- «Назначено ТТ» = 0 даже после привязки
Стоп-листы (per-store)
- Блокировка товаров и категорий per-ТТ
- Просмотр: Franchise — все ТТ; Franchisee — свои; Manager — своя ТТ
- Постановка/снятие стопа: Franchise — любая ТТ; Franchisee — свои ТТ; Manager — своя
- Manager → 403 на постановку/снятие стопа на своей ТТ (BUG-049)
- Cashier — 403 на изменения, read-only на просмотр
- Internal endpoint для проверки доступности (
GET /stop-lists/stores/{storeId}/check/{productId})
Техкарты блюд (per-product)
- Per-product (для блюд
type=dish) - Per-option модификатора (для размеров «Пицца 25/30/35»)
- Состав: ингредиенты с gross/net weight, потери (cold/hot loss)
- Опции закреплённого модификатора — техкарта синхронизирована между опциями (изменение одной меняет все) (BUG-047)
- Удаление текста «Технология приготовления» не сохраняется (текст возвращается) (BUG-048)
- Расчёт себестоимости с разворачиванием полуфабрикатов
Ингредиенты (справочник)
- Справочник franchise-level (CRUD)
- Уникальность по
nameper franchise - Поле «Описание» — шрифт textarea (BUG-046)
- См. также Зона 05 — Склад для приёмок и списаний
Меню в карточке ТТ (вычисляемое)
- Меню = все активные товары + прейскурант ТТ + стоп-листы (вычитаются)
- BR 1.16: эндпоинт
GET /internal/catalog/menuс фильтрацией поstore_id - Переход во вкладку «Меню» в карточке ТТ → 500 (BUG-060)
- В Меню отсутствует кнопка/возможность добавить товар (BUG-061)
- Вместо описания товара отображаются модификаторы, привязанные к товару (BUG-062)
Связано:
- Сервис: Catalog Service (port 3004)
- Specs: Каталог
- Common: 02 Form Validation — у каждой формы прогнать