docs(#122): числа правее таблицы формы — не колонки сумм (шаг 2, NUMBERS_OUTSIDE_TABLE)
Решение владельца 18.10.2026 (Р-31 плана 4, #116). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
3fe7ad46ce
commit
222d7e08fc
@ -1301,6 +1301,16 @@ file:<имя json>;table:<i>`; документа у такой таблицы
|
|||||||
(`error`, колонка); аналитик ставит дату через PATCH (§9.5 п. 9); иначе пропуск. Колонка без даты не мешает периоду
|
(`error`, колонка); аналитик ставит дату через PATCH (§9.5 п. 9); иначе пропуск. Колонка без даты не мешает периоду
|
||||||
формы (эффективная дата), но межформенная проверка и гудвилл «на отчётную дату» по ней не считаются, пока дата не
|
формы (эффективная дата), но межформенная проверка и гудвилл «на отчётную дату» по ней не считаются, пока дата не
|
||||||
проставлена. Уверенность подписи — `label_confidence` (Excel — 100, подписи нет — `null`).
|
проставлена. Уверенность подписи — `label_confidence` (Excel — 100, подписи нет — `null`).
|
||||||
|
**Числа правее таблицы формы** (решение владельца 18.10.2026, Р-31 плана 4; пример — Межениновская 2025-Q3, ББ, формулы
|
||||||
|
аналитика `=M45*5/100` в столбцах U–W над пустой шапкой): если среди колонок значений сегмента есть хотя бы одна с
|
||||||
|
подписью периода (дата или относительная подпись бланка), то столбец **без текста подписи**, лежащий правее последней
|
||||||
|
такой колонки, колонкой сумм не считается: его числа в значения строк не попадают, `COLUMN_WITHOUT_DATE` нет,
|
||||||
|
выдаётся одно предупреждение `NUMBERS_OUTSIDE_TABLE` (`info`, документ) с адресами ячеек («числа правее таблицы формы
|
||||||
|
не учитываются: V45, W57, …»: в тексте первые 10 адресов, дальше «и ещё N»; Excel — `<лист>!<A1>`, OCR — `row:<n>`).
|
||||||
|
Адреса собираются по всем сегментам формы в одно предупреждение. На статус документа предупреждение не влияет. Не
|
||||||
|
меняется: подписанных колонок нет вовсе; столбец без подписи **между** подписанными — `COLUMN_WITHOUT_DATE`; столбец
|
||||||
|
правее с **нечитаемой** подписью (OCR-мусор «| | г») — `COLUMN_WITHOUT_DATE`, как раньше. Правило общее для Excel и
|
||||||
|
OCR и живёт в пакете `arm_statements` (шаг 2), не в адаптере хоста.
|
||||||
7. **Столбец наименования** — подпись, начинающаяся с «наименование», в строке заголовка; иначе столбец левее кода с
|
7. **Столбец наименования** — подпись, начинающаяся с «наименование», в строке заголовка; иначе столбец левее кода с
|
||||||
наибольшим числом текстов, кроме «Пояснения» (пустые или ≤ 3 символов); наименование строки — ячейка этого столбца,
|
наибольшим числом текстов, кроме «Пояснения» (пустые или ≤ 3 символов); наименование строки — ячейка этого столбца,
|
||||||
пуста — ближайшая текстовая ячейка левее кода, кроме «Пояснения».
|
пуста — ближайшая текстовая ячейка левее кода, кроме «Пояснения».
|
||||||
@ -1565,6 +1575,7 @@ III (aep_3). Алгоритм: четырёхзначные коды строк
|
|||||||
| `VALUE_OUT_OF_RANGE` | info | число Excel длиннее 16 целых цифр | — |
|
| `VALUE_OUT_OF_RANGE` | info | число Excel длиннее 16 целых цифр | — |
|
||||||
| `SHEET_OTHER` | info, файл | лист Excel «прочее» без типа и кодов (`locator = sheet:<имя>`; документа нет) | — |
|
| `SHEET_OTHER` | info, файл | лист Excel «прочее» без типа и кодов (`locator = sheet:<имя>`; документа нет) | — |
|
||||||
| `ROW_SPLIT` | info | разлеплена склеенная строка | — |
|
| `ROW_SPLIT` | info | разлеплена склеенная строка | — |
|
||||||
|
| `NUMBERS_OUTSIDE_TABLE` | info | числа правее последней подписанной колонки значений не учтены (шаг 2, п. 6); адреса ячеек — в тексте | — |
|
||||||
| `OSV_*` | info | предупреждения листа ОСВ (§1) | — |
|
| `OSV_*` | info | предупреждения листа ОСВ (§1) | — |
|
||||||
| `CODE_NOT_IN_DICTIONARY`, `CODE_NOT_IN_EDITION`, `NAME_MISMATCH`, `STATEMENTS_VERSION_MISMATCH` | info, ядро | проверки ядра (§9.3, §9.5) | пересчёт |
|
| `CODE_NOT_IN_DICTIONARY`, `CODE_NOT_IN_EDITION`, `NAME_MISMATCH`, `STATEMENTS_VERSION_MISMATCH` | info, ядро | проверки ядра (§9.3, §9.5) | пересчёт |
|
||||||
| `RESULT_STATUS_INCONSISTENT` | info, ядро | `document.status = done` из результата противоречит строкам, `needs_review`, нарушениям или предупреждениям документа — ядро считает его `needs_check` (§9.3) | пересчёт после правки |
|
| `RESULT_STATUS_INCONSISTENT` | info, ядро | `document.status = done` из результата противоречит строкам, `needs_review`, нарушениям или предупреждениям документа — ядро считает его `needs_check` (§9.3) | пересчёт после правки |
|
||||||
|
|||||||
@ -313,6 +313,14 @@ tabular-parser и шаблоны `dates.py` scan-gateway; строки `test_dat
|
|||||||
года, 31 декабря предыдущего и предшествующего ему года; иначе предупреждение `COLUMN_DATE_UNCERTAIN` (`error`,
|
года, 31 декабря предыдущего и предшествующего ему года; иначе предупреждение `COLUMN_DATE_UNCERTAIN` (`error`,
|
||||||
`column_index`). Уверенность подписи — `label_confidence` (у Excel 100; подписи нет — `null`).
|
`column_index`). Уверенность подписи — `label_confidence` (у Excel 100; подписи нет — `null`).
|
||||||
|
|
||||||
|
Если среди колонок значений сегмента есть хотя бы одна с подписью периода (абсолютной или относительной), столбец без
|
||||||
|
текста подписи правее **последней** такой колонки SHALL НЕ считаться колонкой сумм: его числа не попадают в значения
|
||||||
|
строк, `COLUMN_WITHOUT_DATE` не выдаётся, вместо этого выдаётся одно предупреждение `NUMBERS_OUTSIDE_TABLE` (`info`) с
|
||||||
|
адресами ячеек, собранными по всем сегментам формы (в тексте — первые 10, дальше «и ещё N»). Предупреждение SHALL НЕ
|
||||||
|
влиять на статус документа. Решение владельца 18.10.2026 (Р-31). Правило общее для Excel и OCR и живёт в пакете.
|
||||||
|
Без подписанных колонок, а также для столбца без подписи между подписанными и для столбца с нечитаемой подписью
|
||||||
|
поведение прежнее (`COLUMN_WITHOUT_DATE`).
|
||||||
|
|
||||||
Подтверждение SHALL опираться только на уверенные источники, чтобы неуверенное не подтверждало само себя: для
|
Подтверждение SHALL опираться только на уверенные источники, чтобы неуверенное не подтверждало само себя: для
|
||||||
неуверенной подписи эффективная дата — дата отчёта с уверенностью 100, иначе самая поздняя абсолютная дата колонок с
|
неуверенной подписи эффективная дата — дата отчёта с уверенностью 100, иначе самая поздняя абсолютная дата колонок с
|
||||||
уверенной подписью (`label_confidence = 100`); такой нет — подпись не подтверждена. Неуверенная дата отчёта (шаг 8, поля
|
уверенной подписью (`label_confidence = 100`); такой нет — подпись не подтверждена. Неуверенная дата отчёта (шаг 8, поля
|
||||||
@ -337,6 +345,21 @@ tabular-parser и шаблоны `dates.py` scan-gateway; строки `test_dat
|
|||||||
- **THEN** колонка остаётся, `period_date = null`, `period_kind = none`, предупреждение `COLUMN_WITHOUT_DATE` уровня
|
- **THEN** колонка остаётся, `period_date = null`, `period_kind = none`, предупреждение `COLUMN_WITHOUT_DATE` уровня
|
||||||
`error` с `column_index`, документ `needs_check`
|
`error` с `column_index`, документ `needs_check`
|
||||||
|
|
||||||
|
#### Scenario: Числа справа от таблицы
|
||||||
|
- **WHEN** у ББ подписи периодов стоят над столбцами M, Q, S, а правее таблицы в строках с кодами лежат формулы
|
||||||
|
аналитика (V45, W57, U58, V58, V72, W72) над пустой шапкой (Межениновская 2025-Q3)
|
||||||
|
- **THEN** колонок значений три, числа U–W в значения не попадают, `COLUMN_WITHOUT_DATE` и `SEGMENT_COLUMNS_MISMATCH`
|
||||||
|
нет; одно предупреждение `NUMBERS_OUTSIDE_TABLE` уровня `info` с адресами этих ячеек; документ `done`, если нет других
|
||||||
|
причин
|
||||||
|
|
||||||
|
#### Scenario: Столбец без подписи между подписанными
|
||||||
|
- **WHEN** между колонками с подписями периода стоит столбец без подписи с числами
|
||||||
|
- **THEN** он остаётся колонкой с `COLUMN_WITHOUT_DATE` уровня `error`, `NUMBERS_OUTSIDE_TABLE` нет
|
||||||
|
|
||||||
|
#### Scenario: Подписанных колонок нет
|
||||||
|
- **WHEN** ни у одного столбца значений нет подписи периода
|
||||||
|
- **THEN** правило «числа справа от таблицы» не применяется, столбцы с числами — колонки с `COLUMN_WITHOUT_DATE`
|
||||||
|
|
||||||
#### Scenario: Колонка «Изменение»
|
#### Scenario: Колонка «Изменение»
|
||||||
- **WHEN** правее периодов колонка «Изменение, %»
|
- **WHEN** правее периодов колонка «Изменение, %»
|
||||||
- **THEN** колонка пропускается, предупреждение `COLUMN_SKIPPED` уровня `info`
|
- **THEN** колонка пропускается, предупреждение `COLUMN_SKIPPED` уровня `info`
|
||||||
@ -791,6 +814,7 @@ report_date`). У бланка только с относительными по
|
|||||||
| `VALUE_OUT_OF_RANGE` | info | число Excel длиннее 16 целых цифр |
|
| `VALUE_OUT_OF_RANGE` | info | число Excel длиннее 16 целых цифр |
|
||||||
| `SHEET_OTHER` | info (файл) | лист Excel «прочее» без `type_hint` и кодов; документа нет |
|
| `SHEET_OTHER` | info (файл) | лист Excel «прочее» без `type_hint` и кодов; документа нет |
|
||||||
| `ROW_SPLIT` | info | разлеплена склеенная строка |
|
| `ROW_SPLIT` | info | разлеплена склеенная строка |
|
||||||
|
| `NUMBERS_OUTSIDE_TABLE` | info | числа правее последней подписанной колонки значений не учтены; адреса ячеек в тексте |
|
||||||
|
|
||||||
Предупреждения пути ОСВ — уровня `info`, код с префиксом `OSV_`. Новый код предупреждения вводится словарём пакета и
|
Предупреждения пути ОСВ — уровня `info`, код с префиксом `OSV_`. Новый код предупреждения вводится словарём пакета и
|
||||||
таблицей §11 `05-domain-rules.md`; `code` в контракте — строка `^[A-Z][A-Z0-9_]*$`, не перечисление.
|
таблицей §11 `05-domain-rules.md`; `code` в контракте — строка `^[A-Z][A-Z0-9_]*$`, не перечисление.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user