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

  • Product entity — убрать categoryId
  • ProductVersion entity — убрать categoryId
  • CatalogVersionProduct entity — добавить 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