arm-tabular-parser/api/rules/statement_headers.yaml
Andrey Epifancev aad6310b97 fix(statements/lines): T10.I1+I2 — порог дробных значений в словаре, тесты границ
Перенесено FRACTIONAL_SHARE в api/rules/statement_headers.yaml как fractional_share_percent (1..100),
добавлена валидация в StatementHeaderRules, целочисленное сравнение: fractional * 100 >= numeric * percent.
Добавлены тесты границ: ровно 10% (2 из 20), ниже 10% (1 из 12), без падения при нулевых числовых значениях.
Проверено RED мутацией: смена >= на > → падение теста граничного условия.

Refs #14

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
2026-10-06 17:12:38 +04:00

94 lines
4.1 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Словарь форм ББ/ОФР (05-domain-rules.md §12): заголовки форм и ОКУД, маркер продолжения, подписи колонок, метки шапки.
# Правила записи — как в osv_headers.yaml: паттерн ищется в НОРМАЛИЗОВАННОМ тексте (нижний регистр, «е» вместо «ё»,
# дефисы/тире/переносы -> пробел), без учёта регистра; новый синоним = строка в YAML.
# Заголовок формы -> тип документа. Титул «Бухгалтерская отчетность» (НПЗ) типом не является и здесь не перечислен.
form_titles:
BALANCE:
- 'бухгалтерский\s+баланс'
INCOME:
- 'отчет\s+о\s+финансовых\s+результатах'
- 'отчет\s+о\s+прибылях\s+и\s+убытках'
DISCLOSURE:
- 'пояснени\w*\s+к\s+бухгалтерскому\s+балансу'
- '^расшифровк'
- 'отчет\s+об\s+изменениях\s+капитала'
- 'отчет\s+о\s+движении\s+денежных\s+средств'
- 'отчет\s+о\s+целевом\s+использовании'
# Код ОКУД -> тип (ячейка «Форма по ОКУД 0710001» или сам код). Прочие формы 0710xxx — расшифровки (design D-3, решение №2)
okud:
BALANCE:
- '\b0710001\b'
INCOME:
- '\b0710002\b'
DISCLOSURE:
- '\b07100(0(3|4|5|6|7|8|9)|(1|2|3|4|5|6|7|8|9)\d)\b'
# Маркер страницы-продолжения в 1С-выгрузке: «Форма 0710001 с.2»
continuation:
- '\bформа\s+0710\d{3}\s+с\.?\s*\d+'
# Подписи колонок заголовка таблицы: ячейка целиком
code_caption:
- '^код(ы)?$'
name_caption:
- 'наименование\s+показателя'
explanations_caption:
- '^пояснени'
# Строка нумерации колонок под шапкой («1 | 2 | 3 | 4 | 5»): каждая непустая ячейка — одно-двузначное число
column_numbering: '^\d{1,2}$'
# Метки шапки документа (значение — правее в той же строке либо в следующей строке)
labels:
organization:
- '^организация\b'
inn:
- '^инн\b'
- 'идентификационный\s+номер\s+налогоплательщика'
okpo:
- 'по\s+окпо'
okved:
- 'по\s+оквэд'
okopf:
- 'по\s+окопф\b(?!\s*/)'
okfs:
- 'по\s+окфс'
okopf_okfs:
- 'по\s+окопф\s*/\s*окфс'
okei:
- 'по\s+океи'
units:
- 'единица\s+измерения'
address:
- 'местонахождение\s*\(адрес\)'
- 'адрес\s+в\s+пределах\s+места\s+нахождения'
- '^адрес\b'
date:
- '^(отчетная\s+)?дата\b'
okud_label:
- 'форма\s+по\s+окуд'
# Строки блока аудитора: ИНН ниже этой метки — ИНН аудитора, не организации
auditor:
- 'аудитор'
# Признак, что строка содержит название организации (для имени над меткой «Организация», НПЗ)
legal_form:
- '\b(ооо|ао|пао|зао|оао|нао|ип|гуп|муп|фгуп)\b'
- '"'
- '«'
# Коды строк форм: диапазоны четырёхзначных кодов (пятизначные — по первым четырём цифрам), доля кодов в колонке,
# минимум кодов, чтобы колонка считалась колонкой кодов
line_codes:
ranges:
BALANCE: [1100, 1799]
INCOME: [2100, 2999]
DISCLOSURE: [5000, 5999]
min_share: 0.6
min_codes: 3
# Порог для предупреждения о дробных значениях при единицах в тыс. руб. (процент; 1..100)
fractional_share_percent: 10