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_modifiersproduct_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: Создать ProductVersionModifierRepository

    • findByProductIdAndProductVersion(productId, version) — модификаторы версии
    • findByProductIdAndProductVersionAndModifierGroupId(...) — конкретная привязка
    • existsByProductIdAndProductVersionAndModifierGroupId(...) — проверка дубликата

Service

  • PMOD-06: Создать ProductVersionModifierService
    • getModifiers(productId, version) — список модификаторов версии с данными из ModifierGroup
    • attachModifier(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[] в каждую версию (кол-во + краткая инфо)
  • 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 код

Ссылки