docs: дубль спеки arm-web удалён (есть в arm-core document-review-ui/primary-files-ui), инструкция пользователя и N57 — вид ОСВ как в 1С, новый скриншот 17 (#143)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Andrey Epifancev 2026-10-21 10:07:31 +04:00
parent 897682ee49
commit 0831c6e033
6 changed files with 10 additions and 72 deletions

View File

@ -27,8 +27,8 @@
`RSHB/arm-core` → `main`, туда же идут PR фронта от других исполнителей. Репозиторий `RSHB/arm-web` (ветка `test`)
заморожен на `de4e477` — последней синхронизации (arm-core #147, `3157a15`); новых правок туда не вносим. Скрипт
синхронизации `sync-web.sh` удалён, `scripts/prepare-contour-snapshot.sh` берёт `web/` из arm-core как есть
(`dev/contour-transfer-guide.md` раздел 3.1). Спеки экранов (`*-ui`) пока лежат в `arm-web/openspec/specs/`; новые
требования к экранам — в `arm-core/openspec/`.
(`dev/contour-transfer-guide.md` раздел 3.1). Спеки экранов (`*-ui`) и открытые issue arm-web
перенесены в arm-core (`openspec/specs/*-ui`, issue #150–#157); дубль `openspec/specs/arm-web` из docs удалён.
## Как агент работает с несколькими репозиториями

View File

@ -417,7 +417,7 @@ UI прячет элементы по `GET /me → permissions` (объедин
> Работает на `main` ядра: change `unified-statement-normalization` (RSHB/arm-ka-docs#116; контракт распознавания v2.0,
> DBML v5.19), части А (arm-core #129) и Б (#132). Фронт `arm-core/web` эти типы уже использует (план 6, сделан в
> arm-web и перенесён синхронизацией до 21.10.2026; дальше фронт ведётся в arm-core). Правила — `context/05-domain-rules.md` §7, §9.3, §9.5 пп. 2, 4, 9, §11; экран — спека `arm-web` того же change.
> arm-web и перенесён синхронизацией до 21.10.2026; дальше фронт ведётся в arm-core). Правила — `context/05-domain-rules.md` §7, §9.3, §9.5 пп. 2, 4, 9, §11; экран — спеки `document-review-ui` и `primary-files-ui` в `arm-core/openspec/specs/`.
> В `…/statement` поля добавлены, старые не удалены: клиент, написанный по §5.6, продолжит читать ответ.
> **Исключение — карточка файла:** `FileOut.job.warnings` сменил тип со строк на объекты (ниже, «Карточка файла»), это
> несовместимо — экран файлов обновляется в той же выкладке, что и ядро. Раздел 5.6 ниже описывает базовые маршруты; где он

View File

@ -295,7 +295,7 @@ tabular-parser `4d1709a`, scan-gateway `1d05b9e`, общий пакет `arm-sta
| № | Шаги | Ожидание |
|---|---|---|
| N57 | загрузить ОСВ из 1С (любой счёт), открыть | как раньше: «Загружен» для чистой ОСВ, «Требуется проверка» при чужой организации в шапке; экран «Просмотр ОСВ» — **плоская** таблица (колонки «Субсчёт», «Контрагент», «ИНН», шесть сумм, внизу «Итого по документу»), поиск «Контрагент или ИНН», фильтр «Субсчёт», «Строк: N»; над таблицей «Предупреждения (1)» — «Информация: иерархия строк — по группировке листа (outline)»; в панели у каждой ОСВ значок «ⓘ 1» (O-2). Суммы «Итого по документу» равны строке «Итого» файла |
| N57 | загрузить ОСВ из 1С (любой счёт), открыть | как раньше: «Загружен» для чистой ОСВ, «Требуется проверка» при чужой организации в шапке; экран «Просмотр ОСВ» — таблица (колонки «Субсчёт», «Контрагент», «ИНН», шесть сумм, внизу «Итого по документу»), поиск «Контрагент или ИНН», фильтр «Субсчёт» (с 21.10.2026, AURORA-1702/1703, — вид «как в 1С» со строками счёта и субсчетов и фильтр «Счёт / субсчёт», см. `qa-guide.md` W16), «Строк: N»; над таблицей «Предупреждения (1)» — «Информация: иерархия строк — по группировке листа (outline)»; в панели у каждой ОСВ значок «ⓘ 1» (O-2). Суммы «Итого по документу» равны строке «Итого» файла |
| N58 | (окно перехода, если tabular-parser или scan-gateway ещё старые) загрузить ОСВ и форму | принимаются, экран работает; у форм все строки обычные, расшифровок и розовых строк нет; в значке документа — «Предупреждения файла» уровня «Информация» со старыми текстами (`LEGACY_WARNING`). Не баг — сообщите владельцу |
| N59 | ОСВ сч. 01 за 2-й или 3-й квартал без оборотов (Счастливочная 2025 Q2 / Q3) | «Требуется проверка» вместо «Загружен» — известное замечание I-5 |

View File

@ -1,66 +0,0 @@
# 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** карточка показывает предупреждение уровня «ошибка» с текстом и местом; экран не падает на объекте вместо строки

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 168 KiB

View File

@ -356,13 +356,17 @@ PDF» и «ОФР · PDF». PDF с одной формой не обязан с
![Просмотр ОСВ](img/17-osv-document.png)
- Строки идут в порядке файла, как в 1С: строка счёта и строки субсчетов выделены жирным и показывают свои сальдо и
обороты, строки контрагентов (аналитики) сдвинуты вправо под своим субсчётом. Строки количества и налогового учёта
(«Кол.», «НУ») из ОСВ с колонкой «Показатели» не показываются — только суммы в рублях.
- Строки ОСВ только для чтения, суммы в рублях. Колонки показываются по содержимому файла: «Субсчёт»; колонка аналитики
— «Контрагент», название вида аналитики из файла (например «Основные средства») или «Аналитика», если видов несколько;
«ИНН» — только если в ОСВ есть контрагенты; «Подразделение» — если оно есть в файле; далее сальдо на начало периода
(Дебет / Кредит), обороты за период (Дебет / Кредит), сальдо на конец периода (Дебет / Кредит). Ноль показывается как
«—».
- Поле «Контрагент или ИНН» (или «Поиск по аналитике», если контрагентов нет) фильтрует строки, «Субсчёт» — выбор
субсчёта; «Строк: N» — число строк после фильтра.
- Поле «Контрагент или ИНН» (или «Поиск по аналитике», если контрагентов нет) фильтрует строки (строки счёта и
субсчетов при поиске скрываются), «Счёт / субсчёт» — выбор счёта или субсчёта: остаются он и все его субсчета;
«Строк: N» — число строк после фильтра.
- Таблица прокручивается внутри экрана, внизу закреплена строка «Итого по документу».
- Если у документа есть предупреждения, над таблицей показывается блок «Предупреждения (N)» (раздел 7.4).
- «Подтвердить» активна только для документа в статусе «Требуется проверка»; у автоматически подтверждённых ОСВ