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

Что сделать

Создать shared-типы для модификаторов, BFF proxy для 7 modifier-group endpoints + 3 attachment endpoints, API client на фронте.

Смотри спеку

Конкретно

Shared types (shared/src/types/modifiers.ts) — новый файл

  • ModifierGroupType"group" | "single"
  • ModifierOptionid, name, base_price, min_amount, max_amount, default_amount, display_order
  • ModifierGroupid, name, type (ModifierGroupType), min_amount, max_amount, status, options (ModifierOption[]), created_at, updated_at
  • ModifierGroupListItemid, name, type, option_count, status
  • CreateModifierGroupRequestname, type, min_amount, max_amount, options (без id/display_order)
  • UpdateModifierGroupRequestname, type, min_amount, max_amount, options (без id/display_order)
  • ModifierAttachmentmodifier_group_id, binding_type, modifier_group_name, min_override, max_override

Версионирование убрано

ModifierGroupVersion удалён. version убран из ModifierGroup и ModifierGroupListItem. Изменения мгновенные.

Export (shared/src/index.ts)

  • Добавить export * from './types/modifiers'
  • pnpm --filter @erp/shared build

BFF proxy (bff/src/routes/modifiers.ts) — новый файл

7 proxy endpoints для modifier groups:

  • GET /modifier-groups → Catalog Service
  • GET /modifier-groups/:id → Catalog Service
  • POST /modifier-groups → Catalog Service
  • PATCH /modifier-groups/:id → Catalog Service
  • DELETE /modifier-groups/:id → Catalog Service
  • POST /modifier-groups/:id/restore → Catalog Service
  • GET /modifier-groups/:id/versions → Catalog Service

Зарегистрировать в bff/src/server.ts с prefix /api/v1/admin/modifier-groups.

BFF proxy (bff/src/routes/catalog.ts) — дополнить

3 proxy endpoints для привязки модификаторов:

  • POST /catalog/versions/:id/products/:productId/modifiers → Catalog Service
  • DELETE /catalog/versions/:id/products/:productId/modifiers/:groupId → Catalog Service
  • PATCH /catalog/versions/:id/products/:productId/modifiers/:groupId → Catalog Service

API client (web/src/api/modifiers.ts) — новый файл

  • getModifierGroups(params) — список с фильтрами и пагинацией
  • getModifierGroup(id) — одна группа
  • createModifierGroup(data) — создание
  • updateModifierGroup(id, data) — обновление
  • deleteModifierGroup(id) — удаление
  • restoreModifierGroup(id) — восстановление
  • getModifierGroupVersions(id) — история версий

API client (web/src/api/catalog.ts) — дополнить

  • attachModifier(versionId, productId, data) — привязать модификатор
  • detachModifier(versionId, productId, groupId) — отвязать модификатор
  • updateModifierAttachment(versionId, productId, groupId, data) — обновить override

Файлы

  • shared/src/types/modifiers.ts
  • shared/src/index.ts
  • bff/src/routes/modifiers.ts
  • bff/src/server.ts
  • bff/src/routes/catalog.ts
  • web/src/api/modifiers.ts
  • web/src/api/catalog.ts

Зависит от

Нет зависимостей.