Демо-прототип: от создания консолидации до сводной ОСВ #4

Merged
aep merged 29 commits from feat/3-demo-prototype into test 2026-10-08 09:58:39 +03:00
Owner

Closes #3

Что сделано

Демо-прототип: аналитик на локальном стенде проходит путь «создание консолидации -> загрузка ОСВ и PDF -> проверка и подтверждение -> сводная ОСВ» только через API arm-core.

  • Task 1: проверка стенда (круг PDF работает: aep_6.pdf даёт BALANCE и INCOME в NEEDS_CHECK).
  • Task 2: чистка наследия старого АРМ, vitest, tsc и biome зелёные.
  • Task 3-4: apiFetchBlob, деньги строками, подписи, dev-proxy, типы DTO и сервисы API.
  • Task 5: модалка «Новая консолидация», переход к версии (?version=), «К отчётности».
  • Task 6: панель «Файлы ЮЛ» (загрузка с итогом, документы, опрос).
  • Task 7: экран документа и просмотр ОСВ-документа.
  • Task 8: проверка формы ББ/ОФР со сканом PDF, правка ячеек, проверки, подтверждение.
  • Task 9: сводная ОСВ (фильтры, пробелы, экспорт xlsx).
  • Task 10: scripts/demo-prepare.sh, README с демо-сценарием, CLAUDE.md, ARCHITECTURE.md.
  • Финальное ревью (opus) и fix-волна: C-1 (белый экран при make start), I-1 (версия в URL), I-2 (демо-сценарий под данные стенда), M-1..M-4, M-6.

make check

biome: 0 ошибок (7 старых warning noExplicitAny), tsc чисто, vitest 11 файлов / 53 теста passed, rsbuild build ready. openspec validate demo-prototype --strict - valid.

Сквозной прогон (Task 10)

Версия для демо 0437f8be-019c-4dbb-9776-08c306aa38cc (ГК «Русский Бисквит», 2024 Q3, РБ + Счастливочная). После scripts/demo-prepare.sh: строк 1385, документов 22, пробелов 7 (совпало с qa-guide §7.2); несопоставленных 1349 вместо 1381 (O-3: 24 строки сопоставлены по алиасам прошлого ручного сопоставления на стенде). Через curl и dev-proxy проверены: токен, Content-Disposition у /osv/export, application/pdf у скана, entry_ids непустые и без дублей. Браузерный прогон шагов 1-4 демо-сценария визуально НЕ выполнялся - остаётся человеку.

Rulings I made

  • R-1 (design): Task 1 и Task 2 запущены параллельно (срок). Цена ошибки нулевая.
  • R-2: T4.I1 (частичный успех загрузки) отложено в Task 6 и там закрыто.
  • R-3, R-4: scoped re-review фиксов T5.I1 и T7.I1 заменён проверкой контроллера по коду. Цена: низкая.
  • R-5: все находки финального ревью - одной fix-волной; M-5 отложена.
  • R-6: make start задаёт REACT_APP_ROOT_PATH=/ (иначе белый экран на dev-сервере).

Находки, закрытые исправлениями

T4.C1 fixed 2782821; T5.I1 fixed c11ef66; T6.I1, T6.I2, T6.M1 fixed 64d64d3; T7.I1, T7.M1 fixed edaa2b6; T8.I1, T8.M1, T8.M2 fixed 65c3dc2; T3.4 fixed 2c7bdf1; T2.1 fixed 615201c; T2.2 fixed 4424a2b; T4.2 fixed fec179b; T9.M5 rejected (проверено, entry_ids непустые); финальное ревью: C-1 fixed 384301e; I-1, M-3, M-4, M-6, T5.M2, T5.M4, T7.M4, T7.M7 fixed 0f734e3; I-2, M-1, M-2, M-6 (текст), T4.5 fixed 67bc2c8 (M-2 частично и в 384301e).

Находки со статусом deferred

