412 Commits

Author SHA1 Message Date
Andrey Epifancev
e33a4a45f9 contracts(#116): окно перехода 1.x, перечни кодов форм, okei, смысл column_index и ref (K-5, K-6, K-8, K-22, S-15)
- recognition-result.v1.schema.json и recognition-result-message.v1.schema.json — байтовые копии схем 1.2 / 1.0
  (до 9b1a4cc), примеры 1.x — examples/v1/; живут до удаления маппера 1.x ядра (K-8)
- statement-code-orders.yaml — упорядоченные перечни кодов ББ/ОФР по редакциям 66n / fsbu4 и вариантам
  full / simplified, с законными повторами (Р-20: 1220, 1520, 2410 у fsbu4; раздел III НКО у 66n) и кодами
  печатных форм 1С из fixtures (1105, 1130, 1140, 1215, 1231, 1530, 2420, 2460, 2530, 2930) (K-5)
- validate_contracts.py: схемы v1 и examples/v1/, проверка формы перечня кодов; make venv ставит PyYAML
- v2.0: header.okei (+ _text, _confidence) и okei в headerField (K-22); columns[].column_index — столбец сетки
  кандидата (K-6); line_refs — только строки lines[]; ref Excel — имя листа в кавычках по правилу Excel (S-15);
  статус ОСВ — по контрольным суммам §1.4 листа (S-22); примеры приведены к этим правилам

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 02:02:41 +04:00
Andrey Epifancev
dee36c8d68 docs(#116): ревью спеки вслепую на Opus (K-1…K-25, оценка S-1…S-25)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 01:42:57 +04:00
Andrey Epifancev
566a951bd7 docs(#116): design — решения, принятые при написании спеки (S-1…S-25)
Раздел «Решения при написании спеки (18.10.2026)» в Decisions made without discussion: значения, которые
дизайн оставлял спеке (порог сходства наименований, формулы упрощённого набора, словари подписей, коды
предупреждений, period_kind, имена DBML), и уточнения (ожидаемые даты колонок, квартал периода в RECOGNIZED).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 00:55:01 +04:00
Andrey Epifancev
3e0b69038e dev: гайд фронта — формы ББ/ОФР после единой нормализации (после реализации, #116)
- §5.6.1: новые поля StatementOut (статусы строк, повторы кода, reference_name, needs_review, text,
  issues[], period_kind, form_variant), PATCH values[].confirmed / columns / lines, порядок 409
  подтверждения с LINES_UNRESOLVED и DUPLICATE_FORM, crm_id ГСК/ГСЗ
- §9: новые коды ошибок с пометкой «после #116»; §11: строка о предстоящем изменении

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 00:54:15 +04:00
Andrey Epifancev
ecc789667f model: DBML v5.19 — строки форм со статусами, needs_review, document_issue, crm_id ГСК/ГСЗ (#116)
- financial_statement_line: снята уникальность (meta_id, line_code); row_index, source_ref (частичный
  уникальный индекс), line_status (enum statement_line_status), line_code_text, parent_row_index,
  needs_review, is_confirmed
- financial_statement_value: source_text, needs_review (хранится — пересмотр п. 4 v5.13), is_confirmed,
  confirmed_by/at; financial_statement_column: period_kind, label_confidence;
  financial_statement_meta: form_variant (enum statement_form_variant), needs_review_fields
- новая таблица document_issue + enum document_issue_kind, issue_severity, issue_source
- recognition_job.statements_version; document: file_ordinal, уникальность типа на файл — только не для
  BALANCE/INCOME (Р-10); related_group.crm_id (arm-core#112)
- changelog и правила заполнения миграции в шапке; entities-v5.19.md; диаграммы части 01, 04, 06
  (document_issue — в части 06); ссылки на текущую модель и DBML в Makefile — v5.19

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 00:53:06 +04:00
Andrey Epifancev
56a0ff4527 docs(#116): §11 — общая цепочка нормализации ББ/ОФР, §7 и §9 по v2.0, открытые вопросы
- 05-domain-rules: §11 объединяет прежние §11, §11.1 и §12 (источники OCR и Excel, шаги 2–8, таблица
  уровней предупреждений, что отменено); §12 — заголовок-ссылка; §7 — общий словарь у сервисов,
  «посчитанное» соотношение, abs_terms подтверждают величину, упрощённый набор; §9.3 — RECOGNIZED при
  приёме v2.0; §9.5 — хранение v2.0, агрегат по коду, 409 LINES_UNRESOLVED / DUPLICATE_FORM, PATCH
  lines/columns/confirmed; §1.6 — статус и предупреждения ОСВ в v2.0
- отменены: OQ-36/OQ-141 (Р-8), решение № 22 среза 3a (Р-11), решение 08.10.2026 по OQ-156 (Р-17);
  решение № 30 сохранено для OCR-текста
- 07-open-questions: закрыты OQ-36, OQ-141, OQ-147, OQ-152; OQ-156 пересмотрен; OQ-148 — допущение
  спеки; примечания к OQ-33, 145, 146, 149, 150; новые OQ-165 (склейка половин формы, Р-15),
  OQ-166 (упрощённая форма), OQ-167 (несколько периодов в файле ИС)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 00:50:00 +04:00
Andrey Epifancev
9b1a4ccbfd contracts: результат и конверт v2.0 — статусы строк, needs_review, структурные предупреждения (#116)
- recognition-result.schema.json 2.0: line_code nullable + line_status, row_index, ref, parent_ref,
  line_code_text, needs_review у значения и строки, values[].text, <поле>_text/_confidence шапки,
  needs_review_fields, period_kind, label_confidence, document.status/warnings у всех документов
  (включая ОСВ), form_variant, checks обязателен у ББ/ОФР со строками, нарушения с codes, без
  duplicate_line_codes, service.statements_version; changelog — в $comment
- recognition-result-message.schema.json 2.0: metrics.warnings — структуры
- примеры переведены на 2.0 (Excel: detail-строка и нарушение пустой цели; OCR: догадка, покрытая §7,
  строка unreadable, разлепленная строка)
- 03-architecture: общий код arm-statements, контракт v2.0
- спека: у разлепленных строк line_code_text и text — k-е части

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 00:44:15 +04:00
Andrey Epifancev
90ea429642 docs(#116): proposal и дельты спек единой нормализации ББ/ОФР
- proposal: зачем, что меняется, порядок выкладки «сначала ядро», non-goals
- statement-normalization: шаги 1–8 общего кода arm_statements (кандидат, раскладка, статусы строк,
  значения, §7, needs_review, структурная проверка кода, уровни предупреждений, статус)
- recognition-contract: файл результата и конверт v2.0, переход 1.x → 2.0
- tabular-recognition-service, scan-gateway: адаптеры шага 1 и что уходит из сервисов
- arm-core: хранение v2.0, агрегат по коду, document_issue, RECOGNIZED, PATCH lines/columns/confirmed,
  порядок 409, миграция v5.19, crm_id ГСК/ГСЗ
- arm-web: экран проверки формы по новым полям
- design.md: автозамена между файлами — §9.5 п. 3, а не §12 п. 3

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 00:40:50 +04:00
Andrey Epifancev
43b4b808ae docs(#116): финальная версия дизайна — решения Р-16…Р-19, находки W-1…W-16 и H-1…H-26, текст очищен от маркеров ревью
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-17 21:35:59 +04:00
Andrey Epifancev
f55f05efa1 docs(#116): третий раунд — ревью вслепую на Opus (H-1…H-26)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-17 21:23:16 +04:00
Andrey Epifancev
41c328f2ab docs(#116): третий раунд — проверка закрытия V/G на Sonnet (W-1…W-16)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-17 21:16:12 +04:00
Andrey Epifancev
e6400bf52f docs(#116): внесены V-1…V-13 и G-1…G-30, решения Р-12…Р-15 (структура кода только при уверенности < 100, блокировка подтверждения, раскладка по коду, второй документ того же периода)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-17 21:02:57 +04:00
Andrey Epifancev
ba0bdeb744 docs(#116): второй раунд ревью — проверка закрытия F-1…F-25 (V-1…V-13) и ревью вслепую (G-1…G-30)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-17 20:36:20 +04:00
Andrey Epifancev
63f134b342 docs(#116): внесены находки ревью F-1…F-25 и решения Р-8…Р-11 (detail, контракт v2.0, уникальность document, двойники в суммах)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-17 20:03:15 +04:00
Andrey Epifancev
3c31e0ecf5 docs(#116): независимое ревью дизайна 17.10.2026 — 25 находок F-1…F-25, без правок дизайна
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-17 19:41:47 +04:00
Andrey Epifancev
2fa60ef924 docs(#116): столбец кодов — сначала по заголовку «Код» без порога, подсчёт ≥ 3 только без заголовка
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-17 19:17:46 +04:00
Andrey Epifancev
d2572d2a6b docs(#116): Р-7 решено — §7 подтверждает и догадки из грязного текста; все решения приняты, раздел решений без обсуждения
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-17 19:14:19 +04:00
Andrey Epifancev
bcb6b0b527 docs(#116): Р-6 решено — колонка без даты остаётся с error, относительные периоды в словарь
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-17 19:11:22 +04:00
Andrey Epifancev
fbc1de5910 docs(#116): Р-5 решено — порог 100 для значений, код подтверждается структурой, наименование — вопрос ядра
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-17 19:04:56 +04:00
Andrey Epifancev
26df4ad2d1 docs(#116): Р-2 решено — отсутствующая позиция под колонкой = чистый null, по данным fixtures/ocr
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-17 19:00:29 +04:00
Andrey Epifancev
3d7b32ca87 docs(#116): Р-1 решено — общий код копией по скрипту из репозитория arm-statements
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-17 18:51:34 +04:00
Andrey Epifancev
18b7eb2371 docs(#116): Р-3 решено — словарь строк только в ядре, сервисы отдают распознанный текст
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-17 18:39:15 +04:00
Andrey Epifancev
19e185984c docs(#116): сверка консистентности целевой картины после Р-4 и needs_review
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-17 18:33:36 +04:00
Andrey Epifancev
0f57ceb5f1 docs(#116): Р-4 решено — повторы кодов законны, все строки хранятся, дальше суммой по коду
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-17 18:27:25 +04:00
Andrey Epifancev
3e51a95862 docs(#116): подтверждение проверкой §7 — needs_review вместо подсветки по уверенности, Р-7
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-17 18:13:39 +04:00
Andrey Epifancev
631ec8c999 docs(#116): принцип 5 — где проходит очистка OCR в общем коде
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-17 15:30:25 +04:00
Andrey Epifancev
bdf4c025ea docs(#116): таблицы целевой картины → списки (пятиколоночные таблицы не помещались в glow)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-17 15:11:47 +04:00
Andrey Epifancev
e92840fe7d docs(#116): целевая картина по шагам 1–9 — единый выход каждого шага и решения по строкам различий
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-17 15:05:31 +04:00
Andrey Epifancev
b86924bb93 docs(#116): цепочка шагов 0–9 с результатами и таблицами различий, что делает ядро
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-17 12:12:31 +04:00
Andrey Epifancev
940c541052 docs(#116): change unified-statement-normalization — как работает сейчас, шаги 0 и 1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 11:48:10 +04:00
aep
26e23ca85b Merge pull request 'docs: parent_code у строк statement, показ подстрок (#114, AURORA-1527)' (#115) from feat/114-subline-parent into main 2026-10-16 18:35:21 +03:00
Andrey Epifancev
a3d6ef2c6f docs: пустая детализация не проверяется (§7, §12 п. 7; #114, AURORA-1527)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 19:09:42 +04:00
Andrey Epifancev
633bd4fca1 docs: parent_code у строк statement, показ подстрок ББ/ОФР (#114, AURORA-1527)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 18:48:11 +04:00
aep
0fc940d072 Merge pull request 'feat(scripts): снимок для контура — во web/ только зависимости сборки (#112)' (#113) from feat/112-contour-web-deps into main 2026-10-16 14:00:59 +03:00
Andrey Epifancev
c54d5850f2 docs: гайд переноса — раздел 3.2 после 3.1 (#112)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 14:48:18 +04:00
Andrey Epifancev
0574ba402f feat(scripts): снимок для контура — во web/ только зависимости сборки (#112)
prepare-contour-snapshot.sh урезает web/package.json arm-core по разрешённому списку
(devDependencies: @rsbuild/core, @rsbuild/plugin-react, tailwindcss, daisyui; optional: raisa-*;
scripts: build, start, preview), сокращает web-check до npm install + npm run build, пишет убранное
в SNAPSHOT.md и сам собирает урезанный web/ во временной копии: не собралось — снимка нет.
Гайд: раздел 3.2 и правило «web/package.json из контура обратно не переносить».

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 14:47:35 +04:00
aep
7c7018a0c2 Merge pull request 'fix(scripts): sync-web — флаги tea после подкоманды и git add без web/dist (#110, O-2)' (#111) from feat/110-sync-web-tea into main 2026-10-16 12:50:22 +03:00
Andrey Epifancev
4475d018cb fix(scripts): sync-web — не исключать игнорируемый web/dist в git add (#110)
git 2.50 на явно названный в pathspec игнорируемый путь (':!web/dist')
печатает «paths are ignored» и возвращает 1 — sync-web останавливался
после проверок, до коммита и PR (issue arm-core #115 создана, PR не было).
web/dist и так игнорируется .gitignore arm-core; исключение симлинка
node_modules оставлено (.gitignore его не ловит).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 13:47:13 +04:00
Andrey Epifancev
8a39c28572 fix(scripts): sync-web — флаги tea после подкоманды (tea 0.16) (#110)
tea 0.16.0 не принимает --login/--repo перед подкомандой: «flag provided
but not defined: -login» — sync-web падал сразу после создания worktree,
issue и PR в arm-core не создавались. Флаги вынесены в TEA_FLAGS и
передаются после «issues create» / «pulls create»; подсказка ручного
создания PR — с --login/--repo/--base. В test_sync_web.sh — проверка, что
ни один вызов tea в sync-web.sh и prepare-contour-snapshot.sh не начинается
с флага.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 13:45:30 +04:00
aep
fae2370a5e Merge pull request 'docs: точка — разделитель тысяч в суммах OCR, §11 п. 7 (AURORA-1405, scan-gateway#37)' (#109) from feat/37-dot-thousands into main 2026-10-16 12:36:25 +03:00
Andrey Epifancev
bca65ac51a docs: точка — тысячи при любом числе цифр до неё, §11 п. 7 (AURORA-1405, scan-gateway#37)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 13:35:36 +04:00
Andrey Epifancev
e20c1db7cd docs: точка — разделитель тысяч в суммах OCR, §11 п. 7 (AURORA-1405, scan-gateway#37)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 13:29:12 +04:00
aep
f295f48993 Merge pull request 'OQ-164: 76.АВ / 76.ВА в ВГО и результирующей таблице шахматки (#107)' (#108) from feat/107-oq-76av into main
Reviewed-on: #108
2026-10-15 18:19:11 +03:00
Andrey Epifancev
7ba72c8ecd OQ-164: 76.АВ / 76.ВА в ВГО и результирующей таблице шахматки (#107)
Вопрос из ревью arm-core#114 (AURORA-1537): с субсчётом 76.АВ
«НДС по авансам и предоплатам» результирующая таблица Счастливочной
на 30.09.2024 расходится с эталоном (лист 01.10.2024, строка 1230)
на 2 366 666,69, без него — точное совпадение 108 062 446,46.
Открыт; до ответа аналитика (AURORA-1373) расчёт по §4/§6 как есть.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 19:13:45 +04:00
aep
47e79972b7 Merge pull request 'docs: ББ/ОФР из Excel — значение как показывает числовой формат (tabular-parser #42)' (#106) from feat/42-xls-number-format into main 2026-10-15 17:37:07 +03:00
Andrey Epifancev
508474fde1 Merge remote-tracking branch 'origin/main' into feat/42-xls-number-format 2026-10-15 18:36:52 +04:00
aep
9fa2319da2 Merge pull request 'docs(§11.1): разделитель тысяч в суммах OCR (AURORA-1405, scan-gateway#35)' (#105) from feat/35-ocr-thousands into main 2026-10-15 17:36:31 +03:00
Andrey Epifancev
20dd0fe06a docs: уточнены правила числового формата ББ/ОФР, QA-гайд и тестовые данные (#42)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 17:42:45 +04:00
Andrey Epifancev
3230459f26 docs(§11.1): разделитель тысяч — уточнение скобок и формулировки источника
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 16:58:54 +04:00
Andrey Epifancev
a5527c3f1f docs(§11.1): разделитель тысяч в суммах OCR (AURORA-1405, scan-gateway#35)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 16:55:26 +04:00