152 Commits

Author SHA1 Message Date
Andrey Epifancev
ace39873f5 Влит main (метрики качества #203, разрез по форме #214): DBML v5.26 перестроена поверх v5.25 (#206)
- data-model-v5.26.dbml, entities-v5.26.md = v5.25 + пункты 1–5 КФО; changelog v5.26 после v5.25,
  пометки «v5.25 занят PR #203» сняты
- 03/04/08: версия модели v5.26 с пунктами v5.25; OQ-179 перед OQ-180…194
- диаграммы: make diagrams (part10 из main; part04 — версия main, сдвиг раскладки рендера не берём)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 16:38:25 +04:00
Andrey Epifancev
97c8dc05a3 Архив change statement-form-split (AURORA-1734/1735, #214)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 10:21:12 +04:00
aep
e5274285ea AURORA-1734, AURORA-1735: разрез по смене формы и редкий столбец (#214) 2026-11-07 09:20:48 +03:00
Andrey Epifancev
6484cd67d0 AURORA-1734/1735: уточнения по финальному ревью — сдвинутое значение и XLSB_NO_FORMATS в частях
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 09:10:38 +04:00
Andrey Epifancev
c509c5ed76 AURORA-1734/1735: §11 — разрез по смене формы и редкий столбец (RSHB/pylib_ai_arm_statements#5)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 09:01:31 +04:00
Andrey Epifancev
1b92f2b2ca AURORA-1734/1735: change statement-form-split — разрез кандидата по смене формы и редкая колонка (RSHB/pylib_ai_arm_statements#5)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 08:54:42 +04:00
Andrey Epifancev
979fb74ff0 Архив change quality-metrics (AURORA-1759)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 08:51:29 +04:00
Andrey Epifancev
75f5b52cd4 merge: влить origin/main в feat/202-quality-metrics-dbml
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 04:15:03 +04:00
Andrey Epifancev
819ded3638 docs(#202): решение R-24 в design quality-metrics
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 04:14:07 +04:00
Andrey Epifancev
55f06e9458 fix(#202): схема quality-facts перенесена в contracts/metrics/ (не требует копии в сервисах)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 03:56:47 +04:00
Andrey Epifancev
a9aa6f60b0 Архив change statement-checks-alternatives (AURORA-1864, #209)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 23:00:11 +04:00
Andrey Epifancev
dc374a54a4 AURORA-1864: группа альтернатив соотношений 2400, знак 2410 не определяем (RSHB/pylib_ai_arm_statements#3)
§7: правило group в statement_checks.yaml, соотношения 2400 полного и
упрощённого наборов — альтернативы; OQ-12 закрыт в части 2410.
Change statement-checks-alternatives: требование «Шаг 7» спеки
statement-normalization.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 22:57:45 +04:00
Andrey Epifancev
b6384a5ad3 КФО: tasks.md — п. 4 выполнен (PR #207, вложения AURORA-1546/1547) (#206)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 22:41:54 +04:00
Andrey Epifancev
232f82cfce КФО: правки финального ревью — порядок каскада, округление auto/manual, односторонние агрегаты, доля, итоги, OQ-194; генератор контракта в scripts/ (#206)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 20:43:26 +04:00
Andrey Epifancev
9ee0796314 КФО: OpenSpec-delta arm-core и tasks.md (#206)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 20:32:11 +04:00
Andrey Epifancev
cc3b518261 DBML v5.26: разрез КФО по компании, предупреждения и аудит КФО, режим min_or_full (#206)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 20:27:38 +04:00
Andrey Epifancev
228af4e4d9 КФО: дизайн change kfo-calculation-contract (#206)
Proposal и design: §8 «КФО», DBML v5.26, контракт API КФО под AURORA-1546/1547; ответы на вопросы проверки исполнителем.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 20:16:41 +04:00
Andrey Epifancev
8abbf50dd3 docs(#202): правки ревью ветки — is_scan, ОСВ без lines/values, retention raw/uploads
Критично: stored_file.is_scan был описан наоборот (true = цифровой вместо true = скан),
противоречил §14.6 и собственному имени столбца.

Важно: §14 не говорил явно, что ОСВ не получает lines/values в payload (теперь
dependentSchemas в контракте это ещё и проверяет); §14.3 не говорил, что
quality_outcome_fact.document_id не unique и метрики берут последний факт; амount в
контракте был float вместо decimal-строки (как money в recognition-result.schema.json);
правка "дата колонки" не имела счётчика — явно отнесена к fixes_header_*; правило
хранения S3 при удалении файла (OQ-179) не было согласовано между domain-rules,
architecture и spec.md (spec.md ошибочно утверждал, что uploads экспирится в отличие
от raw — не экспирится ни то, ни другое, если на них ссылается факт).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-11-05 15:02:48 +04:00
Andrey Epifancev
2676dfd731 docs(#202): открытые вопросы, architecture и openspec-change — метрики качества первички
OQ-179 (срок хранения raw/{job_id}.json), роль raw и dkb_metrics в 03-architecture.md,
openspec proposal/design/specs, план реализации (AURORA-1759).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-11-05 14:11:16 +04:00
Andrey Epifancev
f9240fd351 DBML v5.24: таблица vgo_assignment (AURORA-1751/1540/1541, #196), §5/§8 под факт реализации
Миграция 0011_dbml_v5_24 (vgo_assignment) уже была слита в arm-core main;
docs/model/data-model-v5.24.dbml не существовал — arm-core-dbml-check
красный в регрессии 2026-11-02_2131. Таблица описана по факту ORM/миграции
(dbml_parity.py уже содержал хардкод под это: поля side нет — решение
зафиксировано).

Заодно приведены в соответствие с уже слитым кодом:
- 05-domain-rules.md §5: экран «Пары ВГО» (elimination-totals/pairs) оставлен
  как есть (двойной учёт — известное ограничение, из UI убран), добавлен
  п. 2a — разнесение строк в «Таблице корректировок» (vgo_assignment),
  которое и решает двойной учёт исключением спорной строки до ручного
  решения аналитика;
- §8: корректировка — массивы debit[]/credit[], всегда APPLIED, без
  REVOKED, оптимистичная блокировка по version_no, порог строго > 5 % (R-35);
- OQ-178: открытый вопрос "включительно или нет" (ТЗ/DOC-272613 против
  факта реализации) зафиксирован отдельно от уже закрытого OQ-174;
- analyst/eliminations-vgo.md, dev/api-contract-corrections.md/goodwill.md,
  context/*, Makefile, openspec/config.yaml, repo-templates/arm-core.CLAUDE.md —
  версия 5.23 → 5.24; диаграмма part08 перерисована.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-11-02 23:09:32 +04:00
Andrey Epifancev
e70f589112 DBML v5.23 (elimination_rules_version NOT NULL), §5 без каскада, пары ВГО по версии (#164, AURORA-1536)
Решения владельца 23.10.2026 по ревью arm-core #175:
- consolidation_version.elimination_rules_version — not null, существующим
  версиям номер проставляет миграция по дате создания;
- §5: каскад по остатку отменён (21.10), правила считаются отдельно до
  разнесения строк AURORA-1751; суммы сторон со знаком, при min <= 0 процент
  не считается; отрицательные строки в упаковку не идут (NEGATIVE_AMOUNT);
  группы сортируются по проценту расхождения; выдача — список троек версии
  и детализация тройки;
- OQ-173, OQ-174, OQ-175; страница аналитика; гайд фронта §5.7.2;
  ссылки на модель и диаграммы — v5.23.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 18:34:21 +04:00
8178cafc15 AURORA-1446: убрал chess_cell и kfo_result_line у описания поля comment.object_type 2026-10-22 15:43:00 +03:00
Andrey Epifancev
c43820ef4a model: DBML v5.21 — событие аудита FILE_REPROCESS (#149)
- audit_action: FILE_REPROCESS — повторная обработка файла пользователем
  (раздел PRIMARY_DOCUMENTS). Файл не загружается заново, создаётся новое
  recognition_job (attempt + 1), поэтому FILE_UPLOAD и FILE_REPLACE не подходят.
- 05-domain-rules §9.5 п. 13: правила повторной обработки (решение владельца
  19.10.2026, AURORA-1442) и состав события: object_type = stored_file,
  before — прежнее задание, after — новое, пакет — по событию на файл
  + consolidation_id; п. 6 и §9.4 — ссылки.
- entities-v5.21, диаграмма part09, ссылки на текущую версию модели.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 10:34:25 +04:00
Andrey Epifancev
f7ee6bee55 model: DBML v5.20 — уточнение периода и счёта ОСВ аналитиком (#147)
- document: is_modified, original_values, modified_by, modified_at — правка
  period_year / period_quarter / is_cumulative / osv_account_code на месте,
  распознанное в original_values (первичка не мутируется); копия document не
  создаётся.
- 05-domain-rules §9.5 п. 12: PATCH /documents/{id}/osv-header — проверки,
  сброс подтверждения и снятие привязок к версиям «в работе», аудит
  RECOGNIZED_DATA_EDIT; §3 п. 1 — новая точка отвязки.
- OQ-161 закрыт вариантом (2); флаг CONSOLIDATION_PERIOD_FROM_VERSION
  снимается после правки на экране.
- entities-v5.20, диаграммы, ссылки на текущую версию модели.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 18:57:47 +04:00
Andrey Epifancev
0831c6e033 docs: дубль спеки arm-web удалён (есть в arm-core document-review-ui/primary-files-ui), инструкция пользователя и N57 — вид ОСВ как в 1С, новый скриншот 17 (#143)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 10:07:31 +04:00
Andrey Epifancev
273e3053b8 docs: фронт в arm-core/web — убрать sync-web, шаг 0 снимка, arm-web из гайдов; demo-prepare.sh в docs/scripts (#143)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 09:53:01 +04:00
Andrey Epifancev
47e6372cbe chore(openspec): архив unified-statement-normalization (#116)
Спеки применены: 5 новых capability (arm-core, arm-web, scan-gateway,
statement-normalization, tabular-recognition-service) с Purpose, изменения
quality-checks и recognition-contract. Ссылки в 05-domain-rules, DBML v5.19,
entities, dev/checks.md и dev/qa-statements-v2.md ведут в архив.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 09:25:43 +04:00
Andrey Epifancev
10317ae4d3 docs: итоги исполнения единой нормализации ББ/ОФР (#124, #116)
Решения дорожек (планы 3А, 3Б, 4, 5, 6) перенесены в design.md change'а,
добавлен раздел «Открытые вопросы исполнения»; гайд фронта по API приведён
к arm-core main 35a24e7a; уточнена строка про зависимости в dev/checks.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 22:57:03 +04:00
Andrey Epifancev
aafa656bc0 docs(#122): ревью — Р-44 в design.md, листы-продолжения, подписанный столбец без чисел
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 21:27:53 +04:00
Andrey Epifancev
222d7e08fc docs(#122): числа правее таблицы формы — не колонки сумм (шаг 2, NUMBERS_OUTSIDE_TABLE)
Решение владельца 18.10.2026 (Р-31 плана 4, #116).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 21:17:54 +04:00
Andrey Epifancev
321cfe05e7 openspec(#116): R-5 плана 2 — --in-place только в worktree фичи
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 19:33:13 +04:00
Andrey Epifancev
7194b16471 openspec(#116): sync-statements — режим --in-place, подключение копии к хостам, решения P2-n и R-n плана 2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 19:26:03 +04:00
Andrey Epifancev
bb1b761c46 docs(#116): решения плана 1 (P1-1…P1-31, R-1…R-8 плана 1) в design.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 16:01:49 +04:00
Andrey Epifancev
cb1bf36ba9 docs(#116): тест идентичности копии контракта — ARM_KA_DOCS в scan-gateway, решения плана 0 (P0-1…P0-5, R-1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:20:07 +04:00
Andrey Epifancev
e6f69b5e80 plan(#116): дорожная карта исполнения — планы, волны, выкладка, решения Р-31…Р-43 по планам
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:04:39 +04:00
Andrey Epifancev
1146c0bc3f plan(#116): план 6 — экран на дополненном API ядра
line_code_confidence и okei в типах, header.source.confidence — строка, подсказка кода из
StatementOut.edition_lines, ошибка элемента lines[] у поля строки по detail.line_id
(lineErrorTarget вместо codeTakenKeys), значок документа в панели файлов по
DocumentBrief.issue_counts (rowBadge). Закрыты O-1…O-6, снят В-2.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:02:40 +04:00
Andrey Epifancev
8a7711da5a plan(#116): план 3 — ядро на дополненном API пакета, поля API для фронта, решения Р-34 и Р-35
Пакет: engine.edition (choose_edition) и engine.contract_document_status
(status_input_from_contract) вместо сборки StoredForm ради редакции и status_input_from_v2;
FailedRelation.expected/actual — Decimal | None; O-8 закрыт.
API для плана 6: LineOut.line_code_confidence, StatementHeaderOut.okei, header.source.confidence —
строка Decimal, StatementOut.edition_lines, DocumentBrief.issue_counts, line_id/line_code в detail
ошибок элемента lines[]; P3-19…P3-24; спека arm-core и гайд §5.6.1 дополнены.
Р-34: подтверждение кода не меняет уверенность — буква спеки arm-core, §9.5 п. 9 и гайда приведена;
O-2 закрыт. Р-35: очистка отказывает только при верифицированной версии — P3-12, тесты A4, спека
«Очистка форм» п. 2 и сценарий; O-5 закрыт.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:00:56 +04:00
Andrey Epifancev
c385b7ec42 docs(#116): решения владельца Р-31…Р-43 по открытым вопросам планов реализации
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 12:56:09 +04:00
Andrey Epifancev
37d58a4869 plan(#116): планы 4 и 5 — потребители дополненного API пакета
tabular-parser: столбец кодов и колонки сумм — code_column / amount_columns пакета, метки —
normalize_label / normalize_caption, маркер — is_continuation, контракт — to_contract /
warning_to_contract (statements/contract.py не пишется), XLS_NO_CODEPAGE — предупреждение файла
вместо OSV_XLS_NO_CODEPAGE; scan-gateway: contract_map.py не пишется, form_name из пакета,
WarningCode в make_warning, FailedRelation.expected/actual — Money | None. Закрыты O-1…O-7, O-9
плана 4 и O-2…O-7 плана 5.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 12:56:04 +04:00
Andrey Epifancev
042fc927dc plan(#116): план 1 — API пакета сведён с планами 3, 4, 5
choose_edition, status_input / status_input_from_contract, to_contract / warning_to_contract,
code_column, amount_columns, normalize_label / normalize_caption, is_continuation, WarningCode,
StatementHeader.form_name, FailedRelation.expected/actual — Decimal | None, явные типы Rules.*,
min_codes_continuation в словаре; новая задача 19 (форма контракта), golden — задача 20;
P1-21…P1-31. Код XLS_NO_CODEPAGE (info, файл) — в таблицу спеки «Шаг 8 — предупреждения» и §11.9.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 12:50:43 +04:00
Andrey Epifancev
1701bdb940 plan(#116): план 4 — задача 2 сверена с планом 2 (подготовка хоста — его задача 8, здесь только сверка и --in-place)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 12:34:18 +04:00
Andrey Epifancev
7b99c65373 plan(#116): план 4 — tabular-parser: адаптер Excel шага 1, общий код arm_statements, контракт v2.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 12:33:09 +04:00
Andrey Epifancev
6c413ccc0f openspec(#116): план 5 — подготовка хоста сверена с планом 2 (задача 9, --in-place)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 12:32:52 +04:00
Andrey Epifancev
687eb19f9b openspec(#116): план 5 — scan-gateway: адаптер OCR → arm_statements, контракт результата 2.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 12:32:07 +04:00
Andrey Epifancev
414f8075f9 plan(#116): план 6 — arm-web: экран формы ББ/ОФР и карточка файла по API v5.19
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 12:30:32 +04:00
Andrey Epifancev
87b32a0db3 openspec(#116): план 2 — sync-statements и statements-check в docs, подключение копии arm_statements к хостам
Скрипт docs/scripts/sync-statements.sh (--check 0/10/20/2, --in-place, --dry-run, обычный режим
с worktree/issue/PR), помощник statements_check.py, тест на синтетических репозиториях; три
bounded PR подключения копии в arm-core, tabular-parser, scan-gateway. Решения P2-1…P2-21,
открытые O-1…O-4; закрыты O-1…O-4 плана 1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 12:29:02 +04:00
Andrey Epifancev
0b7d691735 openspec(#116): план 3 — вызовы пакета приведены к публичному API плана 1 (O-8)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 12:16:21 +04:00
Andrey Epifancev
f84e89288b openspec(#116): план 1 — resolve_relative и порядок редакций в публичном API, сверка с планом 3 (O-5)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 12:11:56 +04:00
Andrey Epifancev
14dcb0fbee openspec(#116): план 1 — пакет общего кода arm_statements (репозиторий arm-statements), публичный API
19 задач: каркас и make check, типы и сериализация, словари и загрузчик, разборы текста/кода/дат/сумм, шапка,
шаги 2–8, функция статуса, конвейер кандидата, точка входа пересчёта, golden на обезличенных входах aep_3, 1С и НПЗ.
Решения автора плана P1-1…P1-20, открытые вопросы O-1…O-4.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 12:11:11 +04:00
Andrey Epifancev
7436d2efc0 plan(#116): план 3 — arm-core: хранение v5.19, правка формы, приём контракта 2.0
Две части — два PR в RSHB/arm-core: часть А (A0–A13) не зависит от пакета
arm_statements, часть Б (B0–B6) — после плана 2; интерфейс-заглушка пакета,
решения P3-1…P3-18, открытые вопросы O-1…O-10.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 12:03:51 +04:00