BR 1.1 → Admin Franchise (BFF + Web)
Репозиторий: erp-admin (монорепо: bff/ + web/ + shared/)
Ветка: feat/br-1.1-legal-entities-frontend (PR #1)
Фронт-спеки: Список, Карточка, Импорт
BFF (bff/)
shared/ — типы
- Типы:
LegalEntity,LegalEntityListItem,LegalEntityCreateRequest,LegalEntityUpdateRequest - Типы:
ImportPreviewResponse,ImportApplyResponse - Типы:
ApiError,PaginatedResponse
Прокси-эндпоинты
-
GET /api/v1/admin/legal-entities→ User ServiceGET /api/v1/legal-entities -
GET /api/v1/admin/legal-entities/{id}→ User ServiceGET /api/v1/legal-entities/{id} -
POST /api/v1/admin/legal-entities→ User ServicePOST /api/v1/legal-entities -
PATCH /api/v1/admin/legal-entities/{id}→ User ServicePATCH /api/v1/legal-entities/{id} -
DELETE /api/v1/admin/legal-entities/{id}→ User ServiceDELETE /api/v1/legal-entities/{id} -
POST /api/v1/admin/legal-entities/{id}/set-primary→ User Service -
POST /api/v1/admin/legal-entities/{id}/suspend→ User Service -
POST /api/v1/admin/legal-entities/{id}/resume→ User Service -
POST /api/v1/admin/legal-entities/import/preview→ User Service (multipart proxy) -
POST /api/v1/admin/legal-entities/import/{preview_id}/apply→ User Service -
GET /api/v1/admin/legal-entities/import/template→ User Service (file proxy)
Агрегация
-
GET /api/v1/admin/legal-entities/{id}/stores→ Store ServiceGET /internal/stores?legal_entity_id={id}(для модалки приостановки и ссылки в карточке)
Web (web/)
Список ЮЛ
- Страница
/legal-entities— таблица с колонками из спеки - Фильтры (статус, тип) + поиск (debounce 300ms)
- Сортировка по наименованию
- Пагинация (20 на страницу)
- Главное ЮЛ — бейдж + закреплено вверху
- Приостановленное — серый + красная метка
- Меню действий строки (редактировать, удалить, назначить главным, приостановить/возобновить)
- Модалка: удаление (2 сценария — с ТТ и без)
- Модалка: назначение главного
- Модалка: приостановка (со списком ТТ)
- Модалка: возобновление
- Пустое состояние (Franchise / Franchisee)
- Роль Franchisee: скрыть кнопки создания/удаления/приостановки
Карточка ЮЛ
- Страница просмотра
/legal-entities/{id}— все поля, store_count - Форма создания
/legal-entities/new— выбор типа, валидация масок - Форма редактирования
/legal-entities/{id}/edit— ИНН disabled - Franchisee: ограниченный набор полей
- Вкладки-заглушки (Сотрудники, Документы)
- Предупреждение при несохранённых изменениях
Импорт
- Страница
/legal-entities/import— 4-шаговый flow - Шаг 1: drag & drop + скачивание шаблона
- Шаг 2: валидация (прогресс-бар)
- Шаг 3: результат (сводка + таблица ошибок + скачать ошибки)
- Шаг 4: подтверждение + импорт