Спека: достройка формы по справочнику строк редакции в GET …/statement, создание строки и ячейки при первой правке по line_code, пустые шаблонные строки вне проверок §7 и статуса. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019qoydUVv8g1qHxc123u2RR
4.0 KiB
MODIFIED Requirements
Requirement: Соотношения §7 по колонкам
Проверки SHALL считаться чистой функцией по текущим financial_statement_value.amount документа для каждой колонки
отдельно по словарю api/rules/statement_checks.yaml (копия словаря tabular-parser): соотношение проверяется, только
если присутствует его левая часть; отсутствующий код и пустая сумма — 0; выполнено, если |левая − правая| ≤ tolerance
(1, в единицах формы) хотя бы в одном варианте правой части — как записано или с кодами abs_terms по модулю. Нарушение
жёсткого (strict) соотношения, не превышающее rounding_tolerance_percent (0,001 %) от наибольшего по модулю числа
соотношения, SHALL считаться мягким («в пределах округления»). Мягкие: соотношения strict: false и «сумма пятизначных
подстрок = четырёхзначный родитель». Результат — {failed: [...], soft_failed: [...]}, элемент — {column_index, relation, expected, actual}; MUST NOT храниться в БД.
Присутствующими SHALL считаться строки формы из БД, кроме строк, созданных правкой аналитика
(line_code_original_value IS NULL), у которых все суммы пустые; строки, достроенные в ответе по справочнику
(documents-api, id = null), в проверках MUST NOT участвовать. Созданная правкой строка с хотя бы одной непустой
суммой проверяется по всем колонкам, пустые суммы — 0.
Scenario: Сходящийся баланс
- WHEN проверяется форма
mezheninovskaya/2025-Q3/1_Форма1_бух_09 - THEN
failedпуст
Scenario: Нарушение жёсткого соотношения
- WHEN у баланса 1600 = 1000, 1100 = 300, 1200 = 600 в колонке 0
- THEN
failedсодержит{column_index: 0, relation: "1600 = 1100 + 1200", expected: 1000, actual: 900}
Scenario: Расходы со знаком минус
- WHEN ОФР 2110 = 100, 2120 = −60, 2100 = 40
- THEN
2100 = 2110 − 2120выполнено через вариант сabs_terms
Scenario: Правка исправляет нарушение
- WHEN аналитик правит 1200 с 600 на 700 в форме из предыдущего сценария
- THEN проверка по текущим суммам:
failedпуст
Scenario: Пустая шаблонная строка не проверяется
- WHEN в форме нет строки 1700 (в ответе она достроена пустой), 1300 + 1400 + 1500 = 2 371 333 в колонке 0
- THEN
1700 = 1300 + 1400 + 1500и1600 = 1700не проверяются,failed— как без достройки
Scenario: Заполненная шаблонная строка проверяется
- WHEN аналитик заполнил 1700 = 2 371 333 только в колонке 0, а в колонке 1 1300 + 1400 + 1500 = 2 000 000
- THEN в колонке 0 соотношение выполнено; в колонке 1
failedсодержит1700 = 1300 + 1400 + 1500сexpected 0,actual 2000000
Scenario: Очищенная шаблонная строка
- WHEN затем аналитик очищает 1700 в колонке 0 (
amount = null) - THEN строка 1700 снова не участвует в проверках