18 Commits

Author SHA1 Message Date
Andrey Epifancev
a1997f5d90 openspec: архив osv-other-systems (#81)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:33:30 +04:00
Andrey Epifancev
133b31a1f3 fix(osv): нетто-признак только цепочкой нетто-строк, непрерывность периодов, спека и CLAUDE.md (AURORA-1863, AURORA-1823, #78, ревью)
I-2: в netted попадает только строка, сама сошедшаяся с детьми лишь по нетто; сошедшаяся по колонкам признак не
передаёт. I-3: сальдо конца периода = сальдо начала следующего (по колонкам либо по нетто), разрыв — нарушение.
M-6: сценарии спеки (защиты вложения по суммам, цепочка нетто-строк, непрерывность периодов); CLAUDE.md и докстринг
checks.py ссылаются на решения владельца 28.10.2026.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 10:56:18 +04:00
Andrey Epifancev
ca7f64c3ef fix(osv): иерархия по отступам — подуровень счёта, строка закрытия, вложенность по суммам (AURORA-1858, #78)
В strategy_indent: счёт, чей код продолжает код соседа того же отступа (68.01 → 68.01.1), — ребёнок;
безымянная строка с оборотами счёта сразу за ним — его строка закрытия; аналитика на одном отступе
вкладывается по суммам только внутри родителя с нарушением и только если он после этого сходится.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 01:03:02 +04:00
Andrey Epifancev
e01f218138 fix(osv): строки «Период» сверяются цепочкой сальдо, а не суммой (AURORA-1823, #78)
period_groups в osv_groups.yaml, признак is_period у ClassifiedRow; родитель, все дети которого
периоды: обороты = Σ, начало = начало первого, конец = конец последнего. НКЗ лист 58 убран
из манифеста ожидаемых needs_check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 00:44:24 +04:00
Andrey Epifancev
6117201b49 fix(osv): развёрнутый родитель над свёрнутым в нетто ребёнком сверяется по нетто (AURORA-1863, #78)
Узкий вариант: нетто сальдо допустимо, если среди прямых детей есть нетто-ребёнок
(прошёл сверку только по нетто либо имеет такого потомка); обороты — по колонкам.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 00:33:20 +04:00
Andrey Epifancev
b9a8c1cf2a Merge remote-tracking branch 'origin/main' into feat/71-osv-account-marker 2026-10-27 10:43:21 +04:00
Andrey Epifancev
5be03db68d feat(osv): блоки субсчетов с кодами контрагентов, «ИТОГ по …», «За период» с диапазоном «..» (AURORA-1714, #71)
Решения владельца 27.10.2026 (docs #172): субсчёт с 3 цифрами в сегменте под счётом шапки, код контрагента + название +
договоры (стратегия code_blocks), суммы субсчёта из «ИТОГ по …», «ИТОГ» — итог листа, «Поставщики» — вид субконто
в таблице, метка «За период» со значением в соседней ячейке, диапазон «01.01.25..30.06.25», год из двух цифр.
Синтетика s45 (период, организация) и s46 (блоки), спека osv-parsing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 10:38:54 +04:00
Andrey Epifancev
53165a07c0 Merge remote-tracking branch 'origin/main' into feat/73-osv-expanded-total 2026-10-27 10:22:20 +04:00
Andrey Epifancev
99114508f7 ОСВ: «Итого» свёрнута при развёрнутом корне сверяется по нетто (AURORA-1708, #73)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 01:18:26 +04:00
Andrey Epifancev
c915fd143c ОСВ: одно предупреждение на неизвестную метку «Показатели» вместо одного на строку (#72, AURORA-1724)
Нераспознанная метка в колонке «Показатели» давала OSV_ROWS на каждую строку (2 128 одинаковых
на 11.xlsx). Теперь построчные OSV_ROWS «строка N: <текст>» с одинаковым текстом сводятся в одно:
«метка «X» в колонке «Показатели» не распознана — K строк (первые 20 номеров, …) не участвуют в
проверках»; прочие одинаковые построчные — «<текст> — строк: K (…)». Одиночное предупреждение
не меняется. Коды и контракт не тронуты. Спека osv-parsing обновлена.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 01:17:22 +04:00
Andrey Epifancev
ef14747f49 fix(osv): счёт шапки «Счет Поставщика | 60*» и голые коды контрагентов (AURORA-1714, #71)
Метки «Счет Поставщика»/«Счет Клиента» добавлены в header_markers.account; код счёта читается из соседней ячейки строки,
«*» отбрасывается. При известном счёте шапки голый числовой код, не совпадающий с ним, не считается счётом.
Синтетика s45, тест на книге openpyxl, сценарий в спеке osv-parsing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 01:16:21 +04:00
Andrey Epifancev
1ad100b79d Документация: регистр имён частей xlsx и метки количества (#66)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 13:06:35 +04:00
Andrey Epifancev
e5f4918176 Архив OpenSpec: osv-flat-form (#59)
Change перенесён в openspec/changes/archive/2026-10-19-osv-flat-form,
дельта влита в openspec/specs/osv-parsing/spec.md (шапка «по счету: X»,
стратегия header_account, «Итого развернутое» в любом порядке,
контрагенты расчётных счетов).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 14:22:29 +04:00
Andrey Epifancev
ece851b0ed Архив OpenSpec: osv-indicator-column (#58)
Change перенесён в openspec/changes/archive/2026-10-19-osv-indicator-column,
дельта влита в openspec/specs/osv-parsing/spec.md (строки-показатели, колонка
«Показатели», «В валюте», BU по умолчанию, счёт 90 в OQ-132).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 13:05:49 +04:00
Andrey Epifancev
acaa5021ce chore(openspec): архив contract-identity-window и unified-normalization-tp (#50, #54)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 09:26:49 +04:00
Andrey Epifancev
64f836d5a6 openspec: архив osv-inn-rows-layouts (#35)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 17:25:43 +04:00
Andrey Epifancev
49400682bc feat(osv): счета без сальдо по аналитике (91, 99) вне тождества строки (OQ-132, #11 п. 2)
У 91 и 99 строки аналитики несут только обороты, сальдо закрыто на субсчёт закрытия
(91.09), поэтому каждая ОСВ 91 получала needs_check. Список счетов — данные
api/rules/osv_checks.yaml (accounts_without_analytic_balance: 91, 99; 90 не входит).

- тождество строки на таких счетах не проверяется;
- «сумма детей = родитель» сохраняется: обороты всегда, сальдо — только у родителя
  с дочерними субсчетами (корень -> субсчета); у родителя с одной аналитикой сальдо
  не сверяется;
- «Итого» сверяется как обычно;
- строка относится к счёту списка по коду ближайшего счёта ветки (91, 91.01; не 910).

Тесты: unit checks/rules, манифест osv_dkb_expectations (две ОСВ 91 теперь done).
README, CLAUDE.md, openspec/specs/osv-parsing, api/rules/README.md обновлены.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-08 00:18:36 +04:00
Andrey Epifancev
187106c0de openspec: архив change slice-2a-osv-parser (2026-10-05), спека osv-parsing, Purpose tabular-recognition-service → v1.1 и реальный парсер
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 20:22:56 +04:00