docs: демо-сценарий под данные стенда, CLAUDE.md; удалены неиспользуемые css-классы Sidebar (I-2, M-1, M-2, M-6)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
This commit is contained in:
Andrey Epifancev 2026-10-08 01:54:43 +04:00
parent 0f734e3bf8
commit 67bc2c801b
4 changed files with 33 additions and 88 deletions

View File

@ -18,7 +18,8 @@ SPA кредитного аналитика АРМ КА: справочники
повторяют схемы бэка (`arm-core/api/src/schemas/`), поля не придумываем.
2. Пользовательский путь — `../docs/context/10-user-journey.md`; макет — `../docs/mockup/` (по одному экрану через
`../docs/mockup/INDEX.md`).
3. Права — данные: меню скрывается по кодам прав из `/me`, доступ решает сервер (`src/auth/permissions.ts`).
3. Права — данные: доступ решает сервер (403). Меню пока не скрывается по правам (`Sidebar` не применяет permission);
коды прав из `/me` лежат в `src/auth/permissions.ts`.
- `../reference-old-arm/` — только чтение: инфраструктурные идеи (PDFResultViewer) можно смотреть, эндпоинты старого
АРМ (`/fsl/...`, `/osv/by-file-id`, `POST /files`) в arm-core не существуют.
@ -38,7 +39,7 @@ SPA кредитного аналитика АРМ КА: справочники
- `src/services/api/` — функции по ресурсам arm-core (consolidations, files, documents, osv, directories/…).
- `src/utils/` — чистые функции без React/store/API: деньги (`money.ts`, суммы — строки), подписи статусов/типов/периодов (`labels.ts`), скачивание и имя файла (`download.ts`).
- `src/auth/` — `AuthGate` (профиль `/me`), `DevLogin` (`POST /dev/token`, только не в production), `token.ts`.
- `src/store/` — Redux Toolkit: `store.ts`, слайсы `companyGroupsSlice`, `consolidations`, `files` (+ `thunks.ts`).
- `src/store/` — Redux Toolkit: `store.ts`, слайсы `companyGroupsSlice` и `consolidations` (+ `thunks.ts`).
- `src/layouts/` — страницы (маршруты в `src/App.tsx`, в т.ч. `/documents/:document_id` и `/groups/:group_id/versions/:version_id/osv`), `src/widgets/` — блоки экранов (`DocumentReview` — проверка ББ/ОФР/ОСВ со сканом, `ConsolidatedOsv` — сводная ОСВ, `FilesDrawer` — файлы ЮЛ), `src/components/` — примитивы
(`GenericTable`, `TableTag`, `PageTitle`), `src/types/` — DTO API.
@ -47,7 +48,8 @@ SPA кредитного аналитика АРМ КА: справочники
- `make test` — vitest (`npm test`).
- `make check` — install + biome + `tsc --noEmit` + vitest + `rsbuild build`. Зелёным считается только всё вместе; **перед PR**, вывод —
в описание PR.
- `make start` — dev-сервер (`rsbuild dev`) с proxy `/api` → `ARM_CORE_URL` (по умолчанию `http://localhost:8000`); бэкенд — локальный стенд arm-core по `../docs/dev/qa-guide.md`.
- `make start` — dev-сервер (`rsbuild dev`, цель сама задаёт `REACT_APP_ROOT_PATH=/`: без него приложение ждёт префикс
`/aurora/apps/fastapi-dkb-armka` и открывается белый экран; `qa-guide` §4.3) с proxy `/api` → `ARM_CORE_URL` (по умолчанию `http://localhost:8000`); бэкенд — локальный стенд arm-core по `../docs/dev/qa-guide.md`.
## Тесты
Unit-тесты — vitest на чистых функциях (`src/**/*.test.ts`, `npm test` / `make test`); компоненты не тестируются — ручной демо-сценарий по стенду arm-core с фикстурами из `../fixtures` (README, `scripts/demo-prepare.sh`).

View File

