# Тестирование единой нормализации ББ/ОФР (контракт 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С (любой счёт), открыть | как раньше: «Загружен» для чистой ОСВ, «Требуется проверка» при чужой организации в шапке; экран «Просмотр ОСВ» — **плоская** таблица (колонки «Субсчёт», «Контрагент», «ИНН», шесть сумм, внизу «Итого по документу»), поиск «Контрагент или ИНН», фильтр «Субсчёт», «Строк: 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/`). 3. **Скриншот экрана проверки** целиком (шапка, блоки нарушений и предупреждений, нужная строка; подсказку проблемной ячейки — отдельным скриншотом). 4. **Ответ `GET /documents/{id}/statement`** — вкладка Network браузера (запрос `statement`, вкладка «Response», сохранить как файл); для ошибки загрузки — ответ `GET /files/{file_id}` (поля `job.warnings`, `job.error_code`). 5. Номер сценария из раздела 5 и что ожидали. 6. Для PDF — что видно на скане в этом месте (страница и строка) и что распознано (из подсказки ячейки).