Маркер Суть
T2.3 7 warning noExplicitAny в GenericTable/ConsoleTable (старый код)
T2.4 src/env.d.ts объявляет process глобально
T3.1-T3.3, T3.5-T3.7 default в fileStatusLabel; нет теста '-0.00'; хрупкий парсинг Content-Disposition; apiFetchBlob без signal; нет тестов apiFetchBlob; смешанные отступы rsbuild.config.ts
T4.3, T4.4 ConsolidatedRowOut/OsvFilters уже схемы; getConsolidatedOsv не ограничивает limit
T5.M1, T5.M3, T5.M5, T5.M6 ConsolidationsList без cancelled-флага; resetFields на размонтированной форме; закрытие модалки во время submit; ошибка загрузки ГК не чистит данные
T6.M2-T6.M4 нет защиты от устаревших ответов в ConsoleLegalEntities; Space direction deprecated; loading может залипнуть
T7.M2, T7.M3, T7.M5, T7.M6, T7.M8 гонка в DocumentPage при смене id; ошибка перезагрузки после подтверждения; failures без проверки; слитая колонка счёт/контрагент без ИНН; OSV в ERROR скрывает частичные строки
T8.M3-T8.M9 шапку нельзя очистить; Space direction; магическая высота таблицы; длинные целые; pdf.worker не legacy (старые браузеры контура); сброс error/pdfDoc; пробелы в тестах applyDraftInput
T9.M1-T9.M4 Alert message и List deprecated в antd 6.5; до 3 сообщений при 404; account_code null
M-5 (финал) после 401 сыплются серверные тосты
O-4 account_root=60.01 даёт 0 строк - фильтр принимает только корень (60)
O-5 см. T4.5 - закрыто удалением src/utils.ts

Что проверить человеку в браузере

make start (белого экрана быть не должно), вход через dev-форму, шаги 1-4 демо-сценария из README: создание консолидации, панель «Файлы», экран ББ/ОФР со сканом (Splitter antd 6, рендер pdf.js, правка ячеек, дата отчёта ГГГГ-ММ-ДД), сводная ОСВ и экспорт xlsx.

🤖 Generated with Claude Code

https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3