@ -8,8 +8,9 @@ SPA кредитного аналитика поверх API `arm-core` (`/api/v
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. Запросы `/api` проксируются на `ARM_CORE_URL` (по умолчанию
`http://localhost:8000`), `REACT_APP_API_URL` в dev не нужен.
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`.
## Проверка
@ -20,13 +21,20 @@ SPA кредитного аналитика поверх API `arm-core` (`/api/v
Пользователь с правами на ГК «Русский бисквит» (`ka_go@armka.local`).
1. Группы → «Русский бисквит» → «Новая консолидация»: ГСК, 2024, Q3 → члены ГСК отмечены → «Создать» → открыта версия №1.
2. Загрузить квартальные ОСВ РБ и Счастливочной за 2024 Q1–Q3 (`../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` одному из ЮЛ → ББ и ОФР «Требуется проверка» → открыть ББ: скан слева, форма
справа, исправить ячейку, принять нарушения с комментарием (если есть), подтвердить.
Данные стенда уже подготовлены: консолидация РБ ГСК 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».

View File

@ -85,11 +85,17 @@ docs#58 O-1 на фронте обходится). В контуре SPA отд
Стенд по `../docs/dev/qa-guide.md` §4 и §6.8 (профиль `services`: tabular-parser, scan-gateway, scan-emulator),
`make seed-dev`, вход `ka_rf@armka.local` (или пользователь из гайда с правами EDIT на ГК «Русский бисквит»).
1. Группы → «Русский бисквит» → «Новая консолидация»: ГСК, 2024, Q3 → члены ГСК отмечены → «Создать» → открыта версия №1.
2. Панель «Организации» → РБ → «Файлы»: загрузить `fixtures/osv/rb/2024-Q{1,2,3}/*`; то же для Счастливочной
(`fixtures/osv/schastl/2024-Q{1,2,3}/*`). Дождаться «Требуется проверка», подтвердить ОСВ-документы (экран ОСВ).
3. Загрузить `fixtures/ocr/aep_6.pdf` одному из ЮЛ → ББ и ОФР «Требуется проверка» → открыть ББ: скан слева, форма
справа, исправить ячейку, принять нарушения с комментарием (если есть), подтвердить.
Данные стенда уже подготовлены: консолидация РБ ГСК 2024 Q3 создана (версия `0437f8be-019c-4dbb-9776-08c306aa38cc`),
`aep_6.pdf` уже загружен Счастливочной; повторы дают штатные 409 `CONSOLIDATION_EXISTS` / `DUPLICATE_FILE`.
1. Кнопка «Новая консолидация» — в боковом меню (действует на всё приложение); ГК «Русский бисквит» выбирается в модалке:
ГСК, период 2024 Q2 или 2025 Q3 (для 2024 Q3 — показать 409 как штатную ошибку) → члены ГСК отмечены → «Создать».
2. Шаги 2–4 — на подготовленной версии `0437f8be-…`. Панель «Организации» → РБ → «Файлы»: ОСВ
`fixtures/osv/rb/2024-Q{1,2,3}/*` и Счастливочной (`fixtures/osv/schastl/2024-Q{1,2,3}/*`) загружены, документы
подтверждены (на новой версии — загрузить и подтвердить на экране ОСВ).
3. ББ/ОФР: открыть уже загруженный ББ Счастливочной (или загрузить `fixtures/ocr/aep_6.pdf` РБ) → скан слева, форма справа,
исправить ячейку; ИНН и дата отчёта не распознаны — ввести в шапке дату `2024-09-30` (ГГГГ-ММ-ДД) и «Сохранить», иначе
409 `PERIOD_REQUIRED`; принять нарушения с комментарием (если есть), подтвердить.
4. «К отчётности» → сводная ОСВ: 1385 строк, 22 документа, 7 пробелов; фильтр Счастливочная + «бисквит» → строка `60.01`
по `qa-guide` §7.2; «Скачать xlsx».

View File

@ -1,15 +1,3 @@
.company_group_item {
border: 2px solid grey;
border-radius: 2px;
height: 50px;
width: 90%;
cursor: pointer;
background-color: lightgray;
}
.active_cg {
background-color: white;
}
.topbar {
display: flex;
align-items: center;
@ -17,19 +5,6 @@
margin-bottom: 12px;
}
.brand {
font-weight: 700;
white-space: nowrap;
}
.collapsedList {
display: flex;
flex-direction: column;
gap: 8px;
align-items: center;
margin-top: 8px;
}
.section {
margin-bottom: 0px;
padding: 12px;
@ -46,32 +21,6 @@
margin-bottom: 10px;
}
.search {
margin-bottom: 10px;
}
.subgroupToggle {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
border: 0;
background: transparent;
padding: 6px 10px;
margin-bottom: 6px;
cursor: pointer;
color: rgba(0, 0, 0, 0.88);
font-weight: 600;
}
.subgroup {
/* padding-left: 8px; */
display: flex;
flex-direction: column;
/* gap: 10px; */
margin-bottom: 12px;
}
.linkBase {
display: inline-flex;
gap: 10px;
@ -98,17 +47,6 @@
background: #edf8ee;
}
.state {
display: flex;
align-items: center;
gap: 8px;
padding: 8px 0;
}
.emptyWrap {
padding-top: 8;
}
.wrapper {
height: 100%;
display: flex;
@ -123,15 +61,6 @@
align-items: center;
}
.collapsedList {
display: flex;
flex-direction: column;
gap: 8px;
width: 100%;
align-items: center;
margin-top: 8px;
}
.iconBtn {
width: 40px;
height: 40px;