BR 1.5 → Admin Franchise (BFF + Web)
Репозиторий: erp-admin (монорепо: bff/ + web/ + shared/)
Фронт-спеки: planned — экраны будут созданы отдельно
BFF (bff/)
shared/ — типы
- Типы:
Store,StoreListItem,StoreCreateRequest,StoreUpdateRequest - Типы:
StoreScheduleEntry,StoreStatus,StoreListParams,StoreOption - Экспорт из
shared/src/index.ts
Прокси-эндпоинты
-
GET /api/v1/admin/stores→ Store ServiceGET /api/v1/stores -
GET /api/v1/admin/stores/{id}→ Store ServiceGET /api/v1/stores/{id} -
POST /api/v1/admin/stores→ Store ServicePOST /api/v1/stores -
PATCH /api/v1/admin/stores/{id}→ Store ServicePATCH /api/v1/stores/{id} -
DELETE /api/v1/admin/stores/{id}→ Store ServiceDELETE /api/v1/stores/{id} -
POST /api/v1/admin/stores/{id}/publish→ Store Service -
POST /api/v1/admin/stores/{id}/unpublish→ Store Service
Web (web/)
Список торговых точек
- Страница
/stores— таблица с колонками (Название, Адрес, ЮЛ, Статус, Город, Действия) - Фильтры (статус: draft/published/suspended, ЮЛ) + поиск (debounce 300ms)
- Пагинация (20 на страницу)
- Цветовые индикаторы статуса (draft — серый, published — зелёный, suspended — красный)
- Меню действий строки (редактировать, опубликовать/снять, удалить)
- Публикация/снятие без модалки (toast)
- Модалка: удаление (с проверкой is_published)
- Пустое состояние (“Торговые точки пока не добавлены”)
- Ролевой доступ: Franchise — полный, остальные — ограниченный
Карточка торговой точки
- Страница просмотра
/stores/{id}— все поля, расписание, ЮЛ (ссылка) - Форма создания
/stores/new— обязательные поля, выбор ЮЛ, координаты вручную - Форма редактирования
/stores/{id}/edit— ЮЛ disabled, предзаполнение - Редактор расписания — 7 дней, toggle выходной, time picker, “одинаковый для всех”
- Обработка ошибок:
NAME_DUPLICATE,LEGAL_ENTITY_NOT_FOUND,LEGAL_ENTITY_IMMUTABLE,STORE_IS_PUBLISHED - Предупреждение при несохранённых изменениях