Closes #3 ## Что сделано Демо-прототип: аналитик на локальном стенде проходит путь «создание консолидации -> загрузка ОСВ и PDF -> проверка и подтверждение -> сводная ОСВ» только через API arm-core. - Task 1: проверка стенда (круг PDF работает: aep_6.pdf даёт BALANCE и INCOME в NEEDS_CHECK). - Task 2: чистка наследия старого АРМ, vitest, tsc и biome зелёные. - Task 3-4: apiFetchBlob, деньги строками, подписи, dev-proxy, типы DTO и сервисы API. - Task 5: модалка «Новая консолидация», переход к версии (?version=), «К отчётности». - Task 6: панель «Файлы ЮЛ» (загрузка с итогом, документы, опрос). - Task 7: экран документа и просмотр ОСВ-документа. - Task 8: проверка формы ББ/ОФР со сканом PDF, правка ячеек, проверки, подтверждение. - Task 9: сводная ОСВ (фильтры, пробелы, экспорт xlsx). - Task 10: scripts/demo-prepare.sh, README с демо-сценарием, CLAUDE.md, ARCHITECTURE.md. - Финальное ревью (opus) и fix-волна: C-1 (белый экран при `make start`), I-1 (версия в URL), I-2 (демо-сценарий под данные стенда), M-1..M-4, M-6. ## make check biome: 0 ошибок (7 старых warning noExplicitAny), tsc чисто, vitest 11 файлов / 53 теста passed, rsbuild build ready. `openspec validate demo-prototype --strict` - valid. ## Сквозной прогон (Task 10) Версия для демо 0437f8be-019c-4dbb-9776-08c306aa38cc (ГК «Русский Бисквит», 2024 Q3, РБ + Счастливочная). После scripts/demo-prepare.sh: строк 1385, документов 22, пробелов 7 (совпало с qa-guide §7.2); несопоставленных 1349 вместо 1381 (O-3: 24 строки сопоставлены по алиасам прошлого ручного сопоставления на стенде). Через curl и dev-proxy проверены: токен, Content-Disposition у /osv/export, application/pdf у скана, entry_ids непустые и без дублей. Браузерный прогон шагов 1-4 демо-сценария визуально НЕ выполнялся - остаётся человеку. ## Rulings I made - R-1 (design): Task 1 и Task 2 запущены параллельно (срок). Цена ошибки нулевая. - R-2: T4.I1 (частичный успех загрузки) отложено в Task 6 и там закрыто. - R-3, R-4: scoped re-review фиксов T5.I1 и T7.I1 заменён проверкой контроллера по коду. Цена: низкая. - R-5: все находки финального ревью - одной fix-волной; M-5 отложена. - R-6: `make start` задаёт REACT_APP_ROOT_PATH=/ (иначе белый экран на dev-сервере). ## Находки, закрытые исправлениями T4.C1 fixed 2782821; T5.I1 fixed c11ef66; T6.I1, T6.I2, T6.M1 fixed 64d64d3; T7.I1, T7.M1 fixed edaa2b6; T8.I1, T8.M1, T8.M2 fixed 65c3dc2; T3.4 fixed 2c7bdf1; T2.1 fixed 615201c; T2.2 fixed 4424a2b; T4.2 fixed fec179b; T9.M5 rejected (проверено, entry_ids непустые); финальное ревью: C-1 fixed 384301e; I-1, M-3, M-4, M-6, T5.M2, T5.M4, T7.M4, T7.M7 fixed 0f734e3; I-2, M-1, M-2, M-6 (текст), T4.5 fixed 67bc2c8 (M-2 частично и в 384301e). ## Находки со статусом deferred | Маркер | Суть | |---|---| | T2.3 | 7 warning noExplicitAny в GenericTable/ConsoleTable (старый код) | | T2.4 | src/env.d.ts объявляет process глобально | | T3.1-T3.3, T3.5-T3.7 | default в fileStatusLabel; нет теста '-0.00'; хрупкий парсинг Content-Disposition; apiFetchBlob без signal; нет тестов apiFetchBlob; смешанные отступы rsbuild.config.ts | | T4.3, T4.4 | ConsolidatedRowOut/OsvFilters уже схемы; getConsolidatedOsv не ограничивает limit | | T5.M1, T5.M3, T5.M5, T5.M6 | ConsolidationsList без cancelled-флага; resetFields на размонтированной форме; закрытие модалки во время submit; ошибка загрузки ГК не чистит данные | | T6.M2-T6.M4 | нет защиты от устаревших ответов в ConsoleLegalEntities; Space direction deprecated; loading может залипнуть | | T7.M2, T7.M3, T7.M5, T7.M6, T7.M8 | гонка в DocumentPage при смене id; ошибка перезагрузки после подтверждения; failures без проверки; слитая колонка счёт/контрагент без ИНН; OSV в ERROR скрывает частичные строки | | T8.M3-T8.M9 | шапку нельзя очистить; Space direction; магическая высота таблицы; длинные целые; pdf.worker не legacy (старые браузеры контура); сброс error/pdfDoc; пробелы в тестах applyDraftInput | | T9.M1-T9.M4 | Alert message и List deprecated в antd 6.5; до 3 сообщений при 404; account_code null | | M-5 (финал) | после 401 сыплются серверные тосты | | O-4 | account_root=60.01 даёт 0 строк - фильтр принимает только корень (60) | | O-5 | см. T4.5 - закрыто удалением src/utils.ts | ## Что проверить человеку в браузере `make start` (белого экрана быть не должно), вход через dev-форму, шаги 1-4 демо-сценария из README: создание консолидации, панель «Файлы», экран ББ/ОФР со сканом (Splitter antd 6, рендер pdf.js, правка ячеек, дата отчёта ГГГГ-ММ-ДД), сводная ОСВ и экспорт xlsx. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
aep added 21 commits 2026-10-08 00:57:52 +03:00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
Удалены экраны и моки старого АРМ (FileViewer, FilesList, FileUploaderModel,
PDFResultViewer, mocks.ts), рендер PDF перенесён в widgets/DocumentReview/PdfPages.tsx.
Подключён vitest (npm test, make test, в make check). Исправлены все ошибки tsc и biome:
типизированы ответы api.get, слайсы и thunks, убраны console.log и пустые catch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
- Клиент API: ApiError.body, apiFetchBlob для бинарных ответов с автоматическим разбором ошибок
- Деньги: formatAmount (строка Decimal → форматированная с пробелами), parseAmountInput (ввод → нормализация)
- Подписи: documentTypeLabel, documentStatusLabel, fileStatusLabel, periodLabel для UI
- Dev-proxy: /api → localhost:8000 (CORS-free, Content-Disposition читается)
- Типы: Quarter, DocumentType, DocumentStatus, FileStatus в src/types/api.ts
- Удалён smoke.test.ts

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
- Дополнены типы в src/types/api.ts (Page, UploadResult, FileOut, DocumentOut, StatementOut, ConsolidatedRowOut, etc.)
- Реализованы сервисы: uploadFiles, listLegalEntityFiles, fetchFileContent, getDocument, getStatement, getAllEntries, buildOsvQuery, getConsolidatedOsv, getOsvSummary, exportOsv
- Переписаны consolidations.ts (getVersionCard вместо getVersionData) и company_groups.ts (fetchRelatedGroups, fetchAllLegalEntities)
- Обновлены вызовы функций в компонентах и slices
- Добавлены unit-тесты files.test.ts и osv.test.ts (11 тестов, все PASSED)
- Типизация strict, без any, все тесты и сборка зелёные

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
GET /directories/company-groups возвращает Page[CompanyGroupOut], но раньше типизировался как ICompanyGroup[].
Реализована пагинация: fetchCompanyGroups теперь читает все страницы по 200 и возвращает полный массив ICompanyGroup[].
Это позволяет thunk/slice получать честный массив с правильным total_groups = payload.length.

