arm-ka-docs/dev/qa-statements-v2.md

392 lines
78 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Тестирование единой нормализации ББ/ОФР (контракт 2.0)
Документ для тестировщиков к выкладке «единой нормализации ББ/ОФР» на тестовый стенд в контуре банка (19.10.2026).
Проверка — через экраны АРМ КА (фронт `arm-core/web`) на стенде контура. Как поднять стенд локально, войти и проверить API через
Swagger — общий гайд [`qa-guide.md`](qa-guide.md) (разделы 4, 6.9, 8.5); здесь — только то, что изменилось с этой
выкладкой.
Что выложено: arm-core `ddd607e` (DBML v5.19, приём результатов 1.x и 2.0, встроенный фронт = arm-web `test` `4a02512`),
tabular-parser `4d1709a`, scan-gateway `1d05b9e`, общий пакет `arm-statements` `3390f92`. Задача — RSHB/arm-ka-docs#116;
правила — `docs/context/05-domain-rules.md` §7, §9.5, §11; решения Р-1…Р-44 — `openspec/changes/archive/2026-10-19-unified-statement-normalization/design.md`.
Перед выкладкой все сценарии ниже прогнаны на локальном стенде (18–19.10.2026: 25 книг Excel, 6 PDF, 129 ОСВ,
сводная ОСВ двух периодов). Найденное там и не исправленное — в разделе 6: такие случаи **не заводите** как баги.
Как читать: раздел 1 — что изменилось, раздел 3 — что проверить перед началом, раздел 4 — справка по цветам, значкам
и текстам предупреждений, раздел 5 — чек-лист сценариев, разделы 6–7 — известное и «не баг», раздел 8 — как
заводить баги.
## 1. Что изменилось для пользователя
| Было | Стало |
|---|---|
| Excel (tabular-parser) и PDF (scan-gateway + ИС Сканирование) разбирались разными программами: одинаковая форма из Excel и из скана вела себя по-разному | Оба сервиса разбирают таблицу формы **одним общим кодом** (пакет `arm_statements`): одинаковые правила поиска колонки кодов, строк, сумм, проверок и статуса. Различается только чтение файла: лист Excel или ответ ИС Сканирование |
| Строки без кода («в том числе: …»), строки с нечитаемым кодом и строки без кода с суммами молча пропадали | **Строки не пропадают.** У каждой строки статус: обычная; **расшифровка** (строка без кода под строкой с кодом — «в том числе …»); **код не распознан** (в ячейке кода мусор: «ИЧ,250», «12 /»); **кода нет** (строка с суммами без кода в начале таблицы) |
| Повтор кода — вторая строка терялась | Повтор кода — законный случай (в ББ 2025 года две строки 1220 и две 1520): видны **все** строки, в проверках их суммы складываются |
| Оранжевой подсвечивалась любая ячейка с уверенностью распознавания ниже 100 % | Подсвечивается только то, что **требует внимания**: сомнительное значение, которое не подтвердила ни одна сошедшаяся контрольная проверка (§7), сомнительный код строки, поле шапки. Сомнительная ячейка, подтверждённая проверкой, не подсвечивается, но в подсказке видно, что распознано и с какой уверенностью |
| Предупреждения сервисов нигде не показывались | Предупреждения — у места: список «Предупреждения (N)» над таблицей (уровни «Ошибка» и «Информация», ссылка «Показать»), значок у ячейки, строки, заголовка колонки и поля шапки; в панели «Первичные документы» под статусом документа — значок с числом, по клику — список |
| Подтвердить можно было любую форму без нарушений | Новые блокировки: «Подтвердить данные» неактивна, пока есть строки без кода **с суммами** («Разберите строки без кода: N»); вторая форма того же типа и периода в одном файле не подтверждается, если первая уже подтверждена |
| Соотношение §7 с пустой целью пропускалось | Соотношение считается, если заполнена хоть одна его сторона: пустой итог при заполненных слагаемых — нарушение «цель не заполнена»; лист только с активом даёт нарушение `1600 = 1700` |
| — | В режиме «Редактировать»: назначить или сменить код строки, «Это расшифровка» / «Сделать расшифровкой», «Подтвердить код», подтвердить значение без правки (серая галочка), поставить или подтвердить дату колонки, подтвердить дату отчёта, править наименование организации |
| Числа правее таблицы (формулы аналитика в свободных столбцах) становились колонкой без даты | Столбец без подписи правее последней колонки с периодом в форму не попадает; вместо ошибки — «Информация»: «числа правее таблицы формы не учитываются: <адреса ячеек>» (правило Р-44) |
| Формы из PDF почти всегда «Требуется проверка» | Чистый скан, где все проверки сошлись, может подтвердиться автоматически (статус «Загружен» сразу) |
| ОСВ: предупреждения парсера не показывались | ОСВ разбирается как раньше; предупреждения листа видны в панели (значок с числом) и блоком «Предупреждения» на экране «Просмотр ОСВ» |
| Формы ББ/ОФР, загруженные до выкладки | **Удалены** очисткой перед выкладкой (раздел 3): их нужно загрузить заново, тогда они разберутся по новым правилам |
Чего нет и в этой выкладке не будет: склейки страниц формы из разных файлов (OQ-140) и половинок формы внутри одного
файла (Р-15), восстановления потерянных строк по наименованию (OQ-149), сопоставления формы без колонки кодов по
именам строк (OQ-139), переключателя «строки как в файле» (Р-14), удаления строк (вместо него — «Сделать расшифровкой»).
## 2. Как это работает
1. **Загрузка.** Аналитик загружает файл в панели «Первичные документы» ЮЛ (как раньше). Ядро сохраняет файл и
отправляет задание: Excel (`xls`, `xlsx`, `xlsb`) — в tabular-parser, PDF и картинки — в scan-gateway, который отдаёт
файл в ИС Сканирование и ждёт ответ (на скане — до нескольких минут).
2. **Чтение файла (шаг 1, у каждого сервиса своё).** tabular-parser читает листы книги, scan-gateway — json-ответы ИС.
Оба превращают каждую найденную форму в одинаковую «сетку» ячеек: текст, число (если оно есть в Excel), уверенность
распознавания (у Excel всегда 100 %), адрес ячейки.
3. **Нормализация (шаги 2–8, общий код).** Колонка кодов и наименований, колонки периодов и их даты, строки и их
статусы, разбор сумм, код и редакция формы (66н / ФСБУ 4), тип формы (ББ / ОФР / расшифровка), контрольные проверки
§7, признак «требует внимания» у каждой ячейки, строки и поля шапки, предупреждения, статус документа «готово» или
«нужна проверка».
4. **Результат 2.0.** Сервис кладёт результат в хранилище и сообщает ядру. Ядро сохраняет его **как пришёл** (ничего не
пересчитывает) и добавляет только свои сверки: ИНН и организация с ЮЛ, код в справочнике наименований, наименование
строки со справочным для сомнительных кодов, период — конец квартала.
5. **Автоподтверждение.** Документ «готово», ИНН совпал с ЮЛ, период — конец квартала, в файле нет ошибок уровня файла и
второй формы того же типа и периода → статус «Загружен» без участия аналитика. Иначе — «Требуется проверка».
6. **Экран проверки формы.** Аналитик смотрит подсвеченное, правит («Редактировать» → «Сохранить»). После каждого
сохранения ядро пересчитывает проверки §7 и статус **тем же общим кодом**: правленое или подтверждённое значение
больше не «требует внимания», принятые с комментарием нарушения не блокируют.
7. **Подтверждение.** «Подтвердить данные»: ядро проверяет по порядку — период определён → нет строк без кода с суммами
→ в файле нет уже подтверждённой формы того же типа и периода → нет непринятых жёстких нарушений §7. Подтверждённая
форма закрывает ячейку «Бух.баланс» / «ОФР» в «Организациях» версии консолидации и больше не правится.
## 3. Предусловия на стенде контура
Что владелец сделал при выкладке (уточните у него, если что-то не так):
1. **Резервная копия БД и очистка форм** скриптом ядра `scripts/purge_statements.py` (сначала `--dry-run` с отчётом,
затем `--apply`): удалены все документы «Бух. баланс» и «ОФР» с данными форм, комментариями и привязками к версиям
«в работе»; файлы, где кроме форм ничего нет, удалены целиком. ОСВ, консолидации, справочники не тронуты.
**Смешанные файлы** (в одной книге ОСВ и формы): по умолчанию у них удаляются только формы, файл с ОСВ остаётся;
с флагом `--include-mixed` — удаляются целиком. Спросите владельца, какой вариант применён (решение Р-27).
2. **Порядок выкладки «сначала ядро»:** arm-core (миграция v5.19, приём старых 1.x и новых 2.0 результатов) и его
встроенный фронт, затем tabular-parser и scan-gateway на контракте 2.0.
Как убедиться, что версия новая:
| Что | Как проверить | Признак новой версии |
|---|---|---|
| Ядро и экран | открыть любой документ ОСВ или форму | на экране «Просмотр ОСВ» над таблицей блок «Предупреждения (N)»; в панели «Первичные документы» под статусом документа — значок с числом (ⓘ / ❗ N) |
| tabular-parser (Excel) | загрузить любую ОСВ из 1С и нажать значок с числом под статусом | в разделе «Предупреждения документа» — «Информация: иерархия строк — по группировке листа (outline)». Старый сервис: вместо этого раздел «Предупреждения файла» с текстом вида `sheet=TDSheet hierarchy=outline` |
| scan-gateway (PDF) | загрузить PDF формы | в списке предупреждений документа тексты вида «Дата отчёта не разобрана», «склеенная строка сетки 73 разделена на 2 строк». Старый сервис: «Предупреждения файла» вида `<…>.json: table:0: строк с нечисловым кодом пропущено: 8` |
| Очистка форм | открыть панель документов ЮЛ, где до выкладки были ББ/ОФР | ни одного «Бух. баланс» / «ОФР» с датой загрузки раньше выкладки |
Если сервис ещё старый (окно перехода), формы и ОСВ всё равно принимаются и экран работает, но без новых сигналов
качества (сценарий N58). Это не баг — сообщите владельцу, что сервис не обновлён.
**Повторная загрузка после очистки.** Файл, удалённый целиком, загружается заново как новый. Смешанный файл, у
которого удалены только формы, повторно не загрузится: «файл … уже загружен для этого ЮЛ» (дубликат по содержимому).
Чтобы получить его формы — удалите файл (если его ОСВ не подтверждены вручную) и загрузите заново, либо загрузите копию,
пересохранённую в Excel.
**Файлы.** Репозиторий тестовых данных `fixtures` в контур не переносится. Ниже у каждого сценария указан файл из наших
фикстур (если у вас есть его копия) и чем он особенный — чтобы подобрать аналог среди отчётности на стенде. Загружайте
формы на ЮЛ с тем же ИНН, что в шапке формы: иначе «Контрагент ✗» и автоподтверждения не будет (это правильно, но
мешает проверять другое).
| Файл | Путь в fixtures | Что в нём особенного |
|---|---|---|
| Т1 | `statements-xlsx/mezheninovskaya/2025-Q3/1_Форма1_бух_09.xlsx` | чистый ББ из 1С, ФСБУ 4, три колонки (30.09.2025, 31.12.2024, 31.12.2023), 37 строк с кодом; правее таблицы в столбцах U–W числа и формулы аналитика; ИНН 7016006635 |
| Т2 | `statements-xlsx/mezheninovskaya/2025-Q3/1_Форма2_бух_09.xlsx` | чистый ОФР того же ЮЛ, две колонки |
| Т3 | `statements-xlsx/npz/2025-Q3/Бухгалтерская отчетность за Январь - Сентябрь 2025 г. (НОВОРОССИЙСКИЙ ПРОКАТНЫЙ ЗАВОД).xlsx` | одна книга: ББ на нескольких листах (листы 2–5 без шапки) и ОФР; в шапке ОФР нет ИНН; пятизначные подстроки (11501…) |
| Т4 | `statements-xlsx/unagrande-co/2024-FY/Б.Б Лист 1.xls` | постраничная печать 1С: в файле только страница 1 баланса (актив, есть 1600, нет 1700) |
| Т5 | `statements-xlsx/unagrande-co/2024-FY/Б.Б. Лист 2.xls` | страница 2 того же баланса (пассив) отдельным файлом: нет шапки (ни организации, ни ИНН, ни единиц), есть 1700, нет 1600 |
| Т6 | `statements-xlsx/synthetic/st01_both_forms_one_sheet.xlsx` | ББ и ОФР на одном листе |
| Т7 | `statements-xlsx/synthetic/st03_no_codes.xlsx` | форма без колонки кодов |
| Т8 | `statements-xlsx/synthetic/st04_mixed_book.xlsx` | книга: лист ОСВ и лист ББ |
| Т9 | `statements-xlsx/synthetic/st06_header_variants.xlsx` | ОФР и пять листов приложений (расшифровки, ОДДС, отчёт об изменениях капитала, целевое использование) |
| Т10 | `statements-xlsx/templates/ББ до 01.01.2025.xlsx` | пустой бланк банка: нет организации, ИНН, даты, сумм |
| Т11 | `ocr/aep_3.pdf` | плохой скан ББ и ОФР за 2024 год (66н): мусор в шапке, нечитаемые коды, 24 нарушения; второй json ответа ИС — ошибка |
| Т12 | `ocr/aep_6.pdf` | скан ООО «Дорстроймонтаж» на 30.06.2025 (ФСБУ 4): ИНН не распознан, в поле даты — текст организации, 20 расшифровок |
| Т13 | `statements/rb/Бухгалтерская отчетность 1 кв.25.pdf` | чистый скан ББ и ОФР АО «Русский бисквит» (ИНН 3528052718) за 1 кв. 2025: все проверки сходятся, 40 расшифровок в ББ, одна склеенная строка |
| Т14 | `statements/schastl/БО 1 кв 2025.PDF` | скан ООО «Пекарня Счастливочная» (ИНН 3528104476) за 1 кв. 2025: проверки сходятся, поле даты отчёта не разобрано |
Про PDF: на локальном стенде ответы ИС подставляет эмулятор (сохранённые ответы настоящей ИС), в контуре отвечает
настоящая ИС Сканирование. Распознавание может немного отличаться (другая уверенность, другие нечитаемые ячейки) — сверяйте
поведение по смыслу, а не точные числа предупреждений.
## 4. Справка: что видно на экране
### 4.1 Статусы и подсветка
| Что видно | Что значит |
|---|---|
| статус «Загружен» (зелёный) | документ подтверждён — пользователем или автоматически |
| статус «Требуется проверка» (оранжевый) | нужна проверка аналитика (так же выглядят документы, ставшие «Распознан» после правки, — `RECOGNIZED`) |
| статус «Ошибка» | файл не разобран (причина — во всплывающем списке значка) |
| оранжевый фон ячейки суммы | значение требует внимания: сомнительное и не подтверждено проверкой, или участвует в несошедшемся соотношении |
| оранжевый фон наименования и кода строки | сомнительный код строки: подтвердите («Подтвердить код») или смените |
| розовая строка целиком, код серым | строка без разобранного кода: «Код не распознан: «<текст>»» или «—» с подсказкой «Кода в строке нет» |
| голубой фон | исправлено аналитиком; подсказка «Исходное: …» |
| серая галочка перед суммой | значение подтверждено аналитиком без изменения («Подтверждено аналитиком» в подсказке) |
| серый текст в ячейке суммы | текст ячейки, который не удалось прочитать как число (подсказка «Не распознано как сумма: «…»») |
| фиолетовые строки 1600 / 1700 | итог «БАЛАНС» (как раньше) |
| красный значок ❗ / синий ⓘ у ячейки, строки, заголовка колонки, поля шапки | у этого места есть предупреждение уровня «Ошибка» / «Информация»; текст — в подсказке |
| переключатель «Показать расшифровки (N)» | в форме N строк-расшифровок; по умолчанию скрыты, включённые стоят под своей строкой с отступом, код пуст, подсказка «Расшифровка — в суммы формы не входит» |
| переключатель «Показать пустые строки детализации (N)» | пустые подстроки бланка скрыты (как раньше) |
| ссылка «Разберите строки без кода: N» над шапкой | в форме N строк без кода с суммами; клик ведёт к первой; «Подтвердить данные» неактивна |
| подсказка ячейки | «Распознано: «<сырой текст>»», «Уверенность: N%», «Исходное: …», «Подтверждено аналитиком», тексты предупреждений этой ячейки |
| подсказка поля шапки | «Распознано: «<текст>» · уверенность N%» или «Исходное: …» после правки |
| блоки над таблицей | «Проверки пройдены» (зелёный); «Нарушения (N)» (красный, жёсткие соотношения §7, блокируют подтверждение до «Принять с комментарием»); «Предупреждения проверок (N)» (жёлтый, мягкие соотношения, не блокируют); «Межформенная проверка ББ↔ОФР» (жёлтый, не блокирует); «Нарушения приняты»; «Предупреждения (N)» — предупреждения документа, показаны первые 3, «Показать все (N)» |
Уровни предупреждений: **«Ошибка»** — данные или их полнота под сомнением, документ не подтвердится автоматически;
**«Информация»** — к сведению, на статус не влияет.
### 4.2 Тексты предупреждений (справка)
Код виден в ответе API (`GET /documents/{id}/statement`, поле `issues[].code`) — его указывайте в баге.
| Код | Уровень | Текст на экране (пример) | Что значит и что делать |
|---|---|---|---|
| `JSON_FAILED` | Ошибка, файл | `INVALID_DOCUMENT: Не удалось определить тип документа. — file:<…>_ofr.json` | один из ответов ИС по файлу — ошибка: часть формы могла потеряться; документы файла не подтверждаются автоматически. Снимается только перезагрузкой |
| `TABLE_LOST`, `TABLE_PARSE_ERROR` | Ошибка, файл | — | таблица ответа ИС не разобрана; перезагрузка |
| `CODE_COLUMN_NOT_FOUND` | Ошибка | «столбец кодов строк не найден» | форма без колонки кодов: строк из файла нет, только пустые строки бланка |
| `SEGMENT_WITHOUT_CODES`, `SHEET_NOT_JOINED`, `CONTINUATION_TYPE_CONFLICT` | Ошибка | — | лист или страница-продолжение не присоединились к форме; перезагрузка |
| `SEGMENT_COLUMNS_MISMATCH` | Ошибка | «в сегменте со строки N колонок значений 1, в первом сегменте 0…» | на продолжении другое число колонок сумм; значения разложены по порядку — проверьте; перезагрузка |
| `HEADER_ROW_NOT_FOUND` | Ошибка | «строка заголовка таблицы не найдена» | у колонок нет подписей и дат; заголовки «Колонка N» |
| `COLUMN_WITHOUT_DATE` | Ошибка | «у столбца N с числами нет разобранной подписи периода» | колонка с суммами без даты; поставьте дату колонке в режиме правки |
| `COLUMN_DATE_UNCERTAIN` | Ошибка | «дата подписи столбца N («…») не подтверждена» | дата колонки распознана неуверенно; проверьте и нажмите «Подтвердить» под датой колонки |
| `TYPE_CONFLICT` | Ошибка | «тип по кодам строк (…) противоречит типу по заголовку (…)» | перезагрузка |
| `NO_ORGANIZATION_NO_INN` | Ошибка | «В шапке нет ни организации, ни ИНН» | впишите ИНН или организацию в шапке — предупреждение снимется |
| `PERIOD_UNKNOWN` | Ошибка | «Отчётный период не определён: нет ни даты отчёта, ни дат колонок» | впишите дату отчёта |
| `REPORT_DATE_UNCERTAIN` | Ошибка | «Дата отчёта неуверенна и не подтверждена колонками» | проверьте дату и нажмите «Подтвердить» под полем или исправьте |
| `XLSB_SCALE_SUSPECT` | Ошибка | — | книга xlsb, «тыс. руб.» и суммы с копейками: возможен масштаб ×1000 |
| `INN_NOT_FOUND`, `INN_UNCERTAIN` | Информация | «ИНН не найден», «ИНН распознан неуверенно» | ИНН сверяет ядро с ЮЛ («Контрагент ✓/✗») |
| `ORGANIZATION_NOT_FOUND`, `ORGANIZATION_UNCERTAIN` | Информация | «Организация не найдена», «Название организации распознано неуверенно» | к сведению |
| `REPORT_DATE_UNPARSED` | Информация | «Дата отчёта не разобрана» | период взят по датам колонок; можно вписать дату |
| `UNITS_NOT_FOUND` | Информация | «Единицы измерения не найдены» | впишите единицу в шапке |
| `COLUMN_SKIPPED` | Информация | «столбец N («Изменение») пропущен: не период» | служебная колонка («Изменение», «Отклонение», «%», «Примечание») не взята |
| `FRACTIONAL_IN_THOUSANDS` | Информация | «единицы «тыс. руб.», но N из M значений с дробной частью» | проверьте единицы |
| `XLSB_NO_FORMATS`, `NUMBER_FORMAT_UNPARSED`, `VALUE_OUT_OF_RANGE`, `XLS_NO_CODEPAGE`, `FILE_TYPE_MISMATCH`, `SHEET_OTHER`, `TABLE_SKIPPED` | Информация | — | особенности файла, на данные не влияют |
| `ROW_SPLIT` | Информация | «склеенная строка сетки 73 разделена на 2 строк» | ИС склеила две строки бланка в одну, сервис их разделил; суммы проверены соотношениями |
| `NUMBERS_OUTSIDE_TABLE` | Информация | «числа правее таблицы формы не учитываются: TDSheet!V45, …» | числа справа от таблицы (формулы аналитика) в форму не взяты (Р-44) |
| `RELATION_FAILED` | Ошибка | блок «Нарушения»: «Колонка N: 1600 = 1100 + 1200 — ожидалось X, получено Y» | жёсткое соотношение §7 не сошлось |
| `RELATION_SOFT` | Информация | блок «Предупреждения проверок» | мягкое соотношение (подстроки, 2400, расхождение в пределах округления) — не блокирует |
| `CODE_NOT_IN_DICTIONARY` | Информация (ядро) | «кода 2350 нет в словаре наименований редакции» | код не из справочника банка; наименование — из файла |
| `CODE_NOT_IN_EDITION` | Информация (ядро) | «код N не входит в перечень кодов редакции формы» | к сведению |
| `NAME_MISMATCH` | Информация (ядро) | «наименование «Целевой капитал» не совпало со справочным для кода 1320» | у строки с сомнительным кодом наименование не совпало со справочным: такая форма не подтверждается автоматически; проверьте код |
| `STATEMENTS_VERSION_MISMATCH` | Информация (ядро) | «форма распознана общим кодом версии X, в ядре версия Y» | после правки, если сервис и ядро на разных версиях общего кода; к сведению |
| `MAPPING_WARNING` | Информация (ядро) | тексты обработки, как раньше («период формы не определён …») | к сведению |
| `LEGACY_WARNING` | Информация | старый текст предупреждения сервиса | результат от сервиса старой версии (1.x), см. N58 |
| `OSV_*` | Информация | «иерархия строк — по группировке листа (outline)» и др. | предупреждения листа ОСВ, на статус не влияют |
## 5. Чек-лист сценариев
Отмечайте: ✅ ожидание совпало / ❌ баг (с номером issue) / ⚠️ вопрос. Пользователь — аналитик с правом правки
документов (как `ka_go` на локальном стенде). Сценарии с пометкой **(спека)** на локальном стенде не прогонялись —
ожидание взято из правил; расхождение — повод для вопроса, а не обязательно баг.
### 5.1 Excel: ББ и ОФР
| № | Файл | Шаги | Ожидание |
|---|---|---|---|
| N1 | Т1 | загрузить на ЮЛ с ИНН шапки, дождаться обработки (5–15 с), открыть «Бух. баланс» | «Загружен» сразу (автоподтверждение), «Контрагент ✓»; под статусом синий значок «ⓘ 1». На экране: «Проверки пройдены»; «Предупреждения (1)» — «Информация: числа правее таблицы формы не учитываются: TDSheet!V45, TDSheet!W57, …»; три колонки с датами из подписей; оранжевых ячеек нет; столбцов U–W в таблице нет |
| N2 | Т2 | загрузить тому же ЮЛ, открыть «ОФР» | «Загружен»; две колонки периодов; блок «Межформенная проверка ББ↔ОФР» может появиться — он жёлтый и подтверждение не блокирует |
| N3 | Т3 | загрузить на ЮЛ НПЗ, открыть оба документа | два документа из одной книги: «Бух. баланс» и «ОФР». В ББ — строки **всех** листов (листы без шапки присоединены, ни одна строка не потеряна), пятизначные подстроки под своей строкой; «Предупреждения проверок (N)» по подстрокам (11501…, 14101…) — жёлтые, не блокируют. В ОФР — «Информация: ИНН не найден». Оба «Загружен», если организация совпала с ЮЛ |
| N4 | Т4 | загрузить, открыть ББ | «Требуется проверка»; «Нарушения (3)»: «Колонка N: 1600 = 1700 — ожидалось <сумма 1600>, получено —» по каждой колонке (1700 на этом листе нет). Номер колонки — см. известное замечание I-1. «Принять с комментарием» → комментарий → «Принять» → «Нарушения приняты»; «Подтвердить данные» проходит |
| N5 | Т5 | загрузить на другое ЮЛ (не то, где Т4), открыть ББ | «Требуется проверка»; в шапке все поля «—»; «Предупреждения»: «Ошибка: В шапке нет ни организации, ни ИНН», «Информация: Единицы измерения не найдены»; «Нарушения»: «1600 = 1700 — цель не заполнена, получено <сумма 1700>». «Редактировать» → вписать ИНН → «Сохранить»: ошибка про организацию и ИНН исчезла (информация про единицы остаётся — M-4) |
| N6 | Т6 | загрузить, открыть оба документа | из одного листа два документа: «Бух. баланс» (коды 1xxx) и «ОФР» (коды 2xxx) |
| N7 | Т7 | загрузить, открыть ББ | «Требуется проверка»; «Ошибка: столбец кодов строк не найден»; в таблице только пустые строки бланка («-»), строк из файла нет. «Подтвердить данные» активна и проходит — известное замечание I-4 |
| N8 | Т10 | загрузить, открыть ББ, нажать «Подтвердить данные» | «Требуется проверка»; «Ошибка: Отчётный период не определён…», «Ошибка: В шапке нет ни организации, ни ИНН»; подтверждение — красный блок «<текст сервера>. Исправьте дату отчёта в шапке и сохраните.» (`PERIOD_REQUIRED`) |
| N9 | свой: любой ББ, в свободный столбец справа от таблицы (без подписи) вписать несколько чисел в строках с кодами | загрузить, открыть | статус как у исходного файла; «Информация: числа правее таблицы формы не учитываются: <адреса ваших ячеек>»; лишней колонки в форме нет |
| N10 | свой: тот же ББ, но над столбцом с числами подпись «Итог» (не период) и столбец **между** колонками периодов | загрузить, открыть | колонка «Итог» в форме без даты; «Ошибка» у заголовка колонки: «у столбца N с числами нет разобранной подписи периода»; «Требуется проверка». «Редактировать» → под заголовком колонки поле «ГГГГ-ММ-ДД» → дата → «Сохранить»: заголовок «На <дата>», ошибка снята. Подпись «Изменение» / «%» / «Примечание» → колонка не взята, «Информация: столбец N («Изменение») пропущен: не период» |
| N11 | свой (спека): ББ с единицей «тыс. руб.», где суммы с копейками; то же, сохранённое как xlsb | загрузить оба | xlsx: «Информация: единицы «тыс. руб.», но N из M значений с дробной частью», статус не меняется; xlsb: «Ошибка» (подозрение на масштаб ×1000), «Требуется проверка» |
### 5.2 PDF: ББ и ОФР
| № | Файл | Шаги | Ожидание |
|---|---|---|---|
| N12 | Т13 | загрузить на ЮЛ «Русский бисквит», дождаться (до нескольких минут), открыть «Бух. баланс» | оба документа «Загружен» (автоподтверждение скана); в ББ «Проверки пройдены», «Информация: склеенная строка сетки N разделена на 2 строк» со ссылкой «Показать»; переключатель «Показать расшифровки (40)»; колонки «На 31 марта 2025 г.» и т. п.; оранжевых ячеек нет |
| N13 | Т14 | загрузить на ЮЛ «Пекарня Счастливочная», открыть ББ | «Загружен»; в шапке «Дата отчёта» — «—» с синим ⓘ «Дата отчёта не разобрана» (известное замечание I-2); период документа в панели — «2025 К1» (по датам колонок); «Показать расшифровки (20)» |
| N14 | Т11 | загрузить на любое ЮЛ, открыть «Бух. баланс» | «Требуется проверка», «Контрагент ✗»; ссылка «Разберите строки без кода: 5», «Подтвердить данные» неактивна; «Нарушения (24)»; «Предупреждения»: «Ошибка: строка заголовка таблицы не найдена», «Ошибка: Дата отчёта неуверенна и не подтверждена колонками», «Информация: ИНН распознан неуверенно», «Информация: Название организации распознано неуверенно», «Информация: наименование «…» не совпало со справочным для кода 1320»; колонки «Колонка 3», «Колонка 5», «Колонка 6» (I-1); поле «Дата отчёта» оранжевое. В панели значок ❗ с числом, в списке «Предупреждения файла» — «Ошибка: INVALID_DOCUMENT …_ofr.json» (на эмуляторе; в контуре — если ИС снова вернёт ошибку по второй части) |
| N15 | Т12 | загрузить, открыть ББ и ОФР | ББ: «Требуется проверка», «Проверки пройдены»; «ИНН —» с ⓘ «ИНН не найден», «Дата отчёта —» с ⓘ «Дата отчёта не разобрана»; «Предупреждения (3)», среди них «Информация: наименование «…» не совпало со справочным для кода 1530» со ссылкой «Показать»; две розовые строки «код не распознан» **без сумм** — подтверждение они не блокируют (ссылки «Разберите строки…» нет, «Подтвердить данные» активна); «Показать расшифровки (20)». ОФР: «Нарушения (1)» по `2300 = 2200 + 2310 + 2320 - 2330 + 2340 - 2350`, «Предупреждения проверок (1)» по `2410 = 2411 + 2412` |
| N16 | PDF, который ИС не может разобрать (не отчётность, пустая страница) | загрузить | файл «Ошибка»; в списке значка — «Предупреждения файла»: «Ошибка» с текстом ИС (например, «INVALID_DOCUMENT: Не удалось определить тип документа») |
### 5.3 Шапка: организация, ИНН, дата, единицы
| № | Файл | Шаги | Ожидание |
|---|---|---|---|
| N17 | Т11 или Т14 | навести на поля шапки | подсказка «Распознано: «<текст>» · уверенность N%»; поле из списка «требует внимания» — оранжевое |
| N18 | Т11 (дата 31.12.2024 оранжевая, «Ошибка: Дата отчёта неуверенна…») | «Редактировать» → под полем даты «Подтвердить» (станет «Подтверждено») → «Сохранить» | дата та же, оранжевый фон снят, ошибка про дату исчезла из списка; изменения сохранены одним запросом |
| N19 | любая неподтверждённая форма | дата отчёта `2025-06-30` → «Сохранить»; затем `2025-09-15` → «Сохранить» → «Подтвердить данные» | период документа пересчитан (2025 К2); у колонок с относительными подписями («На отчётную дату») даты пересчитаны; дата не на конец квартала — подтверждение: «… Исправьте дату отчёта в шапке и сохраните.» Дата вводится строго `ГГГГ-ММ-ДД` |
| N20 | любая неподтверждённая форма | ИНН `123` → «Сохранить»; затем ИНН другого ЮЛ | `123` — ошибка с текстом сервера (неверный ИНН), ничего не сохранено; другой ИНН — сохранено, поле голубое («Исходное: …»), в панели «Контрагент ✗» |
| N21 | Т5 | «Организация» — вписать наименование ЮЛ → «Сохранить» | сохранено, поле голубое (подсказки «Распознано» нет — в файле организации не было); «Контрагент» пересчитан; «Ошибка: В шапке нет ни организации, ни ИНН» снята. Текст длиннее 1000 символов — «Наименование организации — не длиннее 1000 символов», запрос не уходит |
| N22 | Т5 | «Единица измерения» → `тыс. руб.` → «Сохранить» | сохранено, поле голубое. Очистить поле шапки нельзя — только заменить (как раньше). ОКУД, ОКПО, ОКЕИ, адрес на экране не показываются |
### 5.4 Строки и коды
Удобный файл — Т11 (пять строк без кода с суммами, расшифровки, сомнительные коды); на стенде контура — любой плохой
скан, где после загрузки есть ссылка «Разберите строки без кода».
| № | Шаги | Ожидание |
|---|---|---|
| N23 | найти розовые строки | строка «код не распознан» стоит сразу под строкой, после которой она шла в файле (например, «12 /» — под предыдущей строкой раздела); в ячейке кода серый сырой текст, подсказка «Код не распознан: «12 /»». Строка «кода нет» — «—», подсказка «Кода в строке нет»; без строки выше — в начале первого раздела |
| N24 | включить «Показать расшифровки (N)» | расшифровки появились под своими строками с отступом, код пуст; оранжевой подсветки у их сумм нет, подсказка с распознанным текстом есть; выключить — скрыты. Итоги разделов и проверки расшифровки не учитывают |
| N25 | «Редактировать» → в поле «Код» розовой строки начать вводить `12` | выпадает подсказка «1230 — Дебиторская задолженность» и т. п. (справочник редакции формы); выбрать → «Сохранить» → «Изменения сохранены»; строка переехала на место кода, не розовая, подсказка кода «Код назначен аналитиком»; счётчик «Разберите строки без кода» уменьшился; проверки пересчитаны |
| N26 | в поле «Код» ввести `12` или `abc` → «Сохранить» | красная рамка у поля, «Код — 4 или 5 цифр», запрос не уходит |
| N27 | у розовой строки меню «⋮» → «Это расшифровка» → «Сохранить» | до сохранения у кода тег «→ расшифровка»; после — строка ушла в расшифровки (видна при включённом переключателе), счётчик «Разберите строки…» уменьшился |
| N28 | у обычной строки из файла «⋮» → «Сделать расшифровкой» → «Сохранить»; затем у неё же (в расшифровках) «⋮» → «Назначить код» → прежний код → «Сохранить» | строка ушла в расшифровки и её суммы перестали участвовать в проверках (могут появиться нарушения); после назначения кода — вернулась на место. У пустых строк бланка (достроенных) меню нет |
| N29 | у обычной строки «⋮» → «Сменить код» → другой код → «Сохранить» | строка переехала на место нового кода, подсказка «Код назначен аналитиком»; «⋮» → «Отменить изменение строки» до сохранения возвращает как было |
| N30 | строка с оранжевыми наименованием и кодом (подсказка кода «Уверенность кода: 50%») → «⋮» → «Подтвердить код» → «Сохранить» | тег «→ код подтверждён» до сохранения; после — подсветка снята, подсказка «Код подтверждён»; «⋮» → «Снять подтверждение кода» → «Сохранить» — подсветка вернулась |
| N31 | форма с законным повтором кода (ББ 2025 из 1С: две строки 1220 — «НДС, начисленный по отгрузке» и НДС по приобретённым ценностям; или 1520 «Обязательство по аренде») | обе строки видны, в порядке файла; в проверках §7 их суммы складываются; предупреждения о повторе нет |
| N32 | (спека) назначить пустой строке бланка `X` сумму → «Сохранить»; затем другой строке назначить код `X` → «Сохранить»; затем сделать оба действия одним сохранением | 409 у поля кода: текст сервера «код занят строкой, созданной правкой, с суммами», ничего не сохранено; одним сохранением — «Код X назначается строке, а в шаблонную строку X введены суммы — сохраните по очереди», запрос не уходит. Назначение кода, который уже есть у **строки из файла**, разрешено (повтор кода законен, см. M-1) |
### 5.5 Суммы и правка
| № | Шаги | Ожидание |
|---|---|---|
| N33 | Т11 или Т12: навести на оранжевую ячейку и на неподсвеченную | у обеих подсказка «Распознано: «…»», «Уверенность: N%»; неподсвеченная с уверенностью ниже 100 % — значит, её подтвердила сошедшаяся проверка (так задумано, Р-7) |
| N34 | «Редактировать» → сумма в ячейке → «Сохранить» | ячейка голубая, подсказка «Исходное: <было>»; проверки и статус пересчитаны; вернуть исходную сумму → голубой фон снят. Ввод `abc` или `1.234` — красная рамка «Неверный формат суммы», запрос не уходит |
| N35 | «Редактировать» → у оранжевой ячейки кнопка ✓ «Подтвердить значение» → «Сохранить» | до сохранения кнопка синяя, подсказка «Подтверждение будет сохранено — нажмите, чтобы убрать»; после — серая галочка перед суммой, оранжевый фон снят, ячейка **не** голубая, сумма прежняя; подсказка «Подтверждено аналитиком». Кнопка ↶ «Снять подтверждение» → «Сохранить» — подсветка вернулась. Ввод суммы в ту же ячейку отменяет подтверждение |
| N36 | ячейка с серым текстом (не число) → «Редактировать» | в поле ввода — пусто (нераспознанный текст не показан, M-3); вписать сумму → «Сохранить» → сумма, голубая |
| N37 | «Редактировать» → поменять суммы → «Отменить» | правки сброшены, запроса нет |
| N38 | (для тех, у кого есть доступ к БД аудита) после N34–N35 | одна запись `RECOGNIZED_DATA_EDIT` на одно сохранение с `before`/`after` |
### 5.6 Проверки §7
| № | Шаги | Ожидание |
|---|---|---|
| N39 | неподтверждённая форма без нарушений: увеличить сумму 1600 первой колонки на 100 → «Сохранить» | «Нарушения (N)»: «Колонка N: 1600 = 1100 + 1200 — ожидалось X, получено Y» и/или `1600 = 1700`; ячейки соотношения оранжевые; статус «Требуется проверка». «Показать» прокручивает к строке (без рамки — F-1) |
| N40 | «Подтвердить данные» | красный блок с текстом сервера и списком нарушений; документ не подтверждён |
| N41 | «Принять с комментарием» при несохранённых правках; затем после сохранения | при несохранённых — кнопка неактивна, подсказка «Сначала сохраните изменения»; окно «Принять нарушения»: с пустым комментарием «Принять» неактивна; после — «Нарушения приняты» с датой и комментарием; «Подтвердить данные» проходит |
| N42 | после N41: подтвердить ячейку (N35) → «Сохранить»; затем изменить сумму → «Сохранить» | подтверждение ячейки, кода или даты принятие **не** сбрасывает; правка суммы сбрасывает («Нарушения приняты» пропал) |
| N43 | вернуть сумму 1600 → «Сохранить» | «Проверки пройдены»; статус «Требуется проверка» до ручного подтверждения (после правки форма не подтверждается автоматически) |
| N44 | в чистой форме очистить ячейку 1600 (пустое поле) → «Сохранить» | нарушение «1600 = 1100 + 1200 — цель не заполнена, получено <сумма>»: пустой итог при заполненных слагаемых — теперь нарушение |
| N45 | Т3 или Т4: блок «Предупреждения проверок (N)» | жёлтый, «Показать» у каждой строки; подтверждение не блокирует, «Принять» для них не нужно |
### 5.7 Подтверждение формы и блокировки
| № | Шаги | Ожидание |
|---|---|---|
| N46 | Т11, ББ: ссылка «Разберите строки без кода: 5» | клик — прокрутка к первой такой строке; «Подтвердить данные» неактивна. Разобрать все пять (назначить код или «Это расшифровка», N25/N27) → кнопка активна (останутся нарушения — их принять, N41) |
| N47 | (спека) книга Excel с двумя листами одной формы за один период (скопировать лист ББ с шапкой) | в файле два документа «Бух. баланс», оба «Требуется проверка» (ни один не подтверждается автоматически); подтвердить первый — проходит; второй — красный блок с текстом сервера и ссылкой «Открыть подтверждённую форму» |
| N48 | подтверждённая форма | «Редактировать» и «Подтвердить данные» неактивны, «Принять с комментарием» нет; читать и смотреть подсказки можно |
| N49 | Т13 или Т1 на ЮЛ **с другим** ИНН | «Требуется проверка», «Контрагент ✗»; ручное подтверждение проходит |
### 5.8 Повторная загрузка и автозамена
| № | Шаги | Ожидание |
|---|---|---|
| N50 | загрузить тот же файл ещё раз | «Отклонено: 1», «<имя> — файл «<имя>» уже загружен для этого ЮЛ» |
| N51 | форма ББ за период уже загружена; загрузить другой файл ББ того же ЮЛ и периода (например, тот же, пересохранённый в Excel) | старый файл «Заменён» (виден по переключателю «Все документы организации»), новая форма разобрана заново; подтверждённая старая форма тоже заменяется (как раньше). Подтвердить документ заменённого файла нельзя |
| N52 | Т4 подтвердить; затем тому же ЮЛ загрузить Т5 | файл Т4 «Заменён» файлом Т5 — известное замечание I-3 |
| N53 | после очистки: файл, где были только формы и который загружали до выкладки | загружается заново как новый, формы разобраны по новым правилам. Смешанный файл (ОСВ + формы), у которого удалены только формы, — «уже загружен» (раздел 3) |
### 5.9 Файлы с несколькими документами
| № | Файл | Ожидание |
|---|---|---|
| N54 | Т8 | два документа: «ОСВ <счёт>» и «Бух. баланс»; статус каждого — свой (ОСВ не ждёт формы и наоборот) |
| N55 | Т9 | «ОФР» и «Расшифровка»; приложения дают **один** документ «Расшифровка» вместо пяти — известное замечание M-9; документ «Расшифровка» не открывается (как раньше) |
| N56 | Т11 | ББ и ОФР из одного PDF; при ошибке по части ответа ИС («Предупреждения файла»: «Ошибка: … .json») ни один документ файла не подтверждается автоматически |
### 5.10 ОСВ не сломалась (регресс)
| № | Шаги | Ожидание |
|---|---|---|
| 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 |
### 5.11 Консолидация и сводная ОСВ (регресс)
Контрольные цифры — на комплекте РБ и Счастливочной (те же файлы, что в наших фикстурах `osv/rb/`, `osv/schastl/`,
22 ОСВ за 2024 Q1–Q3; порядок загрузки — `qa-guide.md` 7.1, W18). На других данных сравните свод с выгрузкой до
выкладки, если она есть.
| № | Шаги | Ожидание |
|---|---|---|
| N60 | версия «Русский Бисквит» 2024 К3, все 22 ОСВ подтверждены, «К отчётности →» | «Строк: 1385»; баннер «… Осталось: 1236.»; «Пробелы: 7» (РБ 01, 58.03, 66, 67, 76; Счастливочная 01, 02); фильтр «Тип контрагента»: «ГСК» — 10, «ГК» — 26, «Внешний» — 1349 строк (сумма 1385) |
| N61 | фильтры «Компания ГК» = Счастливочная, «Контрагенты» = `бисквит` | «Строк: 6» (`60.01`, `60.02`, `62.01`, `62.02`, `76.06`, `76.АВ`), суммы — как в `qa-guide.md` 7.2 и W32 |
| N62 | версия 2025 К1 тех же ЮЛ (16 ОСВ за 1 кв. 2025) | «Строк: 1421», пробелов нет |
| N63 | в версии загрузить и подтвердить ББ и ОФР ЮЛ за период версии | в «Организациях» у ЮЛ «Бух.баланс» и «ОФР» — «Загружен»; формы в свод ОСВ не входят; форма за другой квартал ячейку не закрывает |
| N64 | «Экспорт» свода | xlsx открывается, число строк = «Строк» на экране, лист «Пробелы» |
### 5.12 Права
| № | Пользователь | Шаги | Ожидание |
|---|---|---|---|
| N65 | только просмотр (эксперт) | открыть форму; «Редактировать» → «Сохранить»; «Принять с комментарием»; «Подтвердить данные» | форма и подсказки видны; каждое действие — уведомление с текстом сервера «недостаточно прав: требуется DOCUMENT_EDIT», ничего не изменилось |
| N66 | пользователь другого филиала | открыть форму ЮЛ чужого филиала по ссылке | «не найдено» (как у несуществующего документа) |
## 6. Известные замечания (не заводить как баги)
Найдены на приёмочных прогонах 18–19.10.2026, исправляются одной пачкой. Если видите то же самое — отметьте «известно,
<номер>» и идите дальше. Если проявление другое или хуже — заводите баг со ссылкой на номер.
| № | Где | Как проявляется |
|---|---|---|
| I-1 | список «Нарушения» и «Предупреждения проверок»; заголовки колонок без подписи и даты | «Колонка N» — это номер столбца листа Excel (или таблицы ИС), а не порядковый номер колонки формы. Унагранде «Б.Б Лист 1» — «Колонка 25», «Колонка 29», «Колонка 36» (столбцы Y, AC, AJ листа) вместо 1, 2, 3; скан aep_3 — заголовки «Колонка 3», «Колонка 5», «Колонка 6». Сверяйте по подписи колонки или по порядку |
| I-2 | шапка формы из PDF | у «БО 1 кв 2025» (и aep_6) «Дата отчёта» пустая с «Информация: Дата отчёта не разобрана», а в подсказке поля «Распознано: «Общество с ограниченной ответственностью "Пекарня»» — ИС кладёт в поле даты текст организации. Период документа верный (по датам колонок) |
| I-3 | автозамена | страница 2 баланса без шапки («Лист 2», отдельный файл) того же ЮЛ и периода заменяет уже подтверждённую страницу 1 («Лист 1»): файл страницы 1 становится «Заменён». Склейки страниц из разных файлов нет (OQ-140) |
| I-4 | «Подтвердить данные» | подтверждение проходит у формы без единого значения (файл без колонки кодов — только пустые строки бланка) и у формы с предупреждениями уровня «Ошибка» («В шапке нет ни организации, ни ИНН» у страницы без шапки). Предупреждения «Ошибка» запрещают только автоподтверждение |
| I-5 | ОСВ | квартальная ОСВ сч. 01 без оборотов (Счастливочная 2025 Q2 и Q3) считается «нарастающей» и получает «Требуется проверка»; правило «нарастающая по данным Q1» — со Среза 2c, не новое (проверяется, регрессия ли) |
| M-1 | назначение кода | назначение строке кода, который уже есть у другой строки **из файла**, проходит без предупреждения. Так по правилам: повтор кода законен (Р-4), а ошибка «код занят» возникает только против строки, созданной аналитиком, с суммами. Нужна ли подсказка о повторе — вопрос владельцу |
| M-2 | API | уточнено, не дефект: `PATCH …/statement` с полем `is_detail` отклоняется (422), потому что такого поля нет; «сделать расшифровкой» — `lines: [{line_id, line_status: "detail"}]`, экран отправляет именно так |
| M-3 | режим «Редактировать» | в поле суммы — сырое значение без форматирования («30127.00» вместо «30 127»); у ячейки с нераспознанным текстом (серый текст) поле пустое — текст в режиме правки не виден |
| M-4 | шапка | правка поля снимает только связанные с ним предупреждения «Ошибка» («В шапке нет ни организации, ни ИНН», «Отчётный период не определён», «Дата отчёта неуверенна…») и «Дата отчёта не разобрана». «Информация» «ИНН не найден», «ИНН распознан неуверенно», «Название организации распознано неуверенно», «Единицы измерения не найдены» остаются в списке и после исправления поля |
| M-5 | тексты | у форм, принятых от старого (1.x) и нового (2.0) сервиса, одни и те же ситуации описаны разными словами |
| M-6 | ОСВ | ОСВ в «Требуется проверка», хотя в её списке предупреждений только «Информация» (Агрокомплекс ОСВ 62 и 76 за 9 мес. 2025, НКЗ 58): причина (несошедшиеся суммы, признак «нарастающая») на экране не видна |
| M-7 | шапка формы из PDF | в «Организация» мусор: ведущее «:» и перенос строки внутри («Общество с ограниченной ответственностью "Пекарня : "Счастливочная""», «: Акционерное общество "Русский бисквит"»); у плохого скана — весь текст верха страницы |
| M-8 | тексты нарушений | при пустой стороне соотношения формулировки непонятны: «цель не заполнена, получено X» (пустой итог) и «ожидалось X, получено —» (пустые слагаемые); нарушения в списке идут не по порядку колонок |
| M-9 | книга с приложениями | несколько листов приложений (пояснения, ОДДС, отчёт об изменениях капитала) дают один документ «Расшифровка» вместо отдельного на каждый лист (st06: 5 → 1) |
| O-2 | панель «Первичные документы» | у каждой ОСВ под статусом синий значок «ⓘ 1» — это информационное «иерархия строк — по группировке листа (outline)» (`OSV_HIERARCHY_BY_OUTLINE`); шумит, ничего не значит |
| F-1 | экран формы | «Показать» в блоках «Нарушения» и «Предупреждения проверок» прокручивает к строке, но не обводит её рамкой (у «Показать» в «Предупреждениях» рамка есть) |
| F-2 | экран формы | значок ⓘ / ❗ слева от суммы стоит в разных строках на разной высоте и на разном расстоянии от края — колонка «прыгает» |
## 7. Что не считать багом (так задумано)
- Строки без кода, «в том числе …», строки с нечитаемым кодом теперь видны — раньше они пропадали молча (Р-8).
- Две строки с одним кодом — обе на экране, в проверках сумма (Р-4).
- Сомнительная ячейка (уверенность ниже 100 %, текст с мусором) без подсветки, если её подтвердила сошедшаяся
проверка §7; сомнительный текст остаётся в подсказке (Р-7). Подсветки по уверенности «напрямую» нет.
- Суммы расшифровок не подсвечиваются, не входят в итоги, проверки, сводную ОСВ и КФО (Р-8, Р-23).
- Скан может подтвердиться автоматически — так задумано, если все проверки сошлись.
- Лист только с активом или только с пассивом (постраничная печать 1С) — нарушение `1600 = 1700` и «Требуется проверка»:
пустая сторона соотношения теперь нарушение. Решение — «Принять с комментарием» или загрузить файл с полной формой.
- Мягкие соотношения («Предупреждения проверок»: подстроки 11501…, 2400, расхождение в пределах округления) и
межформенная проверка ББ↔ОФР подтверждение не блокируют.
- Числа правее таблицы не попадают в форму (Р-44). Цена правила: настоящая колонка сумм без подписи справа тоже будет
отброшена с «Информация» — если видите такую, это вопрос, а не баг.
- Некоторые «Ошибки» снимаются только перезагрузкой исправленного файла: колонки продолжения не совпали, строка
заголовка не найдена, тип по кодам противоречит заголовку, потерянная часть ответа ИС, лист не присоединился, xlsb с
подозрением на масштаб.
- Строки удалить нельзя (первичка не меняется); вывести строку из сумм — «Сделать расшифровкой».
- Строки на экране стоят по коду «как на бумаге», а не в порядке файла; строки без кода — под своей предыдущей строкой.
- Страницы одной формы из разных файлов не склеиваются (OQ-140); две половинки формы в одном файле — две формы (Р-15).
- Форма без колонки кодов строк из файла не получает (OQ-139) — только пустые строки бланка.
- Коды без образца в наших данных (66н: 2421, 2430, 2450; ФСБУ 4: 1120 и др.): сомнительный такой код на скане
подсвечивается, пока аналитик его не подтвердит (Р-26).
- Значок с числом у документа считает и уже принятые нарушения; «Предупреждения обработки» в число не входят.
- После правки формы может появиться «Информация: форма распознана общим кодом версии …, в ядре версия …» — на окне
выкладки это штатно.
- В контуре PDF распознаёт настоящая ИС Сканирование: уверенность и нечитаемые ячейки могут отличаться от описанных
здесь для aep_3 / aep_6.
- Документ «Расшифровка» в панели не открывается (как раньше).
## 8. Как заводить баги
На стенде контура баг заводится задачей в Jira проекта AURORA, как остальные замечания тестирования. Шаблон описания —
`qa-guide.md` раздел 11; в задаче укажите, чей он, если понятно (экран и API, данные — arm-core, распознавание
Excel — tabular-parser, PDF — scan-gateway; не уверены — по вкладке Network). Для форм ББ/ОФР дополнительно приложите:
1. **Файл** (или обезличенную копию) и где он лежит на стенде: ЮЛ, имя файла, дата загрузки.
2. **id документа** — из адреса страницы проверки (`…/documents/<id>`).
3. **Скриншот экрана проверки** целиком (шапка, блоки нарушений и предупреждений, нужная строка; подсказку
проблемной ячейки — отдельным скриншотом).
4. **Ответ `GET /documents/{id}/statement`** — вкладка Network браузера (запрос `statement`, вкладка «Response», сохранить
как файл); для ошибки загрузки — ответ `GET /files/{file_id}` (поля `job.warnings`, `job.error_code`).
5. Номер сценария из раздела 5 и что ожидали.
6. Для PDF — что видно на скане в этом месте (страница и строка) и что распознано (из подсказки ячейки).