BR 1.7.1 — Catalog Service
Изменения в Catalog Service для независимого версионирования товаров и ручного управления черновиком каталога.
Контракты
- API — 6 новых endpoints, 6 изменённых
- Data Model — таблица
product_versions
Задачи
Миграция
- Новая миграция: таблица
product_versions(id, product_id, version, name, description, type, base_price, unit_of_measure, category_id, status, created_at). UNIQUE(product_id, version). FK product_id → products(id) ON DELETE CASCADE. - Seed: для существующих товаров создать запись v1 в product_versions (backfill)
Товары — изменения в существующих эндпоинтах
-
POST /products— при создании записывать v1 вproduct_versions. Убрать автоматическое создание draft каталога и добавление товара в draft. -
PATCH /products/{id}— при обновлении записывать новую версию вproduct_versions. Убрать автоматическое обновление ссылки в draft каталоге. -
GET /products— Franchise: возвращать все товары франшизы (последняя версия), не привязанные к каталогу. Franchisee/Manager: без изменений (published). -
GET /products/{id}— Franchise: любой товар. Franchisee/Manager: только из published.
Товары — новый эндпоинт
-
GET /products/{id}/versions— история версий товара изproduct_versions+ join сcatalog_version_productsдля привязки к каталогам. Сортировка: version DESC.
Каталог — новые эндпоинты
-
POST /catalog/versions— создать черновик (копия published: все catalog_version_products и catalog_version_categories). Ошибки: DRAFT_ALREADY_EXISTS, NO_PUBLISHED_VERSION. -
DELETE /catalog/versions/{id}— удалить черновик. Ошибки: CATALOG_VERSION_NOT_FOUND, CANNOT_DELETE_NON_DRAFT.
Состав черновика — новые эндпоинты
-
POST /catalog/versions/{id}/products— добавить товар в черновик (product_id + product_version). Ошибки: CATALOG_VERSION_NOT_DRAFT, PRODUCT_NOT_FOUND, PRODUCT_VERSION_NOT_FOUND, PRODUCT_ALREADY_IN_CATALOG. -
DELETE /catalog/versions/{id}/products/{productId}— убрать товар из черновика. Ошибки: CATALOG_VERSION_NOT_DRAFT, PRODUCT_NOT_IN_CATALOG. -
PATCH /catalog/versions/{id}/products/{productId}— переключить версию товара. Ошибки: CATALOG_VERSION_NOT_DRAFT, PRODUCT_NOT_IN_CATALOG, PRODUCT_VERSION_NOT_FOUND.
Категории — изменения
-
POST /categories— убрать auto-draft. Требовать наличия draft → иначеNO_DRAFT_VERSION(422). -
PATCH /categories/{id}— убрать auto-draft. Требовать draft. -
DELETE /categories/{id}— требовать draft.