297 Commits

Author SHA1 Message Date
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
e1760c08f6 fix(osv): вложенность по суммам только без названных групп, без ИНН и при одном отступе; сдвиги складываются (AURORA-1858, #78, ревью)
C-1: nest_by_sums включается из osv.py, если схема шапки не называет группы после счёта; строка с ИНН не вкладывается
и не становится родителем; прямые дети родителя должны быть на одном отступе. M-1: сдвиги складываются.
M-2: код без разделителя сегментов не вкладывается. M-3: строка закрытия — только с ненулевыми оборотами.
M-4: общий жадный перебор _greedy_ends для strategy_sums и вложенности, граница NEST_SCAN_LIMIT под тестом.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 10:43:39 +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
aep
c77e496f59 Merge pull request 'AURORA-1714: счёт шапки «Счет Поставщика | 60*» и коды контрагентов в ОСВ' (#74) from feat/71-osv-account-marker into main 2026-10-27 09:56:26 +03: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
aep
b128ce2bd1 Merge pull request 'ОСВ: «Итого» свёрнута при развёрнутом корне сверяется по нетто' (#76) from feat/73-osv-expanded-total into main 2026-10-27 09:28:29 +03:00
Andrey Epifancev
53165a07c0 Merge remote-tracking branch 'origin/main' into feat/73-osv-expanded-total 2026-10-27 10:22:20 +04:00
aep
79725d6e20 Merge pull request 'AURORA-1724: одно предупреждение на неизвестную метку «Показатели»' (#75) from feat/72-osv-indicator-warnings into main 2026-10-27 09:21:59 +03:00
Andrey Epifancev
266d4e8a3a test(osv): ожидания для синтетики s45 (#71)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 01:28:47 +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
aep
242e11681a Merge pull request 'chore(arm_statements): копия arm-statements@25b2bb8 (#68)' (#69) from feat/68-statements-sync-25b2bb8 into main 2026-10-22 15:47:47 +03:00
Andrey Epifancev
7c098dbbf4 chore(arm_statements): копия arm-statements@25b2bb8 (#68)
Копия api/arm_statements: 3390f92..25b2bb8 (1 коммитов), скрипт docs/scripts/sync-statements.sh.
Коммиты arm-statements:
- 72e2e72 fix(#8): шаг 2 — нумерация со сбоем OCR под заголовком, повтор шапки со склеенной нумерацией (AURORA-1517)

statements-check tabular-parser: 0 — копия синхронна с arm-statements@origin/main (25b2bb8)

Co-Authored-By: sync-statements.sh <noreply@aepif.ru>
2026-10-22 16:45:59 +04:00
aep
6c81199a1a Merge pull request 'ОСВ: имена частей xlsx без учёта регистра, «Кол-во, <единица>» и «Кол. доп.» (#66, AURORA-1707, AURORA-1709)' (#67) from feat/66-osv-quantity-sharedstrings into main 2026-10-20 12:09:04 +03: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
2a6a49811e ОСВ: «Кол-во, <единица>» и «Кол. доп.» — строки количества (#66, AURORA-1709)
Словарь data_types.yaml: row допускает единицу измерения после запятой
(«Кол-во, га» в ОСВ 43.1), indicator_column — «Кол. доп.» в колонке
«Показатели» (сч. 11). Код не меняется.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 13:06:35 +04:00
Andrey Epifancev
73f9e9c2d8 xlsx: имена частей без учёта регистра, как в Excel (#66, AURORA-1707)
Часть, отличающаяся от ссылки [Content_Types].xml или *.rels только регистром
(xl/SharedStrings.xml при ссылке на sharedStrings.xml), до openpyxl
переименовывается по ссылке: раньше такая книга была UNREADABLE, а лист с
другим регистром имени openpyxl терял молча. Две части под одну ссылку не
угадываются.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 13:06:35 +04:00
aep
40287e1a31 Merge pull request 'Архив OpenSpec: osv-flat-form (#59)' (#64) from chore/59-archive-osv-flat-form into main 2026-10-19 13:22:36 +03: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
aep
ced16bc8aa Merge pull request 'Плоская форма ОСВ 1С: счёт из шапки, «Итого развернутое», плоский список, контрагенты расчётных счетов (#59)' (#63) from feat/59-osv-flat-form into main 2026-10-19 13:21:53 +03:00
Andrey Epifancev
d6d1c7171c fix(osv): показатели итогового блока — шаг через НУ под «Итого развернутое», пропуск тождества (R-21, #59)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 13:46:34 +04:00
Andrey Epifancev
8311808472 fix(osv): интеграция с треком A после rebase — спека, golden-счётчик, тест стыка показателей и второй «Итого» (#59)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 13:30:34 +04:00
Andrey Epifancev
7cd71677da docs(osv-flat-form): рулинги R-17…R-19, актуализация design, README, спеки (#59)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 13:20:00 +04:00
Andrey Epifancev
a6cd375306 fix(osv): «Организация» не вид субконто, валюта не контрагент, тождество вторых итогов (#59)
I-1 (R-17): синоним COUNTERPARTY только «Организации» (^организации\b).
I-2 (R-18): правило расчётных счетов не применяется к строкам, известным словарю как не-контрагенты (валюта, «В валюте»).
I-4 (R-19): тождество у второй итоговой строки пропускается только без оборотов и при наличии другой «Итого».
M-1, M-5, M-6, M-7 (вымышленное ФИО ИП в синтетике), M-9.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 13:19:39 +04:00
Andrey Epifancev
835083ca4d fix(osv): вторые итоговые строки («Итого развернутое») вне тождества строки, R-11 отменён R-16 (#59)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 13:19:18 +04:00
Andrey Epifancev
69564ffcbd docs: README, CLAUDE.md и change osv-flat-form (#59)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 13:19:18 +04:00
Andrey Epifancev
cdbe23b9b6 feat(osv): контрагенты расчётных счетов без названия вида — по плану счетов (#59)
counterparty_accounts в osv_groups.yaml (R-9: без 71 и 73), is_counterparty_account,
OSV_ROWS по счёту; формулировка проверки «Итого» без корня ACCOUNT (T4.1);
ожидания s40–s44 в синтетике (T1.1/T1.2), тест испорченной «Итого» плоского списка (T4.2).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 13:19:01 +04:00
Andrey Epifancev
71c4c93db2 feat(osv): стратегия header_account — плоский список под счётом шапки (#59)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 13:18:23 +04:00
Andrey Epifancev
774141588e fix(osv): «Итого развернутое» перед «Итого» — итоговая строка, сверка по основной «Итого» (#59)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 13:18:06 +04:00
Andrey Epifancev
8dd8a50868 fix(osv): метка валюты без двоеточия не становится видом субконто (#59)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 13:17:34 +04:00
Andrey Epifancev
883c6fb628 fix(osv): строка вида субконто не добавляет метки шапки и ACCOUNT в схему (#59)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 13:17:34 +04:00
Andrey Epifancev
29f264d842 feat(osv): код счёта «по счету: X», строка вида субконто, «План счетов» в шапке (#59)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 13:17:34 +04:00
Andrey Epifancev
e625409818 test: синтетика s40–s44 — плоская форма ОСВ 1С (#59)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 13:17:34 +04:00
Andrey Epifancev
ecb23475db docs(plan): учёт R-8…R-10 в плане osv-flat-form (#59)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 13:17:05 +04:00
Andrey Epifancev
23a5b7b419 docs(openspec): рулинги R-8…R-10 change osv-flat-form (#59)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 13:17:05 +04:00
Andrey Epifancev
32b8ad76ec docs(openspec): change osv-flat-form и план — плоская форма ОСВ 1С (#59)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 13:17:05 +04:00
aep
0c1236efed Merge pull request 'Архив OpenSpec: osv-indicator-column (#58)' (#61) from chore/58-archive-osv-indicator-column into main 2026-10-19 12:06:00 +03: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
aep
b70d2866e8 Merge pull request 'Строки-показатели ОСВ: колонка «Показатели», «В валюте», BU по умолчанию (#58)' (#60) from feat/58-osv-indicators into main 2026-10-19 12:04:57 +03:00
Andrey Epifancev
1262bde706 checks.py: перенос строки докстринга (E501, O-1)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 12:55:56 +04:00
Andrey Epifancev
ad17212ba7 design: O-1 fixed 1d2a46f
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 12:52:19 +04:00
Andrey Epifancev
1d2a46f3e7 Счёт 90 в списке счетов без сальдо по аналитике (OQ-132, O-1, #58)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 12:52:03 +04:00
Andrey Epifancev
d6dd341003 Правки итогового ревью: спека, предупреждение, README, design (#58)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 12:47:49 +04:00
Andrey Epifancev
480db4f3aa Документация: строки-показатели ОСВ (#58)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 12:26:03 +04:00
Andrey Epifancev
598d2c8fae Умолчание БУ по строкам вывода, без реэкспорта row_data_type (#58)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 12:17:18 +04:00
Andrey Epifancev
8924dd13a6 Классификация и проверки по признаку строки-показателя, BU по умолчанию (#58)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 12:09:05 +04:00