3.4 KiB
3.4 KiB
Архитектура фронта arm-core/web
SPA поверх API arm-core (/api/v1). Своих данных и бизнес-вычислений нет: всё производное (чек-лист, сводная ОСВ,
статусы) считает сервер, фронт показывает и отправляет действия пользователя. До 21.10.2026 фронт вёлся в отдельном
репозитории RSHB/arm-web и переносился сюда синхронизацией; теперь — только здесь.
Модули
| Модуль | Ответственность | Зависит от |
|---|---|---|
src/api/ |
HTTP-клиент, токен, разбор ошибок | conf/, auth/token |
src/auth/ |
профиль /me, dev-вход, права для меню |
api/ |
src/services/api/ |
вызовы ресурсов arm-core | api/, types/ |
src/store/ |
состояние экранов (Redux Toolkit) | services/api/ |
src/utils/ |
чистые функции: деньги, подписи, скачивание | types/ |
src/types/ |
DTO API (повторяют ../api/src/schemas/) |
— |
src/components/ |
примитивы UI (таблица, теги, заголовок) | antd |
src/widgets/ |
блоки экранов (DocumentReview — проверка документа со сканом, ConsolidatedOsv — сводная ОСВ, FilesDrawer; консолидации — см. ниже) |
components/, store/, services/api/, utils/ |
src/layouts/ |
страницы-маршруты | widgets/ |
Виджеты экранов консолидаций
Требования — ../openspec/changes/consolidations-ui/ (после архивации — ../openspec/specs/consolidations-ui/),
consolidation-setup, consolidated-osv-ui.
| Виджет | Экран | Что делает |
|---|---|---|
ConsoleTable/ConsoleTable.tsx |
[34] | список консолидаций ГК: дерево версий, «Только в работе» (in_work_only), действия строки, меню «⋯» |
ConsoleTable/LockModal.tsx |
[35] | «Взять в работу» (POST …/lock) и перехват с причиной (takeover_reason) |
ConsoleTable/consts.ts |
— | подписи, цвета и пояснения статусов версии — одно место для списка, карточки и модалки |
ConsoleLegalEntities/ |
[34] | панель «Организации» выбранной версии и чек-лист |
NewConsoleModal/ (CompanyOptionRow.tsx) |
[42] | «Новая консолидация»; строка ЮЛ с ИНН отдельной колонкой |
StatusChangeModal/ChangeStatusModal.tsx |
[33-01] | «Изменить статус» (POST …/status); открывается из шапки layouts/ConsolidatedOsvPage.tsx |
Границы
- Сетевые запросы — только через
src/api/client.ts;fetchнапрямую не вызывается. components/не знают про store и API;types/ни от чего не зависят.utils/не импортирует React, store и API.
Сборка
npm run build → web/dist, Dockerfile ядра кладёт его в api/web/ и FastAPI отдаёт SPA (../README.md).