Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
27 lines
1.9 KiB
Markdown
27 lines
1.9 KiB
Markdown
# Архитектура arm-web
|
||
|
||
SPA поверх API arm-core (`/api/v1`). Своих данных и бизнес-вычислений нет: всё производное (чек-лист, сводная ОСВ,
|
||
статусы) считает сервер, фронт показывает и отправляет действия пользователя.
|
||
|
||
## Модули
|
||
|
||
| Модуль | Ответственность | Зависит от |
|
||
|---|---|---|
|
||
| `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 (повторяют `arm-core/api/src/schemas/`) | — |
|
||
| `src/components/` | примитивы UI (таблица, теги, заголовок) | antd |
|
||
| `src/widgets/` | блоки экранов (`DocumentReview` — проверка документа со сканом, `ConsolidatedOsv` — сводная ОСВ, `FilesDrawer`) | `components/`, `store/`, `services/api/`, `utils/` |
|
||
| `src/layouts/` | страницы-маршруты | `widgets/` |
|
||
|
||
## Границы
|
||
- Сетевые запросы — только через `src/api/client.ts`; `fetch` напрямую не вызывается.
|
||
- `components/` не знают про store и API; `types/` ни от чего не зависят.
|
||
- `utils/` не импортирует React, store и API.
|
||
|
||
## Открытые вопросы
|
||
- Судьба `arm-core/web` (дубль основы этого репозитория) — решает владелец.
|