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 (колонка Техкарта)