Коммит 7891430 откатил синхронизацию фронта (5bec434, #139/#140) и форматирование Prettier (#137). Из origin/main восстановлены файлы, не относящиеся к шахматке: - index.tsx (тема antd: Layout.fontSize, Form.labelFontSize/labelColor); - layouts/DocumentPage.tsx (переключатель документа, комментарий к документу); - services/api: consolidations.ts (getChecklist), documents.ts (postComment), files.ts (removeFile), directories/catalogue_jur.ts; types/consolidations/version_members.ts (ChecklistBackendShape); - widgets: ConsoleLegalEntities (ChecklistModal, checklist_utils), FilesDrawer (DeleteModal, ReplaceDocModal, documentRows), DocumentReview (CommentModal, StatementReview, reviewCounters, reviewView), CatalogueJurForm, CatalogueJurTable, CompanyGroupsList; - hooks/useVirtualList.tsx и components/TableTag/presets.tsx (форматирование Prettier). В файлах шахматки оставлены её изменения: App.tsx, layouts/index.ts, api/client.ts (init в apiFetchBlob), OsvTabs.tsx, ConsolidatedOsvContent.tsx. Из main возвращён key={version_id}: страница отчёта разделена на обёртку с key и содержимое, чтобы при смене версии состояние (карточка, фильтры, страница) создавалось заново, как в ConsolidatedOsvPage. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
arm-core/web — фронт АРМ КА
SPA кредитного аналитика поверх API arm-core (/api/v1). Контекст системы — ../../CLAUDE.md, ядро — ../README.md,
архитектура фронта — ARCHITECTURE.md, соглашения — CLAUDE.md. С 21.10.2026 фронт ведётся здесь (PR в arm-core
main); прежний репозиторий RSHB/arm-web заморожен.
Запуск
npm install(изweb/).- Стенд 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). REACT_APP_ROOT_PATH=/ npm run 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 не нужен.- Вход — через dev-форму (
POST /dev/token), напримерka_go@armka.local.
Форматирование и линтеры
Перед PR — npm run format: eslint --fix → biome check --write (импорты, безопасные
исправления) → prettier --write. Команда приводит src/ к единому виду; повторный запуск ничего не меняет.
- Prettier (
.prettierrc.json) — единственный форматтер: табы, ширина 140, одинарные кавычки (в CSS — двойные),>тега JSX на той же строке. Форматтер biome выключен, чтобы два инструмента не спорили о пробелах. - ESLint (
eslint.config.js) — правила, повторяющиеbiome.json; biome остаётся линтером вmake web-checkядра. npm run lint—eslint+prettier --checkбез исправлений: ошибки валят команду, предупреждения (any,console, зависимости хуков) — нет.- В редакторе: расширения Prettier и ESLint, «Format on Save» с Prettier — результат совпадёт с
npm run format.
Проверка
Из корня arm-core — make web-check (install, biome, tsc --noEmit, rsbuild build; входит в check-full), из web/ —
npm test (vitest) и npm run lint (ESLint + Prettier). Зелёным считается всё вместе.
Демо-сценарий
Пользователь с правами на ГК «Русский бисквит» (ka_go@armka.local).
Данные стенда уже подготовлены: консолидация РБ ГСК 2024 Q3 создана (версия 0437f8be-019c-4dbb-9776-08c306aa38cc,
ОСВ загружены и подтверждены), aep_6.pdf уже загружен Счастливочной. Повторы дают штатные ошибки (409
CONSOLIDATION_EXISTS, DUPLICATE_FILE) — их можно показать как обработку ошибок.
- Кнопка «Новая консолидация» — в боковом меню (действует на всё приложение, не на выбранную группу); в модалке выбирается
ГК «Русский бисквит», ГСК, период — другой, например 2024 Q2 или 2025 Q3 (для 2024 Q3 вернётся 409
CONSOLIDATION_EXISTS) → члены ГСК отмечены → «Создать» → открывается страница группы с новой версией. - Дальше работаем на подготовленной версии 2024 Q3 (
/groups/<id>?version=0437f8be-019c-4dbb-9776-08c306aa38cc): панель «Организации» → ЮЛ → «Файлы» → документы ОСВ в статусе «Загружен». Загрузка ОСВ вручную —../../fixtures/osv/{rb,schastl}/2024-Q{1,2,3}/*; для новой версии быстро —../../docs/scripts/demo-prepare.sh <version_id> [email](каталог фикстур —FIXTURES_DIR, по умолчаниюfixturesworkspace; в конце печатает сводку). - ББ/ОФР: открыть уже загруженный ББ Счастливочной (или загрузить
../../fixtures/ocr/aep_6.pdfРБ) → скан слева, форма справа, исправить ячейку. ИНН и дата отчёта в aep_6 не распознаются: в шапке ввести дату строго2024-09-30(ГГГГ-ММ-ДД) и нажать «Сохранить», иначе «Подтвердить данные» даст 409PERIOD_REQUIRED. Принять нарушения с комментарием (если есть), подтвердить. - «К отчётности» → сводная ОСВ; фильтр «Счастливочная» + «бисквит» → строка
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); остальные цифры не меняются.
Экран проверки формы ББ/ОФР (контракт 2.0, ядро v5.19)
Что нового (#43): строки формы показываются по статусам (ok / нераспознанный код / без кода / расшифровка) на своих местах;
предупреждения и нарушения стоят значками у ячеек, колонок, строк и полей шапки, а полный список свёрнут до трёх записей
(«Показать все»); в режиме правки можно назначить код строке, пометить её расшифровкой и подтвердить значение, код или дату
колонки — всё уходит одним PATCH; кнопка «Подтвердить данные» заблокирована, пока есть строки без кода (ссылка
«Разберите строки без кода: N» ведёт к первой); панель файлов ЮЛ показывает счётчик предупреждений файла и документа.
Карта модулей — ARCHITECTURE.md.
Ограничения
- Нет блокировки версии («Взять в работу»), сопоставления контрагентов, экрана чек-листа, комментариев, удаления файлов, смены периметра и ручных переходов статусов.
- Нет правки строк ОСВ (в API нет), картинок страниц и координат ячеек в скане (в API нет).
- Нет генерации типов из OpenAPI и автотестов компонентов (vitest — только чистые функции).