Перенесён диапазон arm-web 100fbfb..025233f (2 коммитов, 19 файлов набора синхронизации) скриптом docs/scripts/sync-web.sh. После переноса web/ и arm-web@test идентичны по набору. Коммиты arm-web: - f868a92 Скан PDF с JBIG2 не рисовался: передать pdf.js wasmUrl и копировать wasm в сборку (#32) - a8a6da0 Форматирование перед PR: ESLint + Prettier и npm run format (#29) Co-Authored-By: sync-web.sh <noreply@aepif.ru> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
66 lines
6.7 KiB
Markdown
66 lines
6.7 KiB
Markdown
# arm-web — фронт АРМ КА (демо-прототип)
|
||
|
||
SPA кредитного аналитика поверх API `arm-core` (`/api/v1`). Контекст системы — `../CLAUDE.md`, архитектура —
|
||
`ARCHITECTURE.md`, соглашения репозитория — `CLAUDE.md`.
|
||
|
||
## Запуск
|
||
|
||
1. `make install`.
|
||
2. Стенд arm-core — по `../docs/dev/qa-guide.md` §4 (ядро на `localhost:8000`, `DEBUG=true`, `make seed-dev`); для
|
||
распознавания PDF — профиль `services` (§6.8: tabular-parser, scan-gateway, scan-emulator).
|
||
3. `make start` — dev-сервер rsbuild (сам ставит `REACT_APP_ROOT_PATH=/`; без этого приложение ждёт префикс
|
||
`/aurora/apps/fastapi-dkb-armka` и показывает белый экран, см. `qa-guide` §4.3). Запросы `/api` проксируются на
|
||
`ARM_CORE_URL` (по умолчанию `http://localhost:8000`), `REACT_APP_API_URL` в dev не нужен.
|
||
4. Вход — через dev-форму (`POST /dev/token`), например `ka_go@armka.local`.
|
||
|
||
## Форматирование и линтеры
|
||
|
||
**Перед PR — `npm run format`** (или `make format`): `eslint --fix` → `biome check --write` (импорты, безопасные
|
||
исправления) → `prettier --write`. Команда приводит `src/` к единому виду; повторный запуск ничего не меняет.
|
||
|
||
- Prettier (`.prettierrc.json`) — единственный форматтер: табы, ширина 140, одинарные кавычки (в CSS — двойные),
|
||
`>` тега JSX на той же строке. Форматтер biome выключен, чтобы два инструмента не спорили о пробелах.
|
||
- ESLint (`eslint.config.js`) — правила, повторяющие `biome.json`; biome остаётся линтером в `make lint`/`make check`.
|
||
- `npm run lint` — `eslint` + `prettier --check` без исправлений: ошибки валят команду, предупреждения (`any`,
|
||
`console`, зависимости хуков) — нет.
|
||
- В редакторе: расширения Prettier и ESLint, «Format on Save» с Prettier — результат совпадёт с `npm run format`.
|
||
|
||
## Проверка
|
||
|
||
`make check` — install, biome + ESLint + Prettier (`make lint`), `tsc --noEmit`, vitest, `rsbuild build`. Зелёным
|
||
считается всё вместе.
|
||
|
||
## Демо-сценарий
|
||
|
||
Пользователь с правами на ГК «Русский бисквит» (`ka_go@armka.local`).
|
||
|
||
Данные стенда уже подготовлены: консолидация РБ ГСК 2024 Q3 создана (версия `0437f8be-019c-4dbb-9776-08c306aa38cc`,
|
||
ОСВ загружены и подтверждены), `aep_6.pdf` уже загружен Счастливочной. Повторы дают штатные ошибки (409
|
||
`CONSOLIDATION_EXISTS`, `DUPLICATE_FILE`) — их можно показать как обработку ошибок.
|
||
|
||
1. Кнопка «Новая консолидация» — в боковом меню (действует на всё приложение, не на выбранную группу); в модалке выбирается
|
||
ГК «Русский бисквит», ГСК, период — **другой**, например 2024 Q2 или 2025 Q3 (для 2024 Q3 вернётся 409
|
||
`CONSOLIDATION_EXISTS`) → члены ГСК отмечены → «Создать» → открывается страница группы с новой версией.
|
||
2. Дальше работаем на подготовленной версии 2024 Q3 (`/groups/<id>?version=0437f8be-019c-4dbb-9776-08c306aa38cc`):
|
||
панель «Организации» → ЮЛ → «Файлы» → документы ОСВ в статусе «Загружен». Загрузка ОСВ вручную —
|
||
`../fixtures/osv/{rb,schastl}/2024-Q{1,2,3}/*`; для новой версии быстро — `scripts/demo-prepare.sh <version_id> [email]`
|
||
(каталог фикстур — `FIXTURES_DIR`, по умолчанию `../../fixtures` относительно репозитория; в конце печатает сводку).
|
||
3. ББ/ОФР: открыть уже загруженный ББ Счастливочной (или загрузить `../fixtures/ocr/aep_6.pdf` РБ) → скан слева, форма справа,
|
||
исправить ячейку. ИНН и дата отчёта в aep_6 не распознаются: в шапке ввести дату строго `2024-09-30` (ГГГГ-ММ-ДД) и
|
||
нажать «Сохранить», иначе «Подтвердить данные» даст 409 `PERIOD_REQUIRED`. Принять нарушения с комментарием (если есть), подтвердить.
|
||
4. «К отчётности» → сводная ОСВ; фильтр «Счастливочная» + «бисквит» → строка `60.01` (сальдо нач. Кт 4 454 151.93,
|
||
обороты Дт 128 058 143.65, Кт 125 950 450.77, сальдо кон. Кт 2 346 459.05, `GSK`); «Скачать xlsx».
|
||
|
||
Ожидаемая сводка на чистой версии (`qa-guide` §7.2): `строк: 1385 документов: 22 несопоставленных: 1260 пробелов: 7`.
|
||
Если на стенде раньше вручную сопоставляли контрагентов (K14), алиасы сохраняются между версиями, и
|
||
«несопоставленных» будет меньше (на стенде прогона — 1349); остальные цифры не меняются.
|
||
|
||
## Ограничения прототипа
|
||
|
||
- Нет блокировки версии («Взять в работу»), сопоставления контрагентов, экрана чек-листа, комментариев, удаления файлов,
|
||
смены периметра и ручных переходов статусов.
|
||
- Нет правки строк ОСВ (в API нет), картинок страниц и координат ячеек в скане (в API нет).
|
||
- Нет генерации типов из OpenAPI и автотестов компонентов (vitest — только чистые функции).
|
||
- Нет сборки под контур и переноса в `arm-core/web` — отдельной задачей после демо.
|
||
- Изменений arm-core / scan-gateway нет: найденные пробелы — отдельные issue в тех репозиториях.
|