Исправлено:
- fetchCompanyGroups: async функция с циклом по total (как fetchAllLegalEntities)
- types.ts / companyGroupsSlice.ts / thunks.ts: типы честные (без приведений)
- потребители (NewConsoleModal, CompanyGroupsTable, Sidebar): используют raw_rows как массив

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
Заодно: отложенный revokeObjectURL в saveBlob (ревью Task 3).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
aep added 4 commits 2026-10-08 02:16:24 +03:00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
- [39] таблица документов: формат, период, проверка Период/Контрагент, статус плашкой; шапка с ЮЛ и ИНН
- [30] шапка «ГК — год Кn» со статусом, вкладки (только ОСВ), баннер «Осталось N» с фильтром
  несопоставленных, колонки и двухуровневые заголовки макета, фильтры в заголовках, «—» для нуля
- [41] карточки «Исходный документ» / «Результат распознавания», режим просмотра и «Редактировать»,
  форма как бумажный документ, суммы без копеек
- [34] Дата создания, Дата верификации (—, в API нет), ГСК (—, П-3), квартал «К3»
- [03] Основной РФ — название филиала, а не UUID
- логотип АРМ КА, заголовок вкладки, «Отчётность»; [42] члены ГСК наверху списка

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
Author
Owner

Замечания владельца после проверки в браузере (08.10.2026):

Маркер Суть Статус
H-1 «К отчётности» не переходил на свод: клик всплывал до onRow строки, setSearchParams(replace) отменял переход (регрессия 0f734e3) fixed 977a0ef
H-2 Панель документов ЮЛ не по макету fixed 6f8f04a, c0dfe7c
H-3 xlsx определился как расшифровка (DISCLOSURE) — просмотреть нельзя deferred (follow-up при закрытии)

Сверка всех экранов с PNG макета (docs/mockup/screens/) в Playwright, 1600×1000; приведены к макету: [03], [30], [34], [39], [40], [41]/[41-02], [42], логотип и заголовок вкладки (6d89989, 6f8f04a, c0dfe7c). Решения — R-7…R-12 в design.md.

Попутно найдено и исправлено: [03] «Основной РФ» показывал UUID филиала; [34] в «Дата верификации» стояла отчётная дата; даты загрузки показывались по UTC (R-9).

Сквозной прогон в браузере (Playwright): создание консолидации 2024 К2 → переход к версии; панель файлов; загрузка aep_3.pdf → «Принято: 1» → распознано ББ+ОФР; правка ячейки (неверный ввод блокируется), акцепт нарушений, подтверждение; ОСВ-документ; свод — фильтр «бисквит» даёт строки 60.01/60.02/62.01/62.02 с цифрами qa-guide §7.2; «Показать ЮЛ без ИНН»; экспорт xlsx.

make check: biome 0 ошибок (7 старых warning any), tsc чисто, vitest 82/82, build ok.

Отложено (в follow-up): H-3; вкладки отчёта кроме ОСВ; переключатель единиц/знаков; выпадающий «Документ» на [41]; строки формы без кода (нет в API); дата верификации версии (нет в API); предупреждения antd о статическом message (нужен App-контекст).

🤖 Generated with Claude Code

https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3

