docs(#116): Р-6 решено — колонка без даты остаётся с error, относительные периоды в словарь
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
fbc1de5910
commit
bcb6b0b527
@ -1,7 +1,7 @@
|
|||||||
# Единый алгоритм нормализации ББ/ОФР (scan-gateway и tabular-parser) — дизайн
|
# Единый алгоритм нормализации ББ/ОФР (scan-gateway и tabular-parser) — дизайн
|
||||||
|
|
||||||
Issue: arm-ka-docs#116. Статус: черновик; текущая цепочка описана, целевая картина по шагам 1–9 — предложение, ждёт
|
Issue: arm-ka-docs#116. Статус: черновик; текущая цепочка описана, целевая картина по шагам 1–9 — предложение, ждёт
|
||||||
решений владельца Р-6, Р-7; Р-1…Р-5 решены (brainstorming 17.10.2026).
|
решения владельца Р-7; Р-1…Р-6 решены (brainstorming 17.10.2026).
|
||||||
|
|
||||||
## Цель
|
## Цель
|
||||||
|
|
||||||
@ -399,7 +399,7 @@ sheet:<A>,<B>`. `DISCLOSURE` и форма без колонки кодов —
|
|||||||
- **2. Повторная шапка внутри таблицы** — одно правило: строка внутри сетки с признаком шапки («Код» / та же сигнатура) открывает новый сегмент; у сегмента своя раскладка (позиции колонок могут сдвинуться); колонки значений сегментов сопоставляются по порядку; число не совпало — предупреждение, значения по позиции
|
- **2. Повторная шапка внутри таблицы** — одно правило: строка внутри сетки с признаком шапки («Код» / та же сигнатура) открывает новый сегмент; у сегмента своя раскладка (позиции колонок могут сдвинуться); колонки значений сегментов сопоставляются по порядку; число не совпало — предупреждение, значения по позиции
|
||||||
- scan-gateway: как сейчас, через общее правило
|
- scan-gateway: как сейчас, через общее правило
|
||||||
- tabular-parser: добавляет: бывший «лист-продолжение со своей раскладкой» становится сегментом
|
- tabular-parser: добавляет: бывший «лист-продолжение со своей раскладкой» становится сегментом
|
||||||
- **3. Дата колонки** — один словарь периодов (`statement_periods.yaml`) → `period_end`; перед разбором — очистка двойников OCR (общий шаг, у Excel не срабатывает)
|
- **3. Дата колонки** — один словарь периодов (`statement_periods.yaml`) → `period_end`: абсолютные подписи («На 31 марта 2025 г.», «За январь – март 2025 г.», «31.12.2024», «За 9 месяцев 2025 г.», «2024») и относительные («На отчётную дату», «На 31 декабря предыдущего года», «На 31 декабря года, предшествующего предыдущему», «За отчётный период», «За аналогичный период прошлого года» — дата считается от даты отчёта из шапки; даты отчёта нет → колонка без даты). Перед разбором — очистка двойников OCR (общий шаг, у Excel не срабатывает). Относительные подписи — решение владельца 17.10.2026 (Р-6): это бланки по приказу 66н без впечатанных дат, у шлюза сейчас «колонка 0 без даты: На отчетную дату»
|
||||||
- scan-gateway: `parse_date` «размером с дату» → словарь
|
- scan-gateway: `parse_date` «размером с дату» → словарь
|
||||||
- tabular-parser: добавляет очистку двойников (no-op)
|
- tabular-parser: добавляет очистку двойников (no-op)
|
||||||
- **4. Без шапки** — одно правило: строка заголовка не найдена → колонки значений = столбцы правее кода, где в строках с кодами стоят числа; `label` пустая, `period_end` `null`; одно предупреждение «строка заголовка не найдена»
|
- **4. Без шапки** — одно правило: строка заголовка не найдена → колонки значений = столбцы правее кода, где в строках с кодами стоят числа; `label` пустая, `period_end` `null`; одно предупреждение «строка заголовка не найдена»
|
||||||
@ -408,9 +408,9 @@ sheet:<A>,<B>`. `DISCLOSURE` и форма без колонки кодов —
|
|||||||
- **5. Строка нумерации «1 2 3 4 5»** — одно правило `is_numbering_row` → роль `numbering`, в данные не попадает
|
- **5. Строка нумерации «1 2 3 4 5»** — одно правило `is_numbering_row` → роль `numbering`, в данные не попадает
|
||||||
- scan-gateway: добавляет (AURORA-1517)
|
- scan-gateway: добавляет (AURORA-1517)
|
||||||
- tabular-parser: как сейчас
|
- tabular-parser: как сейчас
|
||||||
- **6. Подпись без периода** — одно правило: подпись — период по словарю → колонка с датой; подпись из словаря исключений («Изменение», «Отклонение», «%», «Темп», «Доля») → пропуск с предупреждением info; иначе, если в столбце есть числа в строках с кодами — колонка без даты + предупреждение (Р-6); иначе пропуск
|
- **6. Подпись без периода** — **решение владельца (17.10.2026, Р-6):** подпись — период по словарю (абсолютный или относительный, п. 3) → колонка с датой; подпись из словаря исключений («Изменение», «Отклонение», «%», «Темп», «Доля», «Примечание») → пропуск с предупреждением `info`; иначе, если в столбце есть числа в строках с кодами (OCR-мусор вроде «| | г» с уверенностью 17 в aep_3, обрезанная или самодельная подпись) — колонка остаётся с подписью как есть и `period_end = null`, предупреждение `error` с привязкой к колонке, документ `needs_check`, аналитик подтверждает после сверки с источником; иначе пропуск. Ядру колонка без даты не мешает: период формы берётся из даты отчёта, без неё — из самой поздней даты остальных колонок (`statement_period`). Пропуск числовой колонки с нераспознанной подписью отвергнут: для OCR это тихая потеря периода с возможным автоподтверждением
|
||||||
- scan-gateway: добавляет словарь исключений
|
- scan-gateway: добавляет словарь исключений и относительные периоды
|
||||||
- tabular-parser: перестаёт молча пропускать неизвестные числовые колонки
|
- tabular-parser: перестаёт молча пропускать неизвестные числовые колонки; добавляет относительные периоды
|
||||||
|
|
||||||
### Шаг 3 — Отбор строк данных
|
### Шаг 3 — Отбор строк данных
|
||||||
|
|
||||||
@ -615,8 +615,10 @@ column_index?}`, а не строка.
|
|||||||
порога. Код строки подтверждается структурой (перечень кодов формы + порядок), не уверенностью. Уверенность
|
порога. Код строки подтверждается структурой (перечень кодов формы + порядок), не уверенностью. Уверенность
|
||||||
наименования в сервисах не используется; сопоставление со справочным — открытый вопрос ядра (= решение № 7 по
|
наименования в сервисах не используется; сопоставление со справочным — открытый вопрос ядра (= решение № 7 по
|
||||||
спринту 2, AURORA-1519 / 1524).
|
спринту 2, AURORA-1519 / 1524).
|
||||||
- **Р-6** (шаг 2, п. 6) — неизвестная числовая колонка без периода: оставлять без даты с предупреждением (`needs_check`)
|
- **Р-6** (шаг 2, п. 6) — **решено владельцем 17.10.2026:** числовая колонка с нераспознанной подписью остаётся в
|
||||||
или пропускать, как парсер сейчас.
|
документе без даты с предупреждением `error` (`needs_check`, подтверждение руками); пропуск отвергнут как тихая
|
||||||
|
потеря периода. Относительные подписи бланка 66н («На отчётную дату», «На 31 декабря предыдущего года», …)
|
||||||
|
добавляются в словарь периодов и считаются от даты отчёта.
|
||||||
- **Р-7** (шаг 8, «Подтверждение проверкой») — снимать ли подсветку сошедшимся соотношением §7 и с `is_recognized =
|
- **Р-7** (шаг 8, «Подтверждение проверкой») — снимать ли подсветку сошедшимся соотношением §7 и с `is_recognized =
|
||||||
false` (число собрано из грязного текста), а не только с низкой уверенности; предложение — да: сошедшаяся проверка
|
false` (число собрано из грязного текста), а не только с низкой уверенности; предложение — да: сошедшаяся проверка
|
||||||
сильнее догадки о мусоре.
|
сильнее догадки о мусоре.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user