BR 1.9.2 — Закреплённые и свободные модификаторы
Проблема
Сейчас все модификаторы живут в одном справочнике и привязываются к товару одинаково. Но по факту есть два разных типа:
- Размер пиццы — неотъемлемая часть товара, определяет рецептуру (разное количество теста, соуса, сыра). Без выбора размера блюдо не существует.
- Доп. сыр — опциональная добавка, клиент может взять или нет. Фиксированная порция.
Эти два типа модификаторов ведут себя по-разному с точки зрения техкарт, списания и сборки меню. Текущая архитектура не разделяет их явно.
Два типа модификаторов
Закреплённый (структурный)
Определяет вариант товара. Влияет на рецептуру.
- Живёт внутри товара (вкладка “Техкарта”)
- Обязателен — клиент должен выбрать (min >= 1)
- У каждой опции своя техкарта товара (уже реализовано как per-size техкарты в BR 1.9)
- Примеры: размер пиццы, вид теста, объём напитка
Свободный (дополнительный)
Опциональная добавка. Не влияет на базовую рецептуру товара.
- Живёт в отдельном справочнике модификаторов (как сейчас)
- Опционален — клиент может добавить или нет
- У каждого своя фиксированная техкарта модификатора (BR 1.9.1)
- Порция фиксированная, не зависит от выбранного размера
- Примеры: доп. сыр, сироп, соус, сливки
Сборка меню (версия каталога)
При добавлении товара в версию каталога:
- Товар приносит с собой свои закреплённые модификаторы (они часть товара)
- Свободные модификаторы привязываются отдельно (как сейчас)
Результат: для любой комбинации заказа (Маргарита 30см + доп. сыр + доп. пепперони) система знает полный состав ингредиентов.
Что это даёт
- Списание со склада — точное, для любой комбинации заказа
- ГОСТ ТТК — композитная техкарта собирается: базовая (по выбранному варианту) + техкарты добавок
- КБЖУ — суммируется из всех техкарт выбранной комбинации
- Себестоимость — точная, складывается из техкарт
Пример: Пицца Маргарита
Товар: Маргарита
- Закреплённый мод “Размер”:
- 20см → техкарта: тесто 200г, соус 60г, сыр 100г
- 30см → техкарта: тесто 350г, соус 100г, сыр 180г
Свободные моды (привязаны к товару в каталоге):
- Доп. сыр → техкарта: моцарелла 50г
- Доп. пепперони → техкарта: пепперони 40г
Заказ: Маргарита 30см + доп. сыр
- Списание: тесто 350г + соус 100г + сыр 180г + моцарелла 50г
- КБЖУ: сумма всех компонентов
Ограничения MVP
- Порция свободного модификатора фиксированная — не зависит от выбранного закреплённого модификатора (размера)
- В будущем можно добавить контекстные техкарты (разная порция доп. сыра для разных размеров)
Затронутые сервисы
- Catalog Service — разделение типов модификаторов, сборка меню
- Warehouse Service — композитное списание
- Admin BFF + Web — UX конструктора товара (закреплённые во вкладке “Техкарта”, свободные во вкладке “Модификаторы”)