Строки-показатели ОСВ: колонка «Показатели», «В валюте», BU по умолчанию (#58) #60
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/58-osv-indicators"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes RSHB/arm-tabular-parser#58. Jira: AURORA-1613, AURORA-1661 (валютная часть). Парные PR: arm-ka-fixtures (синтетика s33–s36 и golden), arm-ka-docs (§1.3/§1.4, OQ-132, 06-test-data §7). Порядок слияния: fixtures → tabular-parser → docs; трек A раньше трека B (#59).
Что сделано
Строки ОСВ, которые не являются данными БУ (метки колонки «Показатели»: НУ, Кол., Вал., ПР, ВР; строка «В валюте»), больше не ломают дерево и проверки строк БУ и не попадают в свод. Признак
indicator— флаг строки (неdata_type), считается при сборе строк (indicators.py). Показатель привязан к предыдущей строке данных. Вид данных строки: метка колонки → шапка → иначе BU с предупреждением (header.data_typeостаётсяnull). Счёт 90 добавлен в список OQ-132 (решение владельца 19.10.2026). Контракт и DBML не менялись. Спека:openspec/changes/osv-indicator-column/.Проверки
make check: 2936 passed;make check-full: rc=0 (после последнего коммита);openspec validate --strict: valid.done; 7983e91b осталсяneeds_check(O-3).Rulings I made
656486aи docs 87cdf8b несут «Opus 5.5»; не переписывались).make golden-update); diff — одна строка предупреждения.Таблица находок
^вал\.?$допускает «Вал» без точки43653f1ef07ced/8924dd1is_indicator_totalистинна для любой не-БУ меткиd6dd341(как I-2)trivialпосле фильтрации показателей (лист с одной строкой данных + «Вал.»/«Кол.»)defaultedпоbody, а неglue.rows598d2c8d6dd341row_data_typeиз classify598d2c8_labelled_sheet; нет теста на склеенную ИНН-строку без меткиd6dd341d6dd341(golden s34 в fixtures)d6dd341d6dd341d6dd341d6dd341_is_unlabelled_totalне пропускаетindicator_col: лист с колонкой «Показатели» и «Итого» без подписи → needs_check (как на main)656486aи docs 87cdf8b1d2a46f(решение владельца 19.10.2026)Deferred
T1.1, T2.2, T3.1, T4.1, T4.3, T5.1, T5.2, T6.4, T6.5, M-5, O-2, O-3 — в follow-up issue при закрытии.
Вопрос владельцу
O-3: файл 7983e91b (счёт 90) остался needs_check из-за одного нарушения «сумма детей = родитель» на корне; разбирать ли в рамках этого PR или отдельной issue?
Прогноз конфликтов с треком B (#59, feat/59-osv-flat-form)
Пробное слияние: конфликты в checks.py, classify.py, osv.py, generate.py, test_synthetic_files.py, test_classify.py, test_rules.py; hierarchy.py и osv_headers.yaml сливаются чисто.
checks.py _total: фильтрnot item.indicatorприменять первым, затем secondary, затем fallback на первую не-показательную TOTAL. Сигнатуры_total_warningиtotal_matches_rootполучаютsecondary.classify.py _classify_row: в версии Bdoc_data_typeдолжен статьown = item.label_data_type or doc_data_type, иначе метка «БУ» перестанет перебивать шапку.ClassifiedRowи его конструктор: сохранить оба поля,indicatorиcounterparty_by_account.osv.py:levels_with_indicators(body, total_row, deadline, header_account=...)потребует нового ключевого параметра вindicators.py, передаваемого вresolve_levels._leading_totalsтрека B: просто добавитьor is_indicator_totalнельзя — это втянет НУ-строку последней строки данных. Шагать через показатели можно только когда выше них стоит вторичная итоговая строка.test_generate.pyтрека B ожидает[*range(1,33), *range(40,45)]→range(1,37); golden s40–s44 после слияния обновить (make golden-update: BU по умолчанию и предупреждение); число golden в CLAUDE.md станет 136.🤖 Generated with Claude Code