- proposal: зачем, что меняется, порядок выкладки «сначала ядро», non-goals - statement-normalization: шаги 1–8 общего кода arm_statements (кандидат, раскладка, статусы строк, значения, §7, needs_review, структурная проверка кода, уровни предупреждений, статус) - recognition-contract: файл результата и конверт v2.0, переход 1.x → 2.0 - tabular-recognition-service, scan-gateway: адаптеры шага 1 и что уходит из сервисов - arm-core: хранение v2.0, агрегат по коду, document_issue, RECOGNIZED, PATCH lines/columns/confirmed, порядок 409, миграция v5.19, crm_id ГСК/ГСЗ - arm-web: экран проверки формы по новым полям - design.md: автозамена между файлами — §9.5 п. 3, а не §12 п. 3 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
5.1 KiB
ADDED Requirements
Requirement: Раскладка строк формы со статусами
Экран проверки формы ББ/ОФР ([41]) SHALL сохранять раскладку «как на бумаге» (Р-14): разделы, внутри — строки ok по
возрастанию кода, несколько строк одного кода — в порядке файла (row_index), шаблонные строки на своих местах,
пятизначные подстроки под родителем. Строка unreadable / missing SHALL стоять под ближайшей предыдущей по
row_index строкой, размещённой по коду, а без такой — в начале первого раздела; она подсвечена целиком, в ячейке
кода серым — сырой текст line_code_text с подсказкой. Строки detail SHALL быть скрыты под переключателем
«Показать расшифровки (N)» и показываться под родителем (parent_row_index) с отступом. Экран показывает справочное
имя строки (reference_name), файловое (line_name) — рядом, если отличается. Переключателя «как в файле» нет.
Scenario: Код-мусор на своём месте
- WHEN строка
unreadable«ИЧ,250» в файле стоит после строки 1240 - THEN на экране она стоит сразу под 1240, подсвечена, в ячейке кода серым «ИЧ,250»
Scenario: Расшифровки скрыты
- WHEN у формы три строки
detail - THEN по умолчанию их не видно, переключатель «Показать расшифровки (3)»; включённый показывает их под родителями
Requirement: Подсветка и предупреждения у места
Экран SHALL подсвечивать ячейки только по needs_review (в подсказке — text и уверенность), строки — по
needs_review строки, поля шапки — по needs_review_fields. Предупреждения и нарушения (issues, checks) SHALL
показываться у места: у строк (line_ids), ячеек (line_ids + column_id), полей шапки (field) или у документа;
уровень error отличается от info. Подсветки по confidence < 100 и is_recognized = false напрямую нет.
Scenario: Догадка подтверждена проверкой
- WHEN значение
is_recognized = false,needs_review = false - THEN ячейка не подсвечена; в подсказке сырой текст и уверенность
Requirement: Правка строк, колонок и подтверждение в режиме «Редактировать»
В режиме «Редактировать» экран SHALL давать: у unreadable / missing — поле ввода кода с подсказкой из справочника
(код → справочное имя) и пункт меню строки «Это расшифровка»; у detail — «Назначить код»; у строки ok — «Сделать
расшифровкой», смену кода и «Подтвердить код» у строки с needs_review; подтверждение ячейки без правки; ввод даты у
колонки без даты (period_kind = none) или с предупреждением о дате. «Сохранить» отправляет один PATCH …/statement
(header, values, columns, lines). Кнопка «Подтвердить данные» при строках unreadable / missing с суммами
SHALL быть отключена с подсказкой «Разберите строки без кода: N» и переходом к первой такой строке; ответ сервера 409
LINES_UNRESOLVED показывается тем же текстом, 409 DUPLICATE_FORM — со ссылкой на подтверждённую форму, 409
LINE_EXISTS — у поля кода.
Scenario: Назначить код
- WHEN аналитик вводит 1250 в ячейку кода строки
unreadableи сохраняет - THEN уходит
PATCHсlines: [{line_id, line_code: "1250"}]; после ответа строка встаёт на место 1250
Scenario: Подтверждение заблокировано
- WHEN у формы две строки
missingс суммами - THEN «Подтвердить данные» отключена, подсказка «Разберите строки без кода: 2», клик по подсказке ведёт к первой