BR 1.9 — Admin Franchise

BFF (bff/)

  • TC-F01: Proxy эндпоинтов Warehouse Service (техкарты)

    • GET /api/v1/warehouse/tech-cards → Warehouse Service
    • GET /api/v1/warehouse/tech-cards/:id → Warehouse Service
    • POST /api/v1/warehouse/tech-cards → Warehouse Service
    • PATCH /api/v1/warehouse/tech-cards/:id → Warehouse Service
    • DELETE /api/v1/warehouse/tech-cards/:id → Warehouse Service
  • TC-F02: Proxy эндпоинтов строк рецепта

    • POST /api/v1/warehouse/tech-cards/:id/items → Warehouse Service
    • PATCH /api/v1/warehouse/tech-cards/:id/items/:itemId → Warehouse Service
    • DELETE /api/v1/warehouse/tech-cards/:id/items/:itemId → Warehouse Service
  • TC-F03: Proxy эндпоинта себестоимости

    • GET /api/v1/warehouse/tech-cards/:id/cost → Warehouse Service
  • TC-F04: Proxy эндпоинтов конвертации единиц

    • GET /api/v1/warehouse/unit-conversions → Warehouse Service
    • POST /api/v1/warehouse/unit-conversions → Warehouse Service
    • PATCH /api/v1/warehouse/unit-conversions/:id → Warehouse Service

Shared types (shared/)

  • TC-F05: Добавить типы для техкарт
    • TechCard, TechCardListItem, RecipeItem, TechCardCost
    • CreateTechCardRequest, UpdateTechCardRequest
    • AddRecipeItemRequest, UpdateRecipeItemRequest
    • UnitConversion, CreateUnitConversionRequest
    • Обновить ProductType — добавить ingredient

Web — Таб “Техкарта” (web/)

  • TC-F06: API client для Warehouse Service

    • getTechCards(productId, productVersion)
    • getTechCardById(id)
    • createTechCard(data)
    • updateTechCard(id, data)
    • deleteTechCard(id)
    • addRecipeItem(techCardId, data)
    • updateRecipeItem(techCardId, itemId, data)
    • deleteRecipeItem(techCardId, itemId)
    • getTechCardCost(id)
    • Unit conversion CRUD
  • TC-F07: Таб “Техкарта” в ProductViewPage

    • Виден только для type=dish
    • Загрузка техкарт для выбранной версии товара
    • Состояние “Техкарта не создана” + кнопка “Создать”
    • Шапка: выход, себестоимость, статус
    • Подчинён переключателю версий (BR 1.8.2) — read-only для старых
  • TC-F08: Per-size вкладки внутри таба

    • Если у версии есть size-модификаторы → вкладки per-size
    • Каждая вкладка = отдельная техкарта с modifier_option_id
    • Если нет size-модификаторов → одна базовая техкарта
  • TC-F09: Таблица ингредиентов

    • Колонки: ингредиент, тип (бейдж), брутто, нетто, % потерь, стоимость, действия
    • Полуфабрикат (type=dish) — кликабельная ссылка на его карточку
    • Inline-редактирование: брутто/нетто/% потерь с авто-пересчётом
  • TC-F10: Модалка “Добавить ингредиент”

    • Поиск по ингредиентам + полуфабрикатам (GET /products?type=ingredient + ?type=dish)
    • Кнопка “Создать ингредиент” → быстрая форма (название, ед. изм.) → POST /products type=ingredient
    • Заполнение: брутто, нетто, единица, % потерь
    • API: POST /tech-cards/{id}/items
    • Ошибка CIRCULAR_REFERENCE → toast
  • TC-F11: Удаление ингредиента

    • Модалка подтверждения
    • API: DELETE /tech-cards/{id}/items/{itemId}
  • TC-F12: Технология приготовления

    • Textarea под таблицей
    • Auto-save при blur → PATCH /tech-cards/{id} с cooking_description
  • TC-F13: Себестоимость

    • Загрузка GET /tech-cards/{id}/cost
    • Показ total_cost в шапке
    • Показ item_cost в колонке таблицы
    • Warnings (нет цены) → иконка предупреждения

Ссылки