diff --git a/context/00-workspace-layout.md b/context/00-workspace-layout.md index 64d27ce..9158390 100644 --- a/context/00-workspace-layout.md +++ b/context/00-workspace-layout.md @@ -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 удалён. ## Как агент работает с несколькими репозиториями diff --git a/dev/frontend-api-guide.md b/dev/frontend-api-guide.md index d1fb13e..cf340b1 100644 --- a/dev/frontend-api-guide.md +++ b/dev/frontend-api-guide.md @@ -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 ниже описывает базовые маршруты; где он diff --git a/dev/qa-statements-v2.md b/dev/qa-statements-v2.md index b461d7d..1693721 100644 --- a/dev/qa-statements-v2.md +++ b/dev/qa-statements-v2.md @@ -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 | diff --git a/openspec/specs/arm-web/spec.md b/openspec/specs/arm-web/spec.md deleted file mode 100644 index 2a3e329..0000000 --- a/openspec/specs/arm-web/spec.md +++ /dev/null @@ -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** карточка показывает предупреждение уровня «ошибка» с текстом и местом; экран не падает на объекте вместо строки diff --git a/user/img/17-osv-document.png b/user/img/17-osv-document.png index b4bd80a..4055e30 100644 Binary files a/user/img/17-osv-document.png and b/user/img/17-osv-document.png differ diff --git a/user/user-guide.md b/user/user-guide.md index b8a0532..71391c7 100644 --- a/user/user-guide.md +++ b/user/user-guide.md @@ -356,13 +356,17 @@ PDF» и «ОФР · PDF». PDF с одной формой не обязан с ![Просмотр ОСВ](img/17-osv-document.png) +- Строки идут в порядке файла, как в 1С: строка счёта и строки субсчетов выделены жирным и показывают свои сальдо и + обороты, строки контрагентов (аналитики) сдвинуты вправо под своим субсчётом. Строки количества и налогового учёта + («Кол.», «НУ») из ОСВ с колонкой «Показатели» не показываются — только суммы в рублях. - Строки ОСВ только для чтения, суммы в рублях. Колонки показываются по содержимому файла: «Субсчёт»; колонка аналитики — «Контрагент», название вида аналитики из файла (например «Основные средства») или «Аналитика», если видов несколько; «ИНН» — только если в ОСВ есть контрагенты; «Подразделение» — если оно есть в файле; далее сальдо на начало периода (Дебет / Кредит), обороты за период (Дебет / Кредит), сальдо на конец периода (Дебет / Кредит). Ноль показывается как «—». -- Поле «Контрагент или ИНН» (или «Поиск по аналитике», если контрагентов нет) фильтрует строки, «Субсчёт» — выбор - субсчёта; «Строк: N» — число строк после фильтра. +- Поле «Контрагент или ИНН» (или «Поиск по аналитике», если контрагентов нет) фильтрует строки (строки счёта и + субсчетов при поиске скрываются), «Счёт / субсчёт» — выбор счёта или субсчёта: остаются он и все его субсчета; + «Строк: N» — число строк после фильтра. - Таблица прокручивается внутри экрана, внизу закреплена строка «Итого по документу». - Если у документа есть предупреждения, над таблицей показывается блок «Предупреждения (N)» (раздел 7.4). - «Подтвердить» активна только для документа в статусе «Требуется проверка»; у автоматически подтверждённых ОСВ