openspec init (config с контекстом docs-репозитория) и change slice-0-skeleton: proposal, design (11 решений без обсуждения, открытые вопросы к человеку), спеки recognition-contract, dev-environment, ci-template, tasks в порядке зависимостей между репозиториями. 06-test-data.md §6: справочники продукта — seed arm-core, не фикстуры. 09-delivery-plan.md: Срез 0 по факту (change'и, compose в docs/dev, контракт копией без общего пакета, seed). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
19 KiB
06. Тестовые данные (реальная группа «Русский бисквит»)
Все файлы — реальная первичка одной группы компаний, полученная от аналитиков ДКБ. Живут в отдельном репозитории
arm-ka-fixtures (workspace: fixtures/) с исходными именами, не переименовывать: имена тоже тест.
Данные содержат наименования контрагентов и ИНН реальных организаций — репозиторий внутренний, наружу не выносить.
Фикстуры ≠ спецификация. Это выгрузки из одной конфигурации 1С у двух организаций. ОСВ других клиентов будут отличаться: другие колонки, другой порядок субконто, без outline level, другие заголовки, несколько листов, ББ/ОФР в Excel. Всё, что ниже в §3 «показали файлы», — наблюдения для регрессии и для словарей синонимов, а не правила парсера. Правила —
05-domain-rules.md§1.0 и §12.
1. Периметр
| Организация | ИНН | Роль в группе | Что есть |
|---|---|---|---|
| АО «Русский бисквит» (АО РБ) | 3528052718 | заёмщик, фактически головная | ОСВ 01, 02, 58, 60, 62, 66, 67, 76 за 1–3 кв. 2024, 2024 г., 1–3 кв. 2025; ББ/ОФР за 9 мес. 2024, 2024 г., 1 кв. 2025, 1 полуг. 2025, 9 мес. 2025; расшифровки на 01.10.24, 01.04.25, 01.07.25; анализ заёмщика |
| ООО «Пекарня «Счастливочная» | 3528… (есть в ББ) | поручитель, дочерняя/связанная | ОСВ 01, 02, 58, 60, 62, 66, 67, 76 за 1–3 кв. 2024, 2024 г., 1–3 кв. 2025; ББ/ОФР (сканы «БО …»); анализ поручителя |
| Прочие контрагенты из ОСВ | ОАО «ЧКФ» (аренда), ООО «Лидер», ООО «ОФГ» (займы), Россельхозбанк, ВТБ, Сбербанк и др. | внешние / возможно ГК | нужны для проверки признака ГК vs Внешний |
Внутригрупповые связи, видимые в ОСВ (для тестов матчинга ВГО):
- У «Счастливочной» в ОСВ 62 контрагент «Русский бисквит», ИНН 3528052718 (Дт 62.01 ≈ 106,3 млн на 30.09.2024, Кт 62.02 авансы 14,2 млн). Зеркально у АО РБ в ОСВ 60 контрагент записан как «Юг-Финанс / ПЕКАРНЯ СЧАСТЛИВОЧНАЯ» (без ИНН, иногда с пробелом в конце; Кт 60.01 на 30.09.2024 = 106 311 116,46 — совпадает копейка в копейку с Дт 62.01 у Счастливочной) — идеальный тест резолва по алиасу и точного матча 1:1 по правилу № 6.
- У АО РБ в ОСВ 66 за 3 кв. 2024: заём 42 000 000 от «Юг-Финанс / ПЕКАРНЯ СЧАСТЛИВОЧНАЯ» (66.03) и проценты (66.04) — зеркало должно быть у Счастливочной на 58.03 (правило № 4) и 76 (проценты, правило № 5).
- «ЧКФ АО» (ОАО «ЧКФ») — у АО РБ на 58.03 (заём 10 млн), 60, 76 (аренда/лизинг, крупные суммы на 76.07.x) — скорее всего третий участник ГК; есть ли он в периметре ГСК — уточнить у аналитиков. Пара 76.07.x ↔ 03/01 — тест правила № 1.
- «ОФГ ООО» (займы 66.03/66.04, 62), «Лидер ОП», «ЛИДЕР-КРЫМ ООО», «ТЕХНОЛИДЕР ООО» — кандидаты на ГК vs Внешний.
- ОСВ 58.03 АО РБ за 3 кв. 2024: займы выданные «МАЛЕЧКИНСКАЯ ПТИЦЕФАБРИКА ООО» (75 млн, ИНН 3523023093 — есть в ОСВ 62 Счастливочной) и «РБ ТК» (13,1 млн) — почти наверняка участники ГК «Русский бисквит»; ОСВ по ним в наборе нет (OQ-25). В этом файле уровень 1 — сразу контрагент (счёт в шапке уже субсчёт), уровень 2 — договор.
Эталон результата: Консолидация_Группа РБ.xlsx — ручная консолидация аналитика на 01.10.2024, 01.01.2025,
01.04.2025, 01.07.2025, 01.10.2025 (листы по датам). На листе 01.10.2024 видно ожидаемые «в т. ч. взаимные
обязательства» по статьям (напр., 1150: 51 577; 1230: 4 814 у АО РБ и 108 062 у Счастливочной; 1250: 42 000 у
Счастливочной). Это golden-данные для интеграционных тестов консолидации (с допуском на ручные правки аналитика).
2. Инвентарь ОСВ (xls/xlsx из 1С 8.3)
Формат имени в наборе аналитиков сильно варьируется — это намеренно хорошие тесты для парсера шапки, а не имени файла.
АО «Русский бисквит»
| Счёт | 1 кв. 2024 | 2 кв. 2024 | 3 кв. 2024 | 2024 г. | 1 кв. 2025 | 2 кв. 2025 | 3 кв. 2025 |
|---|---|---|---|---|---|---|---|
| 01 | — | — | сч 01.xlsx (306 стр., 24 кол.) |
ОСВ_01_ОС по субсчетам.xlsx |
ОСВ сч 01 за 1 кв 2025 год.xlsx |
— | ОСВ сч 01 за 3 кв 2025г.xlsx |
| 02 | — | — | — | ОСВ_02_ОС по субсчетам.xls |
ОСВ сч 02 за 1 кв 2025 год.xlsx |
сч 02.xlsx |
ОСВ сч 02 за 3 кв 2025г.xlsx |
| 58 | — | — | сч 583_3 кв 2024.xlsx (по субсчёту 58.03) |
ОСВ_58 за 2024.xls |
ОСВ сч 58 за 1 кв 2025 год.xlsx |
сч 58.xlsx |
ОСВ сч 58 за 3 кв 2025г.xlsx |
| 60 | сч 60_ 1 кв 2024 г.xlsx (626 стр.) |
сч 60_ 2 кв 2024 г.xlsx |
сч 60_3 кв 2024.xlsx |
ОСВ_60 за 2024.xls (1045 стр.) |
ОСВ сч 60 за 1 кв 2025 год.xlsx |
сч 60.xlsx |
ОСВ сч 60 за 3 кв 2025г.xlsx |
| 62 | сч 62_ 1 кв 2024 г.xlsx |
сч 62_ 2 кв 2024 г.xlsx |
сч 62_3 кв 2024.xlsx |
ОСВ_62_по субсчетам и поставщикам.xls |
ОСВ сч 62 за 1 кв 2025 год.xlsx |
сч 62.xlsx |
ОСВ сч 62 за 3 кв 2025г.xlsx |
| 66 | — | — | сч 66_3 кв 2024.xlsx |
ОСВ_66 за 2024.xls |
ОСВ сч 66 за 1 кв 2025 год.xlsx |
сч 66.xlsx |
ОСВ сч 66 за 3 кв 2025г.xlsx |
| 67 | — | — | сч 67_3 кв 2024.xlsx |
ОСВ_67 за 2024.xls |
ОСВ сч 67 за 1 кв 2025 год.xlsx |
сч 67.xlsx |
ОСВ сч 67 за 3 кв 2025г.xlsx |
| 76 | — | — | сч 76_3 кв 2024.xlsx |
ОСВ_76 за 2024.xls |
ОСВ сч 76 за 1 кв 2025 год.xlsx |
сч 76.xlsx |
ОСВ сч 76 за 3 кв 2025г.xlsx |
ООО «Пекарня «Счастливочная» (имена Оборотносальдовая ведомость по счету NN за … г..xlsx|xls)
| Счёт | 1 кв. 2024 | 2 кв. 2024 | 3 кв. 2024 | 2024 г. | 1 кв. 2025 | 2 кв. 2025 | 3 кв. 2025 |
|---|---|---|---|---|---|---|---|
| 01 | — | — | xls | xlsx | xlsx | xlsx | xlsx |
| 02 | — | — | xls | xlsx | xlsx | xlsx | xlsx |
| 58 | — | — | — | xlsx | xlsx | xlsx | xlsx |
| 60 | xls | xls | xls | xlsx | xlsx | xlsx | xlsx |
| 62 | xls | xls | xls | xlsx | xlsx | xlsx | xlsx |
| 66 | — | — | — | xlsx | xlsx | xlsx | xlsx |
| 67 | — | — | — | xlsx | xlsx | xlsx | xlsx |
| 76 | xls | xls | xls | — | xlsx | xlsx | — |
(17 файлов Счастливочной за 2025 и 2024 г. — 62/67/66/58/76 — лежат в Project claude.ai, но в эту сессию не попали из-за лимита доставки; они есть у пользователя.)
3. Что показали реальные файлы (требования к парсеру)
Наблюдения, которых нет в ТЗ, но которые ломают наивный парсер:
- Шапка везде вариант 1 («Оборотно-сальдовая ведомость по счету NN за <период>»), организация — в r1, параметры —
r7, таблица с r9. Но заголовок таблицы может быть 2 или 3 строки (
Счет / Контрагенты / Договоры;Счет / Подразделение / Контрагенты ИНН). - Позиции колонок сумм плавают: у АО РБ Дт-начало в E, Кт-начало в H, обороты в J/L, конец в O/Q; у Счастливочной — G/J, K/N, Q/S (2024, xls) или H/J, L/O, Q/S. Колонка ИНН — E (только у Счастливочной). Определять по тексту заголовка.
- Мусор правее таблицы: в xls Счастливочной 62 за 3 кв. 2024 в колонках T/U стоят числа; в xlsx АО РБ 62 за 2024–2025
у контрагентских строк встречаются «хвостовые» ячейки с дробями вроде
8.577e+00или8.76e-06(остатки формул аналитика). Границу таблицы задаёт заголовок; всё правее последней «Кредит» — игнорировать. - Уровни группировки (outline level): 0 — счёт верхнего уровня и «Итого»; 1 — субсчёт; дальше — субконто по схеме. У АО РБ ОСВ 60: 60 (0) → 60.01 (1) → контрагент (2); ОСВ 66: 66 → 66.01 → контрагент (2) → договор (3). У Счастливочной ОСВ 62: 62 → 62.01 → подразделение «БП Аренда» (2) → контрагент с ИНН (3).
- Строка «Итого» — последняя, level 0, равна строке счёта верхнего уровня.
- Пустые ячейки = нет значения (NULL), не ноль. Значения — числа (
#,##0.00), не текст. - ОСВ по субсчёту (
сч 583_3 кв 2024.xlsx: «по счету 58.03») —osv_account_code = '58.03',account_root = '58'; чек-лист по счёту 58 этим файлом не закрывается полностью — решить правило [открыто]. - Квартальные vs нарастающие: ОСВ «за N квартал» у обеих компаний — квартальные: у АО РБ ОСВ 60 opening 1 кв. 2024 = 260,1 млн, opening 2 кв. = 311,96 млн = closing 1 кв., opening 3 кв. = 558,8 млн ≈ closing 2 кв. (559,3 млн — расхождение 0,5 млн: исправительные проводки задним числом, тоже реальный кейс). «За 2024 г.» — годовые. Проверять по данным, не только по тексту.
- Валюта:
Валюта БУ, НУ: RUBилируб.— равнозначно. Строк Вал./Кол. в этом наборе нет, но ТЗ их описывает (ОСВ 60.32 в у. е.) — нужен синтетический тест. - Названия субсчетов в строках счёта могут присутствовать («60.01, Расчеты с поставщиками») или нет — в этом наборе нет; поддержать оба.
- Контрагенты-физлица и ИП («Абрамова Татьяна Викторовна (Перевозчик)», «Аверина Е.И. ИП», «Ведомость в счет з/платы») — не ЮЛ; резолв даёт NULL, тип «Внешний». Суффиксы в скобках — часть имени.
- xls (BIFF8) читается
xlrd(formatting_info=Trueдля outline level черезrowinfo_map); xlsx —openpyxl(неread_only, иначе нетrow_dimensions[].outline_level). XLSB —pyxlsb(в наборе нет; ТЗ требует). - Размеры: до ~1000 строк, до 330 КБ; 2280 merged-диапазонов в файле на 677 строк — не падать на merged.
4. ББ / ОФР (PDF) и ответы ИС Сканирование
| Файл | Орг. | Период | Тип |
|---|---|---|---|
АО РБ_ф.1_ 2024 год.pdf, АО РБ_ф.2_ 2024 год.pdf |
АО РБ | 2024 г. | машиночитаемый PDF (форма 66н), 3 + 2 стр. |
Отчетность 30092024 РБ.pdf |
АО РБ | 9 мес. 2024 | скан с OCR-слоем, 5 стр. |
Бухгалтерская отчетность 1 кв.25.pdf |
АО РБ | 1 кв. 2025 | скан, 6 стр. |
Бух отчетность за 2 кв 2025г.pdf |
АО РБ | 1 полуг. 2025 | PDF с текстом, 7 стр. |
Бухгалтерская отсчетность 9 мес.25.pdf |
АО РБ | 9 мес. 2025 | скан, 8 стр. |
БО 31.12.2024.pdf |
Счастливочная (предп.) | 2024 г. | машиночитаемый, 11 стр. (полный комплект) |
БО 9 мес. 2024 год скан.PDF, БО 1 кв 2025.PDF, БО за полугодие 2025 год. скан с подписями.PDF, БО за 9 месяцев 2025.PDF |
Счастливочная (предп.) | соотв. | сканы 4–5 стр. |
aep_4.PDF, aep_5.PDF |
разные | — | выписки из ГИР БО (ресурс БФО) — другой шаблон, для теста классификации |
aep_6…9, aep_30…34 (pdf) + *_aep_N.json (в Project docs) |
разные | — | пары «вход OCR → выход OCR» от ИС Сканирование: фикстуры контракта scan-gateway |
JSON aep_*.json — реальные ответы Content AI: структура data_ocr[].table_structure.rows[].cells[], confidence в
процентах (100.0), поле организации может называться иначе, чем в ТЗ — нормализацию делать по этим файлам, а не по ТЗ.
В фикстурах встречаются файлы с ББ и ОФР в одном PDF (→ два document из одного stored_file).
5. Прочее
Форма расшифровки к отчетности 01 10 24 / 01 04 25 / 01 07 25.xlsx— расшифровки АО РБ (кредиты и займы, дебиторы и кредиторы с ИНН, поручительства, аренда, лизинг/залог, «К балансу»). Полезны как независимый источник ИНН контрагентов и для будущегоDISCLOSURE.Копия Рекомендуемые формы расшифровок_РБ копия на 30.09.25.xlsx— рекомендуемые банком формы расшифровок по строкам ББ (1110, 1120, 1150 …) с данными на 30.06 и 30.09.2025 по участникам группы.Анализ Русский бисквит_заемщик 01102025.xlsx,Анализ Счастливочная_поручитель 01102025.xlsx— макросные книги «Альбома инструментов и стандартов кредитования» (БлокТ32): листы «Отчетность», «Экспресс-анализ», «ЗАКЛ_лимит», «ЗАКЛ_сделка», «П2_ОД-2967», «Профсуждение» — контекст для будущей формы 276-ОД, не для первых срезов.diagrams_v5.12.zip→docs/model/diagrams/(part01…09 svg/png).
6. Раскладка репозитория arm-ka-fixtures (workspace fixtures/)
fixtures/
README.md # откуда данные, ограничения доступа
osv/
rb/ 2024-Q1/ 2024-Q2/ 2024-Q3/ 2024-FY/ 2025-Q1/ 2025-Q2/ 2025-Q3/ # файлы с исходными именами
schastl/ ...
synthetic/ header-variant-2.xlsx, currency-rows.xlsx, xlsb-sample.xlsb, broken-header.xlsx
statements/
rb/ schastl/ gir-bo/ # pdf
statements-xlsx/ # ББ/ОФР в Excel (§12): лист «Отчетность» из Анализ*.xlsx,
# рекомендуемые формы банка, выгрузки 1С — собрать у аналитиков
ocr/
aep_N.pdf + aep_N.json # пары вход/выход ИС Сканирование
golden/
Консолидация_Группа РБ.xlsx # эталон КФО по датам
expected_osv_parse/*.json # ожидаемый результат парсера (зафиксировать после ревью)
directories/
legal_entities.csv, company_groups.csv # тестовые справочники группы «Русский бисквит» (Срез 1)
Справочники продукта — план счетов, правила элиминации, права и роли, состав обязательных документов — не фикстуры,
а seed ядра: arm-core/api/seed/ (Срез 0, change slice-0-skeleton). Здесь остаются только тестовые данные группы.
Полный план счетов 1С из бандла макета не передан — seed строится на Плане счетов 94н и типовых субсчетах 1С (OQ-47).
Первый прогон парсера на osv/** сохранить как expected_osv_parse/*.json после ручной сверки итогов со строкой «Итого»
— дальше это regression-набор.