BUG-025: Декомпозиция

Перед реализацией — выбрать модель склада

В Баг.md описаны три варианта (A — автосоздание 1:1, B — полноценный раздел «Склады» по YumaPOS, C — только UI-кнопка на карточке ТТ). Декомпозиция ниже написана под вариант A как минимальный фикс. Если выбираем B — эта декомпозиция меняется на отдельный BR.

Код

Store Service

  • Публиковать Kafka-событие store.created при создании ТТ (payload: store_id, franchise_id, name, created_at)
  • Если Kafka ещё не подключена к Store Service для прочих событий — альтернатива: синхронный HTTP-вызов POST /api/v1/internal/warehouses/from-store в Warehouse Service в той же транзакции. Согласовать с архитектурой (обычно Kafka предпочтительнее)

Warehouse Service

  • Добавить @KafkaListener на топик store.created → создаёт warehouses с name = "Склад " + store.name, status = active. Идемпотентно — по unique (franchise_id, store_id)
  • Либо (альтернатива): добавить internal endpoint POST /api/v1/internal/warehouses/from-store с проверкой X-Service-Token, вызываемый Store Service’ом
  • Backfill-скрипт (одноразовая миграция): для всех существующих ТТ, где нет склада в warehouses — создать склад с дефолтным именем. Выполнить при деплое

Admin Franchise (web)

  • На карточке ТТ (/stores/:id) — блок «Склад» с именем и кнопкой «Переименовать» (опционально)
  • Обработка ошибки «Склад не найден» при создании приёмки/списания: вместо голого сообщения — подсказка «Склад для ТТ не создан, обратитесь к администратору» (страховка на случай если бэкфилл что-то упустил)

Спеки

  • 08-Specs/Админка Франшизы/Торговые точки.md — добавить правило: «При создании ТТ автоматически создаётся склад с именем “Склад {store_name}”»
  • 08-Specs/Админка Франшизы/Склад.md (новая, если нет) — описать модель: 1 ТТ = 1 склад, создаётся автоматически
  • 03-Services/Warehouse Service/Events.md — добавить потребление store.created
  • 03-Services/Store Service/Events.md — добавить публикацию store.created (payload)
  • 04-API Contracts/Event Schema Registry.md — зарегистрировать схему store.created
  • Пометить обновления в спеках *(Исправлено в [[07-Tasks/Bugs/BUG-025 Склад не создаётся автоматически при создании ТТ/Баг|BUG-025]])*