TC-01: Shared типы + BFF прокси + API client

Что сделать

Добавить shared-типы для техкарт, BFF proxy для Warehouse Service и API client в web.

Смотри спеку

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

Конкретно

Shared types (shared/)

  • TechCard: id, franchise_id, product_id, product_version, modifier_option_id, modifier_option_name, name, output_weight, output_unit, cooking_description, status, items[], created_at, updated_at
  • TechCardListItem: id, product_id, product_version, modifier_option_id, modifier_option_name, name, output_weight, output_unit, status, item_count, created_at
  • RecipeItem: id, ingredient_product_id, ingredient_name, ingredient_type, gross_weight, net_weight, cold_loss_percent, hot_loss_percent, unit_of_measure, sort_order
  • TechCardCost: tech_card_id, total_cost, items[{ingredient_product_id, ingredient_name, net_weight, unit_of_measure, average_cost_per_unit, item_cost, is_semi_finished}], warnings[]
  • CreateTechCardRequest, UpdateTechCardRequest, AddRecipeItemRequest, UpdateRecipeItemRequest
  • UnitConversion, CreateUnitConversionRequest
  • Обновить ProductType: добавить "ingredient"

BFF proxy (bff/)

Новый файл bff/src/routes/warehouse.ts:

  • GET /api/v1/admin/warehouse/tech-cards → Warehouse :3008
  • GET /api/v1/admin/warehouse/tech-cards/:id → Warehouse
  • POST /api/v1/admin/warehouse/tech-cards → Warehouse
  • PATCH /api/v1/admin/warehouse/tech-cards/:id → Warehouse
  • DELETE /api/v1/admin/warehouse/tech-cards/:id → Warehouse
  • POST /api/v1/admin/warehouse/tech-cards/:id/items → Warehouse
  • PATCH /api/v1/admin/warehouse/tech-cards/:id/items/:itemId → Warehouse
  • DELETE /api/v1/admin/warehouse/tech-cards/:id/items/:itemId → Warehouse
  • GET /api/v1/admin/warehouse/tech-cards/:id/cost → Warehouse
  • GET /api/v1/admin/warehouse/unit-conversions → Warehouse
  • POST /api/v1/admin/warehouse/unit-conversions → Warehouse
  • PATCH /api/v1/admin/warehouse/unit-conversions/:id → Warehouse

Зарегистрировать в bff/src/server.ts.

API client (web/)

Новый файл web/src/api/warehouse.ts:

  • getTechCards(productId, productVersion) — GET с query params
  • getTechCardById(id) — GET
  • createTechCard(data) — POST
  • updateTechCard(id, data) — PATCH
  • deleteTechCard(id) — DELETE
  • addRecipeItem(techCardId, data) — POST
  • updateRecipeItem(techCardId, itemId, data) — PATCH
  • deleteRecipeItem(techCardId, itemId) — DELETE
  • getTechCardCost(id) — GET
  • getUnitConversions(productId) — GET
  • createUnitConversion(data) — POST
  • updateUnitConversion(id, data) — PATCH

Файлы

  • shared/src/types/warehouse.ts — создать
  • shared/src/types/catalog.ts — обновить ProductType
  • shared/src/index.ts — добавить экспорт
  • bff/src/routes/warehouse.ts — создать
  • bff/src/server.ts — зарегистрировать
  • web/src/api/warehouse.ts — создать

Зависит от

— (первая задача)