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_idimmutable - 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 обновлён