Единая нормализация ББ/ОФР: экран формы и карточка файла по API v5.19 (#43, arm-ka-docs#116) #44

Merged
aep merged 22 commits from feat/43-statements-v2 into test 2026-10-18 19:09:18 +03:00
Owner

Closes #43. Спека: arm-ka-docs#116 (change unified-statement-normalization, specs/arm-web/spec.md); план 6.

Что сделано

  • Экран проверки формы ББ/ОФР по API v5.19: строки без кода и расшифровки на своих местах, подсветка только по needs_review, предупреждения и нарушения у строк/ячеек/колонок/полей шапки, список предупреждений документа со ссылкой «Показать».
  • Режим «Редактировать»: один черновик и один PATCH (суммы, подтверждение ячеек и кодов, коды строк с подсказкой из справочника, меню строки, даты колонок, наименование организации, подтверждение даты отчёта).
  • «Подтвердить данные» блокируется при неразобранных строках; разобраны 409 LINES_UNRESOLVED, DUPLICATE_FORM, LINE_CODE_TAKEN.
  • Панель файлов: job.warnings структурами (старый формат не роняет экран), значок и список предупреждений файла и документа; предупреждения ОСВ-документа.
  • OpenSpec change statements-v2; README и CLAUDE.md обновлены.

Проверки

make lint typecheck test build — PASS: lint 0 ошибок (9 прежних предупреждений в чужих файлах), 36 файлов / 314 тестов, сборка. npm install пропущен (node_modules — симлинк, P6-18).
Сценарий в браузере (1600x1000) на отдельном стенде: реальные формы 1.x из Excel через ядро (main, часть А) и tabular-parser; v2-данные, §7 и ошибки 409 — перехватом запросов (P6-14). Сверка с макетом 41-document-check, 41-02-document-check-edit, 39-org-documents: отличия — новые элементы v5.19 (поле кода, меню строки, галочки подтверждения, значки уровней, переключатель расшифровок, панель предупреждений) и то, что было и раньше (селектор «Документ», кнопки комментария). Подробности — .superpowers/sdd/.../task-11-report.md (в git не входит).

Выкладка

Выкладывается только вместе с ядром v5.19 (план 3 А + Б): JobBrief.warnings меняет тип. Слияние в test — после слияния части А ядра (слита, arm-core #129). После merge — make -C docs sync-web (arm-core/web напрямую не править).

Rulings I made

  • R-1: браузерные шаги задач T3–T10 перенесены в T11 (стенда с v5.19 в процессе не было); выполнены в T11, цена ошибки — нет.
  • R-2: «Показать» также у soft_failed.
  • R-3: компонент меню строки — LineMenuButton.tsx (конфликт регистра с lineMenu.ts на macOS).
  • R-4: стенд T11 — отдельный compose-проект и порты, стенд владельца не затронут.
  • T11.D-1…D-5 и P6-1…P6-19, решения исполнителей T1…T10 — в openspec/changes/statements-v2/design.md.

Открытые вопросы владельцу

  • В-1: приёмка экрана — фикстура v2 + регрессия 1.x; прогон на реальных 2.0-данных (aep_3) и PDF-сценариев W19–W28 — после перехода сервисов (follow-up).
  • В-3: серая галочка подтверждённой ячейки (в макете её нет).
  • Короткая подпись кнопки даты «Подтвердить»/«Подтверждено» (вместо «Подтвердить дату», P6-11) — оставить?
  • T10.2/T11.9: предупреждения обработки (mapping_warnings) не входят в число значка — как задано в P6-12.
  • O-1: требование «Предупреждения ОСВ-документа» (P6-19) и два MODIFIED-требования составлены здесь, в docs-спеке arm-web их нет — свести в arm-ka-docs#116.

Deferred

Мелочи ревью: T1.2, T1.5, T2.1–T2.5, T3.2, T3.5, T4.1–T4.3, T4.5, T5.3, T5.4, T6.2, T6.5, T6.6, T7.2–T7.5, T8.3–T8.6, T9.3, T9.5, T9.6, T10.2, T10.4, T10.8, T11.9, M-5, P11.1, P11.2, P11.5 (поимённо — в ledger).

🤖 Generated with Claude Code

Closes #43. Спека: arm-ka-docs#116 (change `unified-statement-normalization`, `specs/arm-web/spec.md`); план 6. ## Что сделано - Экран проверки формы ББ/ОФР по API v5.19: строки без кода и расшифровки на своих местах, подсветка только по `needs_review`, предупреждения и нарушения у строк/ячеек/колонок/полей шапки, список предупреждений документа со ссылкой «Показать». - Режим «Редактировать»: один черновик и один `PATCH` (суммы, подтверждение ячеек и кодов, коды строк с подсказкой из справочника, меню строки, даты колонок, наименование организации, подтверждение даты отчёта). - «Подтвердить данные» блокируется при неразобранных строках; разобраны 409 `LINES_UNRESOLVED`, `DUPLICATE_FORM`, `LINE_CODE_TAKEN`. - Панель файлов: `job.warnings` структурами (старый формат не роняет экран), значок и список предупреждений файла и документа; предупреждения ОСВ-документа. - OpenSpec change `statements-v2`; README и CLAUDE.md обновлены. ## Проверки `make lint typecheck test build` — PASS: lint 0 ошибок (9 прежних предупреждений в чужих файлах), 36 файлов / 314 тестов, сборка. `npm install` пропущен (node_modules — симлинк, P6-18). Сценарий в браузере (1600x1000) на отдельном стенде: реальные формы 1.x из Excel через ядро (main, часть А) и tabular-parser; v2-данные, §7 и ошибки 409 — перехватом запросов (P6-14). Сверка с макетом `41-document-check`, `41-02-document-check-edit`, `39-org-documents`: отличия — новые элементы v5.19 (поле кода, меню строки, галочки подтверждения, значки уровней, переключатель расшифровок, панель предупреждений) и то, что было и раньше (селектор «Документ», кнопки комментария). Подробности — `.superpowers/sdd/.../task-11-report.md` (в git не входит). ## Выкладка Выкладывается только вместе с ядром v5.19 (план 3 А + Б): `JobBrief.warnings` меняет тип. Слияние в `test` — после слияния части А ядра (слита, arm-core #129). После merge — `make -C docs sync-web` (`arm-core/web` напрямую не править). ## Rulings I made - R-1: браузерные шаги задач T3–T10 перенесены в T11 (стенда с v5.19 в процессе не было); выполнены в T11, цена ошибки — нет. - R-2: «Показать» также у `soft_failed`. - R-3: компонент меню строки — `LineMenuButton.tsx` (конфликт регистра с `lineMenu.ts` на macOS). - R-4: стенд T11 — отдельный compose-проект и порты, стенд владельца не затронут. - T11.D-1…D-5 и P6-1…P6-19, решения исполнителей T1…T10 — в `openspec/changes/statements-v2/design.md`. ## Открытые вопросы владельцу - В-1: приёмка экрана — фикстура v2 + регрессия 1.x; прогон на реальных 2.0-данных (`aep_3`) и PDF-сценариев W19–W28 — после перехода сервисов (follow-up). - В-3: серая галочка подтверждённой ячейки (в макете её нет). - Короткая подпись кнопки даты «Подтвердить»/«Подтверждено» (вместо «Подтвердить дату», P6-11) — оставить? - T10.2/T11.9: предупреждения обработки (`mapping_warnings`) не входят в число значка — как задано в P6-12. - O-1: требование «Предупреждения ОСВ-документа» (P6-19) и два MODIFIED-требования составлены здесь, в docs-спеке arm-web их нет — свести в arm-ka-docs#116. ## Deferred Мелочи ревью: T1.2, T1.5, T2.1–T2.5, T3.2, T3.5, T4.1–T4.3, T4.5, T5.3, T5.4, T6.2, T6.5, T6.6, T7.2–T7.5, T8.3–T8.6, T9.3, T9.5, T9.6, T10.2, T10.4, T10.8, T11.9, M-5, P11.1, P11.2, P11.5 (поимённо — в ledger). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 22 commits 2026-10-18 19:08:22 +03:00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
- types/api.ts: LineStatus, Severity, IssueKind, PeriodKind, FileWarningOut, IssueOut, EditionLineOut,
  IssueCountsOut, CellTarget, LinePatch, ColumnPatch; новые поля StatementHeaderOut, ColumnOut, ValueOut,
  LineOut, FailedCheckOut, StatementOut (form_variant, issues, edition_lines), DocumentBrief (issue_counts),
  DocumentOut (issues), JobBrief.warnings — FileWarningOut[].
- statementGrid.ts: GridRow получает статус строки, номер строки, код как распознан, флаги needs_review /
  is_confirmed / codeModified; cellFlags: внимание только по needs_review, новый флаг confirmed.
- labels.ts: lineStatusLabel, severityLabel.
- фикстура __fixtures__/statement-v2.json (БАЛАНС 2025 Q3, NEEDS_CHECK): 16 строк × 2 колонки, у каждой пары ValueOut.
- тесты: переносы полей v2 и покрытие пар строка × колонка, cellFlags по needs_review, подписи; хелперы
  row() / v() / gridRow / doc() дополнены значениями по умолчанию.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
- issue i6 и checks.failed: codes — коды строк соотношения, параллельно line_ids.
- issue i2: column_index 3 (индекс колонки c2).
- edition_lines: 1370 перед 1600, по порядку бланка.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
T11.1–T11.4, T11.6–T11.8: короткая подпись кнопки даты, фиксированная раскладка таблиц, код без переноса, значок уровня внутри ячейки, подсказка на всю ячейку, отступ child-строки, ссылка «Разберите строки без кода» — Button type=link.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
T11.5 valueCellText, T11.10 emptySublineKeys пропускает detail, T11.11 collapseIssues (3 записи + «Показать все»).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
aep merged commit d0095f325e into test 2026-10-18 19:09:18 +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#44
No description provided.