BT-03: Таб “Техкарта” — закреплённые модификаторы

Что сделать

В верхней части таба “Техкарта” показать закреплённые модификаторы (binding_type = "structural") с управлением.

Смотри спеку

Секция “Таб Техкарта” → “Закреплённые модификаторы (BR 1.9.2)” в Каталог — Товары.

Конкретно

Список закреплённых модификаторов

  • Фильтр: modifiers.filter(m => m.binding_type === "structural")
  • Отображение: бейджи/строки с названием груп��ы, версией, override min/max
  • Только Franchise может управлять

Кнопка “Привязать закреплённый модификатор”

  • Модалка: выбор группы из справочника (GET /api/v1/admin/catalog/modifier-groups), выбор версии, override min/max
  • API: POST /api/v1/admin/catalog/products/{id}/versions/{v}/modifiers с binding_type: "structural"
  • Валидация: override_min_amount >= 1 (или группа с min >= 1)
  • Ошибка STRUCTURAL_MODIFIER_MIN_REQUIRED → toast “Закреплённый модификатор должен иметь min >= 1”

Кнопка “Убрать”

  • API: DELETE .../modifiers/{groupId}
  • Модалка подтверждения: “Убрать закреплённый модификатор [названи��]? Per-option техкарты будут потеряны.”

Per-option вкладки

  • Если есть закреплённые моды → создать вкладки по опциям (25см / 30см / 35см)
  • В каждой вкладке — техкарта для modifier_option_id э��ой опции
  • Если закреплённых нет → одна техкарта без вкладок (базовая, modifier_option_id = null)
  • Это уже частично реализовано (per-size tabs) — адаптировать к binding_type

Файлы

  • web/src/pages/catalog/ProductViewPage.tsx — таб Техкарта

Зависит от

  • BT-01 (shared типы)
  • BT-02 (фильтрация free в другом табе)