TC-02: Таб “Техкарта” — основа и шапка

Что сделать

Добавить таб “Техкарта” в карточку товара (ProductViewPage) между “Модификаторы” и “Версии”. Только для type=dish.

Смотри спеку

Секция “Таб Техкарта” в Каталог — Товары.

Конкретно

Табы карточки

[Информация] [Модификаторы] [Техкарта] [Версии]

  • “Техкарта” виден только если product.type === 'dish'
  • Для good и ingredient — скрыт

Загрузка

  • API: GET /api/v1/admin/warehouse/tech-cards?product_id={id}&product_version={selectedVersion}
  • Загружается при переключении на таб или при смене версии (переключатель BR 1.8.2)

Состояние “Техкарта не создана”

Если GET вернул пустой массив:

  • “Техкарта не создана” + кнопка “Создать техкарту” (Franchise only)
  • API: POST /api/v1/admin/warehouse/tech-cards с product_id, product_version, name (= product.name)
  • После создания — показать пустую техкарту

Шапка

ЭлементДанные
Выходoutput_weight + output_unit (inline-edit для Franchise)
Себестоимостьиз /cost — “187,50 ₽” или ”—“
СтатусБейдж active/inactive (toggle для Franchise)

Read-only для старых версий

Если selectedVersion !== product.version — все кнопки скрыты, только просмотр.

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

  • Franchise: CRUD
  • Franchisee/Manager: read-only
  • Cashier: таб не виден

Файлы

  • web/src/pages/catalog/ProductViewPage.tsx — добавить таб + state + загрузку

Зависит от

  • TC-01 (shared типы + API client)