BR 1.1 → User Service
Репозиторий: erp-user-service
Контракты: API, Data Model
Задачи
Инфраструктура
- Liquibase миграция: таблица
legal_entities(все поля, индексы из Data Model) - Liquibase миграция: таблица
import_previews(preview импорта) - Entity
LegalEntity+ImportPreview(JPA) - Repository
LegalEntityRepository+ImportPreviewRepository
Бизнес-логика
- Валидация ИНН — проверка контрольной суммы (10 и 12 цифр, алгоритм ФНС)
- Валидация масок (КПП 9 цифр, ОГРН 13/15, БИК 9, счета 20, телефон +7)
- Логика
is_primary— при назначении нового главного снимать старое - Soft delete —
deleted_at, partial unique index на ИНН - Ролевой доступ: Franchise видит все, Franchisee только свои (по
owner_user_id) - Franchisee ограничение: только
legal_address, банк. реквизиты, контакты
HTTP-клиент к Store Service
- Клиент:
POST /internal/stores/count-by-legal-entities— batch-получение кол-ва ТТ - Клиент:
GET /internal/stores?legal_entity_id={id}— список ТТ для проверки удаления - Клиент:
POST /internal/stores/unpublish-by-legal-entity— снятие ТТ с публикации
Эндпоинты
-
GET /api/v1/legal-entities— список (пагинация, search, фильтры status/type, сортировка) -
GET /api/v1/legal-entities/{id}— детали (включая store_count) -
POST /api/v1/legal-entities— создание (валидация ИНН, дубликат) -
PATCH /api/v1/legal-entities/{id}— обновление (ИНН immutable, ролевые ограничения) -
DELETE /api/v1/legal-entities/{id}— soft delete (проверка ТТ через Store Service) -
POST /api/v1/legal-entities/{id}/set-primary— назначить главным -
POST /api/v1/legal-entities/{id}/suspend— приостановить (синхронный вызов Store Service) -
POST /api/v1/legal-entities/{id}/resume— возобновить -
POST /api/v1/legal-entities/import/preview— загрузка xlsx, валидация, сохранение в import_previews -
POST /api/v1/legal-entities/import/{preview_id}/apply— применить импорт -
GET /api/v1/legal-entities/import/template— скачать xlsx-шаблон -
GET /internal/legal-entities/{id}— internal для других сервисов
Тестирование и запуск
- Seed: тестовые ЮЛ (1 franchise primary, 2-3 franchisee с разными статусами)
- Docker: обновить docker-compose.yml
JWT валидируется локально (HS256 + shared secret). Auth Service отложен.