7.8 KiB
arm-web Specification
Purpose
Требования к экрану проверки формы ББ/ОФР во фронте arm-core/web (имя спеки — от прежнего репозитория arm-web, замороженного 21.10.2026) по контракту 2.0: раскладка строк со статусами (ok / detail / unreadable / missing), подсветка «требует внимания», предупреждения у места и правка кодов строк, сумм, дат колонок и шапки.
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 (в подсказке у поля — header.source.<поле>: сырой текст и
уверенность). Предупреждения и нарушения (issues, checks) SHALL показываться у места: у строк (line_ids), ячеек
(line_ids + column_id), полей шапки (field) или у документа (в том числе запись с column_index без column_id —
столбец вне колонок формы); уровень error отличается от info. Подсветки по confidence < 100 и is_recognized = false напрямую нет. У значений строк detail needs_review всегда false (Р-23): при показанных расшифровках их
сомнительные ячейки не подсвечиваются, но подсказка с text и уверенностью есть.
Scenario: Догадка подтверждена проверкой
- WHEN значение
is_recognized = false,needs_review = false - THEN ячейка не подсвечена; в подсказке сырой текст и уверенность
Requirement: Правка строк, колонок и подтверждение в режиме «Редактировать»
В режиме «Редактировать» экран SHALL давать: у unreadable / missing — поле ввода кода с подсказкой из справочника
(код → справочное имя) и пункт меню строки «Это расшифровка»; у detail — «Назначить код»; у строки ok — «Сделать
расшифровкой», смену кода и «Подтвердить код» у строки с needs_review; подтверждение ячейки без правки; ввод даты у
колонки без даты (period_kind = none) или с предупреждением о дате (в том числе подтверждение той же даты); снятие подтверждения ячейки и кода (confirmed: false); правка наименования организации в шапке; подтверждение даты отчёта из needs_review_fields без изменения (тем
же значением). «Сохранить» отправляет один PATCH …/statement (header, values, columns, lines). Кнопка «Подтвердить данные» при строках unreadable / missing с суммами
SHALL быть отключена с подсказкой «Разберите строки без кода: N» и переходом к первой такой строке; ответ сервера 409
LINES_UNRESOLVED показывается тем же текстом, 409 DUPLICATE_FORM — со ссылкой на подтверждённую форму, 409
LINE_CODE_TAKEN — у поля кода. Кнопка «Подтвердить данные» учитывает строки unreadable / missing с суммой или
нераспознанным текстом в ячейках.
Scenario: Назначить код
- WHEN аналитик вводит 1250 в ячейку кода строки
unreadableи сохраняет - THEN уходит
PATCHсlines: [{line_id, line_code: "1250"}]; после ответа строка встаёт на место 1250
Scenario: Подтверждение заблокировано
- WHEN у формы две строки
missingс суммами - THEN «Подтвердить данные» отключена, подсказка «Разберите строки без кода: 2», клик по подсказке ведёт к первой
Requirement: Предупреждения файла и документа в карточке файла
Карточка файла (панель файлов) SHALL читать job.warnings как список структур {code, severity, message, locator}
(после выкладки ядра v5.19 это не строки; у старых заданий ядро отдаёт строки, обёрнутые в LEGACY_WARNING), показывать
message и locator, отличая error от info; предупреждения листа ОСВ и документа — из DocumentOut.issues[].
job.mapping_warnings остаётся списком строк.
Scenario: Потерянный ОФР в карточке
- WHEN у задания
job.warnings = [{code: "JSON_FAILED", severity: "error", message: "…", locator: "file:x_ofr.json"}] - THEN карточка показывает предупреждение уровня «ошибка» с текстом и местом; экран не падает на объекте вместо строки