BR 1.7.2 — Catalog Service
Перенос category_id из товара в catalog_version_products, versioned category endpoints, удаление standalone category API.
Контракты
- API — 4 новых versioned category endpoints, удалены 4 standalone
- Data Model — category_id перенос
Задачи
Миграции
- Добавить
category_id(uuid, nullable, FK → categories) вcatalog_version_products. Backfill изproducts.category_idдля существующих записей. - Убрать
category_idизproducts(DROP COLUMN — новая миграция) - Убрать
category_idизproduct_versions(DROP COLUMN — новая миграция)
Entity / DTO
-
Productentity — убратьcategoryId -
ProductVersionentity — убратьcategoryId -
CatalogVersionProductentity — добавитьcategoryId(nullable) -
ProductResponse,ProductListItem— убратьcategoryId,categoryName -
ProductVersionResponse— убратьcategoryId -
CreateProductRequest— убратьcategoryId -
UpdateProductRequest— убратьcategoryId -
AddProductToCatalogRequest— добавитьcategoryId(nullable) -
SwitchProductVersionRequest— добавитьcategoryId(nullable) -
CatalogCompositionProductResponse— добавитьcategoryName
Товары — изменения
-
ProductService.createProduct()— убрать валидацию категории -
ProductService.updateProduct()— убрать обработкуcategoryId -
ProductService.listProducts()— убрать фильтрcategoryId, убратьcategoryNameиз response -
ProductService.getProduct()— убратьcategoryName -
ProductService.getProductVersions()— убратьcategoryIdиз response -
ProductService.saveProductVersionSnapshot()— убратьcategoryId
Каталог — состав черновика
-
CatalogVersionService.addProductToDraft()— приниматьcategoryId, сохранять вcatalog_version_products -
CatalogVersionService.switchProductVersion()— приниматьcategoryIdдля перемещения между категориями - Version detail response — products include
categoryIdиcategoryNameиз junction table
Категории версий — новые эндпоинты
-
GET /catalog/versions/{id}/categories— дерево категорий конкретной версии -
POST /catalog/versions/{id}/categories— создать категорию в черновике -
PATCH /catalog/versions/{id}/categories/{categoryId}— обновить (cascade deactivation/activation) -
DELETE /catalog/versions/{id}/categories/{categoryId}— удалить (проверка children + products)
Удалить standalone
- Удалить
CategoryController(standalone endpoints) - Обновить
CategoryService— работать в контексте версии каталога - Удалить standalone
GET /categoriesизCatalogVersionService(если использовался)
createDraft — копирование
-
CatalogVersionService.createDraft()— при копировании published копироватьcategory_idизcatalog_version_products