CAT-01: Shared типы

Что сделать

Создать TypeScript типы для каталога (товары, категории, версии) в shared-пакете.

Смотри спеку

Структура данных в Каталог — Товары, Каталог — Категории, Каталог — Версии и API.

Конкретно

Типы товаров:

  • ProductType"dish" | "good"
  • ProductStatus"active" | "inactive"
  • UnitOfMeasure"piece" | "kg" | "g" | "l" | "ml" | "portion"
  • Product — полная сущность (id, name, description, type, base_price, unit_of_measure, category_id, category, status, version, created_at, updated_at, deleted_at)
  • ProductListItem — для таблицы (id, name, type, base_price, unit_of_measure, category: {id, name}, status, version)
  • CreateProductRequest — name, description?, type, base_price, unit_of_measure, category_id
  • UpdateProductRequest — Partial от CreateProductRequest
  • ProductListParams — page?, per_page?, search?, category_id?, type?, status?, deleted?, sort?

Типы категорий:

  • Category — id, name, parent_id, display_order, status, children: Category[], created_at, updated_at
  • CreateCategoryRequest — name, parent_id?, display_order?
  • UpdateCategoryRequest — name?, display_order?, status?

Типы версий:

  • CatalogVersionStatus"draft" | "published" | "archived"
  • CatalogVersion — id, version, status, published_at, products_count, created_at
  • PublishedCatalog — version, categories: Category[], products: ProductListItem[]

Экспорт из shared/src/index.ts.

После изменений: pnpm --filter @erp/shared build

Файлы

  • shared/src/types/catalog.ts — создать
  • shared/src/index.ts — добавить экспорт