BR 1.9.1: Техкарты модификаторов

Зависит от:

Контекст

В BR 1.9 техкарта добавки-модификатора привязана к товару через modifier_option_id в таблице tech_cards. Это создаёт проблему: если “Доп. сыр” привязан к 20 товарам — нужно 20 одинаковых техкарт (50г моцареллы в каждой).

Решение: техкарта живёт на уровне опции модификатора в справочнике. При привязке модификатора к товару — техкарта подцепляется автоматически.


Как работает

Было (BR 1.9)

Техкарта добавки привязана к товару:

tech_cards:
  product: Маргарита, version: v2, modifier_option: Доп.сыр → [Моцарелла 50г]
  product: Пепперони, version: v1, modifier_option: Доп.сыр → [Моцарелла 50г]  ← дубль

Будет (BR 1.9.1)

Техкарта добавки привязана к модификатору (один раз):

modifier_tech_cards:
  modifier_option: Доп.сыр, group_version: v1 → [Моцарелла 50г]

При привязке "Добавки@v1" к любому товару →
  техкарта "Доп. сыр" автоматически применяется

Per-size техкарты — без изменений

Size-модификаторы (25/30/35 см) по-прежнему создают техкарты через tech_cards.modifier_option_id — потому что рецептура зависит от товара (пицца 30 см ≠ бургер 30 см). Это НЕ дублирование.

Разделение:

  • Size-модификатор (min=1, max=1) → техкарта на уровне товара (tech_cards.modifier_option_id)
  • Добавка (min=0, max=N) → техкарта на уровне модификатора (modifier_tech_cards)

Данные

Новая таблица: modifier_tech_cards (Warehouse Service)

ПолеОписание
idPK
franchise_idID франшизы
modifier_option_idUUID опции (→ Catalog Service modifier_options.id)
modifier_group_versionВерсия группы модификаторов
output_weightВыход (вес/объём)
output_unitЕдиница
cooking_descriptionТехнология приготовления
statusactive / inactive

UNIQUE: (modifier_option_id, modifier_group_version)

Новая таблица: modifier_tech_card_items

Аналогично recipe_items — строки рецепта с ингредиентами, брутто, нетто, % потерь.


Фронт

Где редактировать

В справочнике модификаторов — карточка группы → таблица опций → колонка “Техкарта”:

  • Если есть техкарта → бейдж “Есть” (кликабельный)
  • Если нет → кнопка “Создать”
  • Клик → модалка или inline-раскрытие с таблицей ингредиентов (аналогично табу Техкарта в товаре, но без per-size)

В конструкторе товара

На MVP — без изменений. При просмотре модификаторов товара можно видеть “Доп. сыр — техкарта: есть” (read-only). Кнопка перехода к редактированию техкарты модификатора — Phase 2.


Заморозка published

Модификатор версионный (modifier_group_version). Техкарта привязана к modifier_option_id + modifier_group_version.

Если в published каталоге товар использует Добавки@v1 → техкарта для v1 заморожена. Редактировать можно только техкарту для v2 (новой версии группы).

API должен проверять published перед мутацией (аналог BUG-026).


При продаже (авто-списание)

Заказ: Маргарита 30 см + 2x Доп. сыр

1. tech_cards (product=Маргарита, version=v2, modifier_option=30см)
   → Тесто 300г, Соус 120г, Моцарелла 180г

2. modifier_tech_cards (modifier_option=Доп.сыр, group_version=v1)
   → Моцарелла 50г × 2 = 100г

Итого: Тесто 300г, Соус 120г, Моцарелла 280г

Ролевой доступ

РольЧто может
ФраншизаCRUD техкарт модификаторов (в справочнике)
ФранчайзиПросмотр
МенеджерПросмотр
КассирНет доступа

Что входит

  1. Новые таблицы modifier_tech_cards + modifier_tech_card_items в Warehouse Service
  2. API: CRUD техкарт модификаторов (аналог tech-cards, но по modifier_option_id)
  3. Фронт: в справочнике модификаторов — редактирование техкарт опций
  4. Защита published

Что НЕ входит

  • Кнопка перехода из конструктора товара к техкарте модификатора — Phase 2
  • Переопределение техкарты модификатора per-товар — Phase 2
  • Себестоимость с учётом модификаторов (суммирование техкарт товара + модификаторов) — Phase 2

Ссылки