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 Service GET /api/v1/legal-entities
  • GET /api/v1/admin/legal-entities/{id} → User Service GET /api/v1/legal-entities/{id}
  • POST /api/v1/admin/legal-entities → User Service POST /api/v1/legal-entities
  • PATCH /api/v1/admin/legal-entities/{id} → User Service PATCH /api/v1/legal-entities/{id}
  • DELETE /api/v1/admin/legal-entities/{id} → User Service DELETE /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 Service GET /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: подтверждение + импорт