arm-core/api/arm_statements/rules/statement_periods.yaml
Andrey Epifancev 46ac9367ee chore(arm_statements): копия пакета arm-statements@6bce80b (#128)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 19:38:30 +04:00

45 lines
3.2 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.

# Периоды форм ББ/ОФР: подпись колонки или подзаголовок формы -> дата (конец периода). §11.3, §12 п. 4.
# Регулярки ищутся без учёта регистра. Относительные подписи применяются к подписи после normalize_caption.
max_text_length: 200 # длиннее — не дата (защита от backtracking)
years: {min: 1990, max: 2100} # одинокий год вне диапазона датой не считается
# Основа названия месяца -> номер (сопоставляется по началу слова)
months:
январ: 1
феврал: 2
март: 3
апрел: 4
ма: 5
июн: 6
июл: 7
август: 8
сентябр: 9
октябр: 10
ноябр: 11
декабр: 12
# Относительные подписи колонок (по порядку проверки)
relative:
- {kind: "relative:prev_prev_year_end", pattern: 'предшествующ\w*\s+предыдущ'}
- {kind: "relative:prev_year_end", pattern: 'декабр\w*\s+предыдущ'}
- {kind: "relative:prev_period", pattern: 'аналогичн\w*\s+период\w*\s+предыдущ'}
- {kind: "relative:current", pattern: 'отч[её]тн\w*\s+(дат|период)'}
# Абсолютные формы по приоритету (§11.3 п. 3). Именованные группы: d (день), m (месяц числом), mw (месяц словом),
# y (год, 2 или 4 цифры), q (номер квартала/полугодия словом, римской или арабской цифрой), n (число месяцев).
absolute:
- kind: range_end # «с 01.01.2025 по 30.09.2025»: конец диапазона
pattern: 'по\s*(?P<d>\d{1,2})[.\-/ ](?P<m>\d{1,2})[.\-/ ](?P<y>\d{4}|\d{2})'
- kind: day_month_year # «31 декабря 2025 г.», «на 30 сентября 2025 года»
pattern: '(?P<d>\d{1,2})\s+(?P<mw>[а-яё]{3,8})\s+(?P<y>\d{4}|\d{2})\s*(?:г\.?|r\.?|год\w*)?'
- kind: quarter # «I квартал 2026», «1-й кв. 2026», «первый квартал»
pattern: '(?P<q>I{1,3}V?|IV|\d|перв\w*|втор\w*|трет\w*|четв\w*)\s*-?\s*(?:й|ый|ого|го)?\s*кв\w*\.?\s*(?P<y>\d{4}|\d{2})\s*(?:г\.?|r\.?|год\w*)?'
- kind: half # «1 полугодие 2026», «первое полугодие», «1 п/г 2026»
pattern: '(?P<q>I{1,3}V?|IV|\d|перв\w*|втор\w*|трет\w*|четв\w*)\s*-?\s*(?:е|ое|го)?\s*(?:полугоди\w*|п/г)\.?\s*(?P<y>\d{4}|\d{2})\s*(?:г\.?|r\.?|год\w*)?'
- kind: months # «9 месяцев 2025», «9 мес. 2025»
pattern: '(?P<n>\d{1,2})\s*мес\w*\.?\s*(?P<y>\d{4}|\d{2})\s*(?:г\.?|r\.?|год\w*)?'
- kind: month_range # «январь - сентябрь 2025»: последний месяц
pattern: '[а-яё]{3,8}\s*[-–—]\s*(?P<mw>[а-яё]{3,8})\s*(?P<y>\d{4}|\d{2})\s*(?:г\.?|r\.?|год\w*)?'
- kind: year # «за 2025 г.», «2025 год», «2025г»
pattern: '(?:за\s*)?(?:отч[её]тный\s*)?(?P<y>\d{4})\s*(?:г\b|г\.|r\b|r\.|год)'