AURORA-1734, AURORA-1735: разрез таблицы по смене формы и редкий столбец, 0.1.5 #6

Merged
aep merged 5 commits from feat/5-form-split into main 2026-11-07 09:20:45 +03:00
Owner

Closes #5. Jira AURORA-1734 (ББ и ОФР одной таблицей ИС, АК-ЮЛ), AURORA-1735 (лишний столбец «31», Калтан). Решения владельца 06.11.2026.

Что

  • split_by_form(candidate, rules) — новая публичная функция: сегмент со своей шапкой, первые min_codes кодов которого — другой формы, начинает новую часть (locator с хвостом ;form:<k>, type_hint = None, из предупреждений адаптера — только XLSB_NO_FORMATS). Без смены формы — тот же объект.
  • Редкий столбец с неразобранной подписью между колонками периодов (≤ 1 числа; ≥ 3 у каждой колонки периода; в строке его числа у всех колонок периода есть числа) — не колонка сумм, числа → NUMBERS_OUTSIDE_TABLE с текстом «числа вне колонок формы не учитываются».
  • 0.1.5, CHANGELOG, план plans/2026-11-07-form-split.md.

Хостам: вызвать split_by_form перед normalize_candidate (scan-gateway, tabular-parser) — после merge AURORA-1677; без вызова поведение прежнее.

Проверка

  • make check: 303 passed, ruff/mypy чистые.
  • Реальные ответы ИС (вручную, адаптер scan-gateway): АК-ЮЛ → ББ (без 2xxx) + ОФР ;form:1 (колонки 5/6 без даты — подписи разорваны ИС, needs_check); Калтан ОФР → колонки 4 и 6, row:21 в info; TYPE_CONFLICT по метке таблицы ИС остался (non-goal).
  • Финальное ревью (opus): 2 Important исправлены (I-1, I-2), 7 Minor отложены.

Спека

arm-ka-docs: change statement-form-split (ветка feat/5-form-split).

Rulings I made

  • R-1: тип сегмента для разреза — по первым min_codes кодам, не по большинству (строки ОФР без шапки после пассива ББ иначе унесли бы пассив в ОФР).
  • R-2: помощник segments.split_segments вместо приватных функций.
  • R-3: test_public_api дополнен split_by_form.
  • I-1: редкий столбец сужен — число должно быть лишним (у колонок периода в той же строке есть числа), иначе сдвинутое значение терялось молча.
  • I-2: частям переносится только XLSB_NO_FORMATS (NUMBER_FORMAT_UNPARSED перечисляет ячейки другой части).
  • Части DISCLOSURE (сегмент 3xxx–6xxx со своей шапкой) — отдельный документ без строк, по букве спеки — вопрос владельцу.

Deferred

Маркер Суть
M-1 Тип первой части по большинству кодов, режущих — по первым min_codes
M-2 Строка периодов над строкой «Коды» остаётся в предыдущей части
M-3 normalize() не вызывает split_by_form
M-4 locator части Excel перечисляет листы первой части
M-5 Повторный разбор сегментов в split_by_form; дубль _dated_counts / _last_dated_column
M-6 merge_outside_table узнаёт «вне колонок» по префиксу текста
M-7 Пробелы тестов: разрез посреди листа, разрез на DISCLOSURE, мусорная подпись между периодами

🤖 Generated with Claude Code

Closes #5. Jira AURORA-1734 (ББ и ОФР одной таблицей ИС, АК-ЮЛ), AURORA-1735 (лишний столбец «31», Калтан). Решения владельца 06.11.2026. ## Что - `split_by_form(candidate, rules)` — новая публичная функция: сегмент со своей шапкой, первые `min_codes` кодов которого — другой формы, начинает новую часть (`locator` с хвостом `;form:<k>`, `type_hint = None`, из предупреждений адаптера — только `XLSB_NO_FORMATS`). Без смены формы — тот же объект. - Редкий столбец с неразобранной подписью между колонками периодов (≤ 1 числа; ≥ 3 у каждой колонки периода; в строке его числа у всех колонок периода есть числа) — не колонка сумм, числа → `NUMBERS_OUTSIDE_TABLE` с текстом «числа вне колонок формы не учитываются». - 0.1.5, CHANGELOG, план `plans/2026-11-07-form-split.md`. Хостам: вызвать `split_by_form` перед `normalize_candidate` (scan-gateway, tabular-parser) — после merge AURORA-1677; без вызова поведение прежнее. ## Проверка - `make check`: 303 passed, ruff/mypy чистые. - Реальные ответы ИС (вручную, адаптер scan-gateway): АК-ЮЛ → ББ (без 2xxx) + ОФР `;form:1` (колонки 5/6 без даты — подписи разорваны ИС, needs_check); Калтан ОФР → колонки 4 и 6, `row:21` в info; `TYPE_CONFLICT` по метке таблицы ИС остался (non-goal). - Финальное ревью (opus): 2 Important исправлены (I-1, I-2), 7 Minor отложены. ## Спека arm-ka-docs: change `statement-form-split` (ветка feat/5-form-split). ## Rulings I made - R-1: тип сегмента для разреза — по первым `min_codes` кодам, не по большинству (строки ОФР без шапки после пассива ББ иначе унесли бы пассив в ОФР). - R-2: помощник `segments.split_segments` вместо приватных функций. - R-3: `test_public_api` дополнен `split_by_form`. - I-1: редкий столбец сужен — число должно быть лишним (у колонок периода в той же строке есть числа), иначе сдвинутое значение терялось молча. - I-2: частям переносится только `XLSB_NO_FORMATS` (`NUMBER_FORMAT_UNPARSED` перечисляет ячейки другой части). - Части DISCLOSURE (сегмент 3xxx–6xxx со своей шапкой) — отдельный документ без строк, по букве спеки — вопрос владельцу. ## Deferred | Маркер | Суть | |---|---| | M-1 | Тип первой части по большинству кодов, режущих — по первым `min_codes` | | M-2 | Строка периодов над строкой «Коды» остаётся в предыдущей части | | M-3 | `normalize()` не вызывает `split_by_form` | | M-4 | `locator` части Excel перечисляет листы первой части | | M-5 | Повторный разбор сегментов в `split_by_form`; дубль `_dated_counts` / `_last_dated_column` | | M-6 | `merge_outside_table` узнаёт «вне колонок» по префиксу текста | | M-7 | Пробелы тестов: разрез посреди листа, разрез на DISCLOSURE, мусорная подпись между периодами | 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 5 commits 2026-11-07 08:11:31 +03:00
aep merged commit 3de6eebd09 into main 2026-11-07 09:20:45 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/pylib_ai_arm_statements#6
No description provided.