BR 1.8.1 — Catalog Service
Миграция
-
PMOD-01: Создать таблицу
product_version_modifiers- Колонки: id, product_id, product_version, modifier_group_id, modifier_group_version, override_min_amount, override_max_amount, created_at
- UNIQUE (product_id, product_version, modifier_group_id)
- FK product_id → products(id) ON DELETE CASCADE
- FK modifier_group_id → modifier_groups(id) ON DELETE RESTRICT
- Index: idx_pvm_product_version (product_id, product_version)
-
PMOD-02: Миграция данных из
catalog_version_product_modifiers→product_version_modifiers- Для каждой привязки: взять product_id + product_version из catalog_version_products + modifier info
- Дедупликация: при конфликтах — приоритет у последнего published каталога
- Проверить корректность миграции
-
PMOD-03: Удалить таблицу
catalog_version_product_modifiers- Только после успешной миграции данных
- Каскадное удаление FK
Entity / Repository
-
PMOD-04: Создать entity
ProductVersionModifier- Поля из таблицы
- Связь @ManyToOne с Product, ModifierGroup
-
PMOD-05: Создать
ProductVersionModifierRepositoryfindByProductIdAndProductVersion(productId, version)— модификаторы версииfindByProductIdAndProductVersionAndModifierGroupId(...)— конкретная привязкаexistsByProductIdAndProductVersionAndModifierGroupId(...)— проверка дубликата
Service
- PMOD-06: Создать
ProductVersionModifierServicegetModifiers(productId, version)— список модификаторов версии с данными из ModifierGroupattachModifier(productId, version, dto)— привязать (проверить существование товара, версии, группы, дубликат)detachModifier(productId, version, groupId)— отвязатьupdateModifier(productId, version, groupId, dto)— обновить override/версию группы
Controller (новые эндпоинты)
-
PMOD-07:
GET /api/v1/products/{id}/versions/{version}/modifiers- Auth: Franchise — любая версия; Franchisee/Manager — из published
- Response: массив модификаторов с опциями
-
PMOD-08:
POST /api/v1/products/{id}/versions/{version}/modifiers- Auth: только Franchise
- Валидация: товар существует, версия существует, группа существует, версия группы существует, не дубликат
- Response 201
-
PMOD-09:
DELETE /api/v1/products/{id}/versions/{version}/modifiers/{groupId}- Auth: только Franchise
- Response 204
-
PMOD-10:
PATCH /api/v1/products/{id}/versions/{version}/modifiers/{groupId}- Auth: только Franchise
- Partial update: modifier_group_version, override_min_amount, override_max_amount
- Response 200
Обновление существующих эндпоинтов
-
PMOD-11: Обновить
GET /api/v1/products/{id}/versions- Response: добавить
modifiers[]в каждую версию (кол-во + краткая инфо)
- Response: добавить
-
PMOD-12: Удалить старые эндпоинты привязки модификаторов в каталоге
POST /catalog/versions/{id}/products/{pId}/modifiers— удалитьDELETE /catalog/versions/{id}/products/{pId}/modifiers/{gId}— удалитьPATCH /catalog/versions/{id}/products/{pId}/modifiers/{gId}— удалить- Удалить связанный service/repository код