97 Commits

Author SHA1 Message Date
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
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
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
Andrey Epifancev
122037eb1d openspec: архив nats-env-config (#80)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 13:56:38 +04:00
Andrey Epifancev
3a3167441d qa-guide: симптом разъехавшихся subject'ов уточнён (T8.1); design R-15
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 13:40:35 +04:00
Andrey Epifancev
31d3742dd5 design nats-env-config: R-14 — ветки перебазированы на main
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 13:39:22 +04:00
Andrey Epifancev
62d7fd780e openspec: nats-env-config — решения R-8…R-13 в design.md (#80)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 13:38:50 +04:00
Andrey Epifancev
32fa327621 docs: правки по финальному ревью nats-env-config (M-1, M-2, M-5)
- dev/README.md: примеры /healthcheck дополнены subjects по сервисам
- design.md (решение 7) и dev/README.md: уточнено, что запросы в тестах ядра идут на умолчательные subject'ы
- repo-templates: имена files.* помечены как умолчания

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 13:38:50 +04:00
Andrey Epifancev
0103c6fea7 openspec: nats-env-config — отмечены пункты 1.x и 2.x tasks.md (#80)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 13:38:50 +04:00
Andrey Epifancev
4d9e81c04b docs: subject'ы и JWT NATS по окружению — архитектура, окружение, OQ-83 (#80)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 13:38:50 +04:00
Andrey Epifancev
da9b9f66cf openspec: change nats-env-config — subject'ы и JWT NATS по окружению из OpenBao
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 13:38:50 +04:00
Andrey Epifancev
2bb0e999c0 openspec: архив сквозного change console-files (#90)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-10 10:06:16 +04:00
Andrey Epifancev
40b3b92714 docs: правки по финальному ревью — рабочий стол, права, формулировки (#90)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 23:44:04 +04:00
Andrey Epifancev
9ba8d29033 docs: QA-гайд, OQ-160 (целевая модель версий), план срезов — файлы консолидации (#90)
QA-гайд переведён на маршрут консоли (POST /consolidations/{cid}/legal-entities/{le}/files),
OQ-159 закрыт, OQ-160 добавлен, Срез 2d дополнен, решения R-9…R-14 в design.md,
config.yaml переведён на DBML v5.18, формулировка SUPERSEDED выровнена.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 23:35:53 +04:00
Andrey Epifancev
a329e5e9fb openspec: change console-files — файлы в контексте консолидации (#90)
Спека по решениям владельца 09.10.2026: stored_file.consolidation_id (период, не версия),
маршруты /consolidations/{cid}/legal-entities/{le}/files, рабочий стол = DESK ∪ BOUND,
заморозка через consolidation_document и ЕХ. Дочерние change'и — arm-core и arm-web.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 22:36:12 +04:00
Andrey Epifancev
afe40c70da openspec: архив nats-files-subjects (#74)
Change слит PR #77; спеки обновлены (subject'ы files.tabular_uploaded,
files.img_uploaded, files.tabular_parsed).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-08 23:50:10 +04:00
Andrey Epifancev
0f1686498e openspec: nats-files-subjects — дочерние change'и сервисов готовы (#74)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-08 23:46:26 +04:00
Andrey Epifancev
50e588b6bd contracts: subject'ы NATS как в старом АРМ — files.*_uploaded, files.tabular_parsed (#74)
Решение владельца 08.10.2026: запросы — files.tabular_uploaded / files.img_uploaded
(было recognition.{tabular|image}.request), ack и результаты обоих сервисов —
files.tabular_parsed (было recognition.result); files.img_parsed не используется,
старый АРМ гасится. Тела сообщений, Nats-Msg-Id, queue group'ы и schema_version
не меняются.

Change nats-files-subjects: дельта recognition-contract (3 требования), Purpose
спеки; описания subject'ов в contracts/*.schema.json; 03-architecture (схема,
таблица потоков, NATS платформы), 09-delivery-plan, dev/README, dev/qa-guide,
repo-templates. DBML v5.17 не поднимается (R-3, deferred).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-08 23:34:01 +04:00
Andrey Epifancev
d643453dee Устаревшая документация: модель v5.17, диаграммы по частям, сделанное — в сделанное (#60)
- Ссылки на источник истины v5.13/v5.14/v5.15 → v5.17: openspec/config.yaml, KICKOFF-PROMPT, 00-workspace-layout,
  08-source-docs-index, заголовок 05-domain-rules, dev/checks.md; спека quality-checks — без привязки к версии
  (путь — переменная DBML Makefile).
- Диаграммы model/diagrams/part01…09 перерисованы по v5.17 (были v5.12): scripts/gen_model_diagrams.py
  (разбиение DBML на части + dbml-renderer + resvg через npx, версии закреплены), цель make diagrams;
  описание в 04-data-model-guide, 06-test-data, 08-source-docs-index.
- dev/frontend-api-guide.md: КПП (arm-core #52) и DB_SCHEMA (#53) — из §11 в §1, КПП в маршрутах §5.2/§5.3,
  схеме §5.8 и каталоге ошибок §9 (сверено с кодом 99669cd).
- Ссылки на заархивированные change'и (dev/README, dev/checks, api-contract-slice-3b/4), путь к v4 DBML в индексе.
- 09-delivery-plan: статусы Срезов 0, 2d, 3b, 4.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-07 23:35:44 +04:00
Andrey Epifancev
42af562635 openspec: архив документного change slice-2b-statement-parser (2026-10-06), recognition-contract «Файл результата» v1.2
Refs #26

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-06 22:41:10 +04:00
Andrey Epifancev
5b34868784 docs(2b): OQ-143 реализовано, st07, текст пропуска листов, tasks.md по факту (O-9, M-2, M-4)
Refs #26

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-06 21:58:24 +04:00
Andrey Epifancev
94846cbd4c openspec: сквозная спека Среза 2b — контракт результата v1.2, §12, OQ
Proposal, design (состав v1.2: DISCLOSURE, statementDocument.checks, границы периода ОСВ; примеры; порядок
раскатки потребители → производитель), дельта recognition-contract «Файл результата» v1.2, tasks.

Refs #26

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
2026-10-06 13:21:30 +04:00
Andrey Epifancev
dbc784abc5 openspec: архив документного change slice-4-consolidation (2026-10-06)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 10:39:54 +04:00
Andrey Epifancev
9246a61439 docs(slice-4): правила §2/§3/§9/§10 по факту, OQ, контракт API для фронта, QA-гайд
- 05-domain-rules: §2 (выбор источников, склейка, пробелы, Q1-эквивалентность), §3 (явная привязка, дорезолв, match_kind,
  кандидаты, ручное сопоставление), §9.1 (переходы Среза 4), §9.3, §9.5 (отвязка при автозамене, OQ-110), §10 (политика
  «в работе + своя блокировка»)
- 03-architecture: консолидации, чистый домен свода, порядок блокировок
- 07-open-questions: закрыты OQ-03, OQ-19, OQ-110 (Срез 4), OQ-40 принят; добавлены OQ-118…OQ-129
- 09-delivery-plan, 10-user-journey: Срез 4 по факту, эндпоинты у шагов 2.1–2.6 и 3.1
- dev/api-contract-slice-4.md: маршруты, схемы, коды ошибок, нюансы для фронта
- dev/qa-guide: раздел 7 «Консолидация через API»

Co-Authored-By: Claude Sonnet <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 08:02:50 +04:00
Andrey Epifancev
ab564c1ab0 docs: DBML v5.16, entities-v5.16, guide
DBML v5.16 (Срез 4): enum counterparty_match_kind и osv_entry.counterparty_match_kind; уточнение семантики
consolidation_document (точки привязки/отвязки) и consolidation_lock (без истечения, OQ-119). entities-v5.16.md,
04-data-model-guide (DECISION-5: способ сопоставления хранится, пробелы и свод — нет), repo-templates -> v5.16,
tasks.md change'а: пункт 1 выполнен.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 03:23:03 +04:00
Andrey Epifancev
92b46c9dbe spec(slice-4): документный OpenSpec change — DBML v5.16, правила §2/§3/§9/§10 по факту, OQ-03/19/110 и новые OQ
Proposal, design и tasks сквозного change'а Среза 4: enum counterparty_match_kind и колонка osv_entry.counterparty_match_kind,
правила приведения периодов (ключ, пробел), явная привязка документов, статусы Среза 4, контракт API для фронта.

Refs RSHB/arm-ka-docs#19

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 02:52:32 +04:00