BR 1.5 → Store Service

Репозиторий: erp-store-service Контракты: API, Data Model

Задачи

Инфраструктура

  • Liquibase миграция: добавить колонки в stores (address, latitude, longitude, city, phone, email, deleted_at)
  • Liquibase миграция: создать таблицу store_schedules
  • Liquibase миграция: индексы
  • Liquibase миграция: UNIQUE (legal_entity_id, name) WHERE deleted_at IS NULL (ADR-006)
  • Entity Store — обновить, добавить новые поля
  • Entity StoreSchedule — создать
  • Repository StoreScheduleRepository

JWT-фильтр

  • Локальный JWT-фильтр (HS256 + shared secret) — ADR-001
  • Извлечение claims из JWT

Бизнес-логика

  • Маппинг виртуальных статусов (draft/published/suspended → status + is_published)
  • Ролевой доступ: Franchise — все ТТ, Franchisee — свои ЮЛ, Manager — своя ТТ, Cashier — 403
  • legal_entity_id immutable
  • Publish/unpublish logic
  • Soft delete (только неопубликованные)
  • NAME_DUPLICATE проверка (ADR-006)

Эндпоинты

  • GET /api/v1/stores — список
  • GET /api/v1/stores/{id} — детали + расписание
  • POST /api/v1/stores — создание
  • PATCH /api/v1/stores/{id} — обновление
  • DELETE /api/v1/stores/{id} — soft delete
  • POST /api/v1/stores/{id}/publish — публикация
  • POST /api/v1/stores/{id}/unpublish — снятие

Schedule CRUD

  • Сохранение расписания при создании
  • Replace расписания при обновлении
  • Возврат schedule в GET /stores/{id}

Docker

  • docker-compose.yml обновлён