MTC-03: Модалка техкарты опции
Что сделать
Модалка с рецептурой опции модификатора — шапка, таблица ингредиентов, добавить/убрать, inline-edit, создание техкарты.
Смотри спеку
Секция “Модалка техкарты опции” в Каталог — Модификаторы.
Конкретно
Шапка модалки
- Название опции (“Доп. сыр”)
- Выход: output_weight + output_unit (inline-edit для Franchise)
- Статус: active/inactive (toggle для Franchise)
Таблица ингредиентов
Аналог таба Техкарта в товаре (ProductViewPage), но без per-size вкладок:
- Колонки: ингредиент, тип, брутто, нетто, % потерь, действия
- Inline-edit: брутто/нетто с авто-пересчётом % потерь
- “Убрать” → модалка подтверждения →
DELETE /modifier-tech-cards/{id}/items/{itemId}
Добавить ингредиент
”+ Добавить ингредиент” → sub-модалка:
- Поиск ингредиентов (type=ingredient) + полуфабрикатов (type=dish)
- Быстрое создание ингредиента
- Поля: брутто, нетто, единица, % потерь
- API:
POST /modifier-tech-cards/{id}/items - Ошибка CIRCULAR_REFERENCE → toast
Состояние “Техкарта не создана”
Если GET вернул пустой массив:
- “Техкарта не создана” + “Создать” (Franchise)
- API:
POST /modifier-tech-cards→ после создания показать пустую техкарту
Ошибка TECH_CARD_IS_PUBLISHED
Toast: “Версия группы используется в опубликованном каталоге”. Блокировка кнопок.
Ролевой доступ
- Franchise: CRUD
- Franchisee/Manager: read-only (таблица без кнопок)
Файлы
web/src/pages/catalog/ModifierViewPage.tsx— модалка (или отдельный компонент)
Зависит от
- MTC-02 (колонка Техкарта)