BR 1.10 — Catalog Service

Миграции

  • PL-CS-01: Создать таблицу price_lists

    • Колонки: id, franchise_id, name, is_default, status, created_at, updated_at, deleted_at
    • UNIQUE (franchise_id, name) WHERE deleted_at IS NULL
  • PL-CS-02: Создать таблицу price_list_versionsУДАЛЕНО: версионирование прейскурантов убрано

  • PL-CS-03: Пересоздать таблицу price_list_items (без версий)

    • Колонки: id, price_list_id FK, product_id FK, price
    • UNIQUE (price_list_id, product_id)
  • PL-CS-04: Пересоздать таблицу price_list_modifier_items (без версий)

    • Колонки: id, price_list_id FK, modifier_option_id FK, price
    • UNIQUE (price_list_id, modifier_option_id)
  • PL-CS-05: Миграция данных — перенести base_price из products/modifier_options в дефолтный прейскурант

    • Создать дефолтный price_list для каждой franchise
    • Скопировать base_price каждого товара/опции напрямую в price_list_items/modifier_items (без версий)
  • PL-CS-06: Удалить base_price из products, product_versions, modifier_options

    • ALTER TABLE … DROP COLUMN base_price CASCADE

Entity / Repository

  • PL-CS-07: Entity PriceList + PriceListRepository

    • findByFranchiseIdAndNameNotDeleted, findByFranchiseIdAndIsDefaultTrue, findFiltered (пагинация)
  • PL-CS-08: Entity PriceListVersionУДАЛЕНО: версионирование убрано

  • PL-CS-09: Entity PriceListItem + PriceListItemRepository

    • findByPriceListId, batch save
  • PL-CS-10: Entity PriceListModifierItem + PriceListModifierItemRepository

    • findByPriceListId, batch save

Service

  • PL-CS-11: PriceListService — CRUD справочника

    • create: unique name, is_default logic (снять с предыдущего)
    • update: partial (name, is_default, status)
    • delete: проверки (не default, не назначен на ТТ)
    • list: пагинация, поиск по имени + store_count
  • PL-CS-12: PriceListItemService — управление ценами (без версий)

    • getPrices: загрузить items + modifier_items для прейскуранта
    • batchUpdateItems: batch update цен товаров (мгновенное применение)
    • batchUpdateModifierItems: batch update цен опций (мгновенное применение)

Controller

  • PL-CS-13: PriceListController — 5 справочник endpoints

    • GET /price-lists, GET /price-lists/{id}, POST, PATCH, DELETE
  • PL-CS-14: PriceListItemController — 3 endpoints цен (без версий)

    • GET /price-lists/{id}/items
    • PATCH /price-lists/{id}/items
    • PATCH /price-lists/{id}/modifier-items

Обновление существующего кода

  • PL-CS-15: CatalogVersionService.createDraft() каскадное создание draft price_list_versionsУДАЛЕНО: прейскуранты не привязаны к версиям каталога

  • PL-CS-16: CatalogVersionService.publish() каскадная публикация price_list_versionsУДАЛЕНО

  • PL-CS-17: CatalogVersionService.deleteDraft() каскадное удалениеУДАЛЕНО

  • PL-CS-18: ProductService — убрать base_price из createProduct/updateProduct/DTO

  • PL-CS-19: ModifierGroupService — убрать base_price из options в create/update/response

  • PL-CS-20: Убрать base_price из всех response DTOs: ProductResponse, ProductListItem, ProductVersionResponse, ModifierOptionResponse, CatalogCompositionProductResponse

Ссылки