From a9aa6f60b0adfcd0143e095b1d300f7c500aa9bf Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Fri, 6 Nov 2026 23:00:11 +0400 Subject: [PATCH] =?UTF-8?q?=D0=90=D1=80=D1=85=D0=B8=D0=B2=20change=20state?= =?UTF-8?q?ment-checks-alternatives=20(AURORA-1864,=20#209)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- .../.openspec.yaml | 0 .../design.md | 0 .../proposal.md | 0 .../specs/statement-normalization/spec.md | 0 .../specs/statement-normalization/spec.md | 39 ++++++++++++++++--- 5 files changed, 34 insertions(+), 5 deletions(-) rename openspec/changes/{statement-checks-alternatives => archive/2026-11-06-statement-checks-alternatives}/.openspec.yaml (100%) rename openspec/changes/{statement-checks-alternatives => archive/2026-11-06-statement-checks-alternatives}/design.md (100%) rename openspec/changes/{statement-checks-alternatives => archive/2026-11-06-statement-checks-alternatives}/proposal.md (100%) rename openspec/changes/{statement-checks-alternatives => archive/2026-11-06-statement-checks-alternatives}/specs/statement-normalization/spec.md (100%) diff --git a/openspec/changes/statement-checks-alternatives/.openspec.yaml b/openspec/changes/archive/2026-11-06-statement-checks-alternatives/.openspec.yaml similarity index 100% rename from openspec/changes/statement-checks-alternatives/.openspec.yaml rename to openspec/changes/archive/2026-11-06-statement-checks-alternatives/.openspec.yaml diff --git a/openspec/changes/statement-checks-alternatives/design.md b/openspec/changes/archive/2026-11-06-statement-checks-alternatives/design.md similarity index 100% rename from openspec/changes/statement-checks-alternatives/design.md rename to openspec/changes/archive/2026-11-06-statement-checks-alternatives/design.md diff --git a/openspec/changes/statement-checks-alternatives/proposal.md b/openspec/changes/archive/2026-11-06-statement-checks-alternatives/proposal.md similarity index 100% rename from openspec/changes/statement-checks-alternatives/proposal.md rename to openspec/changes/archive/2026-11-06-statement-checks-alternatives/proposal.md diff --git a/openspec/changes/statement-checks-alternatives/specs/statement-normalization/spec.md b/openspec/changes/archive/2026-11-06-statement-checks-alternatives/specs/statement-normalization/spec.md similarity index 100% rename from openspec/changes/statement-checks-alternatives/specs/statement-normalization/spec.md rename to openspec/changes/archive/2026-11-06-statement-checks-alternatives/specs/statement-normalization/spec.md diff --git a/openspec/specs/statement-normalization/spec.md b/openspec/specs/statement-normalization/spec.md index 9809455..3f5737e 100644 --- a/openspec/specs/statement-normalization/spec.md +++ b/openspec/specs/statement-normalization/spec.md @@ -612,8 +612,15 @@ actual}`, где `codes` — коды цели и членов соотноше - члены `abs_terms` (2120, 2210, 2220, 2330, 2350, 2410) сравниваются и как записаны, и по модулю; такое соотношение подтверждает величину, но не знак (шаг 8); - набор соотношений — по `form_variant` (полный или упрощённый); `form_variant = null` — полный. В упрощённом наборе - соотношения ББ жёсткие, а `2400 = 2110 − 2120 − 2330 + 2340 − 2350 − 2410` ОФР — мягкое, как `2400` полного набора - (знак 2410, OQ-12); + соотношения ББ жёсткие, а `2400 = 2110 − 2120 − 2330 + 2340 − 2350 − 2410` и `2400 = 2110 − 2120 − 2330 + 2340 − + 2350 + 2410` ОФР — мягкие, как `2400` полного набора; +- **группа альтернатив** (`group` в словаре, только у мягких соотношений одной формы и варианта): в колонке сошлась + хоть одна альтернатива — ни одна не попадает в `soft_relations_failed`; не сошлась ни одна — в + `soft_relations_failed` одно нарушение, ближайшая к цели альтернатива (меньшее расхождение; при пустой цели или пустых + членах — первая по словарю). `group` у жёсткого соотношения и разные цели в одной группе — ошибка загрузки словаря. Соотношения 2400 каждого + набора — одна группа: полный — `2400 = 2300 − 2410 + 2420` и `2400 = 2300 + 2410 + 2460`, упрощённый — два варианта + выше. Знак 2410 (расход или доход по налогу, ФСБУ 4/2023) не определяется — принимается любая альтернатива (OQ-12). + Группа не меняет жёстких проверок, подсветки, `needs_check` и подтверждения значений (шаг 8, Р-21); - родитель пятизначной подстроки — ближайшая четырёхзначная строка выше с теми же первыми тремя цифрами, иначе код из первых четырёх цифр; «сумма подстрок = родитель» (мягкое) — только если хотя бы одна подстрока в колонке непуста. @@ -634,9 +641,31 @@ actual}`, где `codes` — коды цели и членов соотноше - **THEN** в соотношениях код 2410 равен 749 #### Scenario: Упрощённый ОФР с доходом по налогу -- **WHEN** у упрощённого ОФР 2410 записан со знаком дохода, и `2400 = 2110 − 2120 − 2330 + 2340 − 2350 − 2410` по модулю - не сходится -- **THEN** нарушение в `soft_relations_failed`, документ из-за него не `needs_check` +- **WHEN** у упрощённого ОФР 2410 записан со знаком дохода, 2400 с ним сходится только по `2400 = 2110 − 2120 − 2330 + + 2340 − 2350 + 2410` +- **THEN** нарушений по 2400 в `soft_relations_failed` нет + +#### Scenario: Доход по налогу в полной форме (AURORA-1864) +- **WHEN** в колонке ОФР 2300 = 100, 2410 = 20 (без минуса и скобок), 2400 = 120 +- **THEN** `2400 = 2300 − 2410 + 2420` не сошлось, но сошлось `2400 = 2300 + 2410 + 2460` из той же группы — нарушений + по 2400 в `soft_relations_failed` нет + +#### Scenario: Расход по налогу в полной форме +- **WHEN** 2300 = 100, 2410 = −20 или (20) или 20, 2400 = 80 +- **THEN** сходится `2400 = 2300 − 2410 + 2420` — нарушений по 2400 в `soft_relations_failed` нет + +#### Scenario: Неверная чистая прибыль — одно нарушение +- **WHEN** 2300 = 100, 2410 = 20, 2400 = 150 — не сходится ни одна альтернатива группы +- **THEN** в `soft_relations_failed` одно нарушение по 2400 — `2400 = 2300 + 2410 + 2460` (`actual` 120 ближе к 150, + чем 80); документ из-за него не `needs_check` + +#### Scenario: Группа считается по колонке +- **WHEN** в первой колонке 2400 сходится с одной из альтернатив, во второй — ни с одной +- **THEN** нарушение по 2400 одно и только у второй колонки + +#### Scenario: Группа у жёсткого соотношения +- **WHEN** в `statement_checks.yaml` у соотношения со `strict: true` указан `group` +- **THEN** словарь не загружается (ошибка загрузки `statement_checks.yaml`) #### Scenario: Округление итогов - **WHEN** `1600 = 1700` расходится на 9,02 при итогах ~17 млрд