From 3e51a9586250acf85a485d86e488468a5767fdab Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Sat, 17 Oct 2026 18:13:39 +0400 Subject: [PATCH] =?UTF-8?q?docs(#116):=20=D0=BF=D0=BE=D0=B4=D1=82=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B6=D0=B4=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=BE=D0=B9=20=C2=A77=20?= =?UTF-8?q?=E2=80=94=20needs=5Freview=20=D0=B2=D0=BC=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=BE=20=D0=BF=D0=BE=D0=B4=D1=81=D0=B2=D0=B5=D1=82=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=BF=D0=BE=20=D1=83=D0=B2=D0=B5=D1=80=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B8,=20=D0=A0-7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5.1 --- .../unified-statement-normalization/design.md | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/openspec/changes/unified-statement-normalization/design.md b/openspec/changes/unified-statement-normalization/design.md index 63aa105..03d8c40 100644 --- a/openspec/changes/unified-statement-normalization/design.md +++ b/openspec/changes/unified-statement-normalization/design.md @@ -513,7 +513,7 @@ line_name_confidence, values}`: `line_code` — разобранный код (4 статус конверта — агрегат. Предупреждение — структура `{code, severity: error | info, message, line_ref?, column_index?}`, а не строка. -- **1. Критерий `done`** — один критерий из самого результата: раскладка найдена ∧ (организация или ИНН) ∧ дата отчёта ∧ все строки `ok` ∧ все значения `is_recognized` ∧ `confidence` всех ячеек ≥ порога (Р-5) ∧ жёсткие проверки §7 сошлись ∧ нет предупреждений уровня `error`. Excel выполняет условия уверенности автоматически +- **1. Критерий `done`** — один критерий из самого результата: раскладка найдена ∧ (организация или ИНН) ∧ дата отчёта ∧ все строки `ok` ∧ нет значений `needs_review` (см. «Подтверждение проверкой» ниже) ∧ жёсткие проверки §7 сошлись ∧ нет предупреждений уровня `error`. Excel выполняет условия уверенности автоматически - scan-gateway: «ничего не выброшено и уверенность 100» → общий критерий - tabular-parser: `_is_ok` → общий критерий; добавляются строки и значения - **2. Влияние предупреждений** — по уровню: `error` → `needs_check`, `info` — не влияет; у обоих одинаково @@ -529,6 +529,21 @@ column_index?}`, а не строка. - scan-gateway: меняет - tabular-parser: меняет +**Подтверждение проверкой (вопрос владельца 17.10.2026).** Проверка §7 — арбитр, уверенность — подсказка там, где +проверки нет. По каждому значению сервис считает `needs_review`: + +- `true`, если `is_recognized = false` или `confidence` ниже порога (Р-5) **и** значение не покрыто сошедшимся жёстким + соотношением §7 в своей колонке (не входит ни в одно, соотношение не сошлось или оно мягкое); +- `true` у всех ячеек соотношения в колонке, где оно не сошлось, независимо от уверенности; +- иначе `false`: значение подтверждено проверкой, не подсвечивается и статус не трогает; сырой текст и уверенность + остаются в подсказке ячейки. + +Экран подсвечивает ячейки только по `needs_review`; после PATCH ядро пересчитывает `checks` и `needs_review` общим +кодом. Не покрыто проверками и остаётся на уверенности: поля шапки, справочные строки ОФР 25xx / 29xx, детализация +без проверки родителя, `DISCLOSURE`, колонки, где есть только мягкие соотношения. Риск — две взаимно компенсирующие +ошибки в одном соотношении; принимается (перекрёстные соотношения баланса его снижают). Закрывает AURORA-1524 без +ущерба для 1519. Распространение на `is_recognized = false` — Р-7. + ### Шаг 9 — Результат Одинаково, как сейчас; контракт `recognition-result.schema.json` → **v1.3**: `line_status`, `line_code` nullable, @@ -545,8 +560,8 @@ column_index?}`, а не строка. - Словарь строк и словарь §7: единственный экземпляр в общем коде (Р-1); копии ядра и шлюза удаляются. - Достройка шаблонных строк: по тому же словарю; строки `missing` / `unreadable` / `duplicate` показываются как пришли, с подсветкой. -- Экран: подсветка ячеек по `confidence`, `is_recognized` и нарушениям §7 (по кодам слагаемых и колонке); строк — по - `line_status`; предупреждения документа — с привязкой к месту. +- Экран: подсветка ячеек только по `needs_review` (уверенность, `is_recognized` и нарушения §7 уже сведены сервисом); + строк — по `line_status`; предупреждения документа — с привязкой к месту. ### Решения, которые нужны от владельца @@ -563,3 +578,6 @@ column_index?}`, а не строка. 100, как сейчас. - **Р-6** (шаг 2, п. 6) — неизвестная числовая колонка без периода: оставлять без даты с предупреждением (`needs_check`) или пропускать, как парсер сейчас. +- **Р-7** (шаг 8, «Подтверждение проверкой») — снимать ли подсветку сошедшимся соотношением §7 и с `is_recognized = + false` (число собрано из грязного текста), а не только с низкой уверенности; предложение — да: сошедшаяся проверка + сильнее догадки о мусоре.