Замечания владельца после проверки в браузере (08.10.2026): | Маркер | Суть | Статус | |---|---|---| | H-1 | «К отчётности» не переходил на свод: клик всплывал до onRow строки, setSearchParams(replace) отменял переход (регрессия 0f734e3) | fixed 977a0ef | | H-2 | Панель документов ЮЛ не по макету | fixed 6f8f04a, c0dfe7c | | H-3 | xlsx определился как расшифровка (DISCLOSURE) — просмотреть нельзя | deferred (follow-up при закрытии) | Сверка всех экранов с PNG макета (docs/mockup/screens/) в Playwright, 1600×1000; приведены к макету: [03], [30], [34], [39], [40], [41]/[41-02], [42], логотип и заголовок вкладки (6d89989, 6f8f04a, c0dfe7c). Решения — R-7…R-12 в design.md. Попутно найдено и исправлено: [03] «Основной РФ» показывал UUID филиала; [34] в «Дата верификации» стояла отчётная дата; даты загрузки показывались по UTC (R-9). Сквозной прогон в браузере (Playwright): создание консолидации 2024 К2 → переход к версии; панель файлов; загрузка aep_3.pdf → «Принято: 1» → распознано ББ+ОФР; правка ячейки (неверный ввод блокируется), акцепт нарушений, подтверждение; ОСВ-документ; свод — фильтр «бисквит» даёт строки 60.01/60.02/62.01/62.02 с цифрами qa-guide §7.2; «Показать ЮЛ без ИНН»; экспорт xlsx. make check: biome 0 ошибок (7 старых warning any), tsc чисто, vitest 82/82, build ok. Отложено (в follow-up): H-3; вкладки отчёта кроме ОСВ; переключатель единиц/знаков; выпадающий «Документ» на [41]; строки формы без кода (нет в API); дата верификации версии (нет в API); предупреждения antd о статическом message (нужен App-контекст). 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
aep added 1 commit 2026-10-08 02:31:31 +03:00
aep added 1 commit 2026-10-08 02:44:08 +03:00
aep added 1 commit 2026-10-08 09:45:56 +03:00
Сервер отдаёт строки по коду и без заголовков разделов (§12, OQ-36): порядок и разделы восстанавливаются
по соотношениям §7 только при показе; приклеенные OCR заголовки срезаются, полное имя — в подсказке.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
Author
Owner

H-4 (владелец): просмотр формы ББ/ОФР не как в макете [41]; aep_3 — ИНН дважды и недочищенные данные.

  • Вёрстка — fixed 9d4fc20: разделы АКТИВ/ПАССИВ и I–V, порядок бумажной формы, итоги жирные (2900 — не итог), строки вне формы — «Прочие строки»; приклеенные заголовки разделов срезаются при показе; ИНН только в рамке кодов; ОКУД по типу формы; название организации — 2 строки с подсказкой. Решение R-13 в design.md.
  • Данные — не фронт (эталоны нормализатора фиксируют это поведение): deferred → RSHB/arm-scan-gateway#15 (мусорное название, не извлекаются ИНН/ОКПО/ОКОПФ/ОКФС/дата, заголовки в названиях строк, пустые подписи колонок), RSHB/arm-core#62 (порядок строк по коду, нет уверенности названия в StatementOut).

make check зелёный, vitest 92/92; сверено в Playwright с 41-document-check.png.

🤖 Generated with Claude Code

https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3

H-4 (владелец): просмотр формы ББ/ОФР не как в макете [41]; aep_3 — ИНН дважды и недочищенные данные. - Вёрстка — fixed 9d4fc20: разделы АКТИВ/ПАССИВ и I–V, порядок бумажной формы, итоги жирные (2900 — не итог), строки вне формы — «Прочие строки»; приклеенные заголовки разделов срезаются при показе; ИНН только в рамке кодов; ОКУД по типу формы; название организации — 2 строки с подсказкой. Решение R-13 в design.md. - Данные — не фронт (эталоны нормализатора фиксируют это поведение): deferred → RSHB/arm-scan-gateway#15 (мусорное название, не извлекаются ИНН/ОКПО/ОКОПФ/ОКФС/дата, заголовки в названиях строк, пустые подписи колонок), RSHB/arm-core#62 (порядок строк по коду, нет уверенности названия в StatementOut). make check зелёный, vitest 92/92; сверено в Playwright с 41-document-check.png. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
aep added 1 commit 2026-10-08 09:49:21 +03:00
Макет [41] рисует бумажную шапку с ОКПО/ОКОПФ/ОКФС/адресом, которых распознавание не отдаёт
(arm-scan-gateway#15) — вместо пустых рамок показываем то, что извлекается надёжно.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
aep merged commit 7727cb3ec4 into test 2026-10-08 09:58:39 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/arm-web#4
No description provided.