AURORA-1714: синтетика s45 — счёт шапки «Счет Поставщика | 60*» #31

Merged
aep merged 2 commits from feat/30-osv-account-marker-s45 into main 2026-10-27 09:56:24 +03:00
5 changed files with 429 additions and 0 deletions

View File

@ -0,0 +1,157 @@
{
"schema_version": "2.0",
"service": {
"name": "tabular-parser"
},
"status": "done",
"metrics": {
"rows": 3,
"warnings": []
},
"documents": [
{
"document_type": "OSV",
"locator": "sheet:Лист_1",
"status": "done",
"warnings": [
{
"code": "OSV_HIERARCHY_BY_HEADER_ACCOUNT",
"severity": "info",
"message": "иерархия строк — плоский список под счётом шапки (header_account)"
},
{
"code": "OSV_HEADER",
"severity": "info",
"message": "тип выводимых данных (БУ/НУ/сумма) в шапке не найден"
},
{
"code": "OSV_HEADER",
"severity": "info",
"message": "валюта в шапке не найдена"
},
{
"code": "OSV_HEADER",
"severity": "info",
"message": "вид данных в шапке не указан — строки без метки приняты как БУ"
},
{
"code": "OSV_ROWS",
"severity": "info",
"message": "вид субконто в шапке не назван: строки аналитики счёта 60 приняты за контрагентов по плану счетов — проверьте"
}
],
"header": {
"organization_name": "ООО \"Тестовая организация\"",
"organization_inn": null,
"account_code_raw": "60",
"period_text": "01.01.25..30.06.25",
"period_year": 2025,
"period_quarter": "Q2",
"is_cumulative": true,
"period_start": "2025-01-01",
"period_end": "2025-06-30",
"is_from_year_start": true,
"data_type": null,
"currency": null,
"header_variant": 1
},
"group_schema": [
{
"type": "ACCOUNT",
"name": "Субконто"
}
],
"columns": {
"opening_debit": "B",
"opening_credit": "C",
"turnover_debit": "D",
"turnover_credit": "E",
"closing_debit": "F",
"closing_credit": "G"
},
"rows": [
{
"row_number": 8,
"level": 0,
"parent_row_number": null,
"row_value": "441",
"group_type": "COUNTERPARTY",
"group_name": null,
"account_code_raw": "60",
"counterparty_name": "441",
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": null,
"opening_credit": "108000.00",
"turnover_debit": "108000.00",
"turnover_credit": null,
"closing_debit": null,
"closing_credit": null,
"extra": null
},
{
"row_number": 9,
"level": 0,
"parent_row_number": null,
"row_value": "431",
"group_type": "COUNTERPARTY",
"group_name": null,
"account_code_raw": "60",
"counterparty_name": "431",
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": null,
"opening_credit": "200.00",
"turnover_debit": "200.00",
"turnover_credit": null,
"closing_debit": null,
"closing_credit": null,
"extra": null
},
{
"row_number": 10,
"level": 0,
"parent_row_number": null,
"row_value": "199",
"group_type": "COUNTERPARTY",
"group_name": null,
"account_code_raw": "60",
"counterparty_name": "199",
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": null,
"opening_credit": "50.00",
"turnover_debit": "50.00",
"turnover_credit": null,
"closing_debit": null,
"closing_credit": null,
"extra": null
},
{
"row_number": 11,
"level": 0,
"parent_row_number": null,
"row_value": "Итого",
"group_type": "TOTAL",
"group_name": null,
"account_code_raw": null,
"counterparty_name": null,
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": null,
"opening_credit": "108250.00",
"turnover_debit": "108250.00",
"turnover_credit": null,
"closing_debit": null,
"closing_credit": null,
"extra": null
}
],
"checks": {
"total_row_matches_root": true,
"balance_identity_violations": [],
"parent_sum_violations": []
}
}
]
}

View File

@ -0,0 +1,270 @@
{
"schema_version": "2.0",
"service": {
"name": "tabular-parser"
},
"status": "done",
"metrics": {
"rows": 9,
"warnings": []
},
"documents": [
{
"document_type": "OSV",
"locator": "sheet:Лист_1",
"status": "done",
"warnings": [
{
"code": "OSV_HIERARCHY_BY_CODE_BLOCKS",
"severity": "info",
"message": "иерархия строк — блоки субсчетов с кодами контрагентов (code_blocks)"
},
{
"code": "OSV_HEADER",
"severity": "info",
"message": "тип выводимых данных (БУ/НУ/сумма) в шапке не найден"
},
{
"code": "OSV_HEADER",
"severity": "info",
"message": "валюта в шапке не найдена"
},
{
"code": "OSV_HEADER",
"severity": "info",
"message": "вид данных в шапке не указан — строки без метки приняты как БУ"
}
],
"header": {
"organization_name": "ООО \"Тестовая организация\"",
"organization_inn": null,
"account_code_raw": "60",
"period_text": "01.01.25..30.06.25",
"period_year": 2025,
"period_quarter": "Q2",
"is_cumulative": true,
"period_start": "2025-01-01",
"period_end": "2025-06-30",
"is_from_year_start": true,
"data_type": null,
"currency": null,
"header_variant": 1
},
"group_schema": [
{
"type": "ACCOUNT",
"name": "Субконто"
},
{
"type": "COUNTERPARTY",
"name": "Поставщики"
}
],
"columns": {
"opening_debit": "B",
"opening_credit": "C",
"turnover_debit": "D",
"turnover_credit": "E",
"closing_debit": "F",
"closing_credit": "G"
},
"rows": [
{
"row_number": 9,
"level": 0,
"parent_row_number": null,
"row_value": "60.111",
"group_type": "ACCOUNT",
"group_name": "Субконто",
"account_code_raw": "60.111",
"counterparty_name": null,
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": null,
"opening_credit": "150.00",
"turnover_debit": "170.00",
"turnover_credit": "20.00",
"closing_debit": null,
"closing_credit": null,
"extra": null
},
{
"row_number": 10,
"level": 1,
"parent_row_number": 9,
"row_value": "П005482",
"group_type": "COUNTERPARTY",
"group_name": "Поставщики",
"account_code_raw": "60.111",
"counterparty_name": "ВЕСТ БИР ООО",
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": null,
"opening_credit": "100.00",
"turnover_debit": "100.00",
"turnover_credit": null,
"closing_debit": null,
"closing_credit": null,
"extra": null
},
{
"row_number": 12,
"level": 2,
"parent_row_number": 10,
"row_value": "ДП87825;З-139/21-1",
"group_type": "CONTRACT",
"group_name": null,
"account_code_raw": "60.111",
"counterparty_name": null,
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": null,
"opening_credit": "100.00",
"turnover_debit": "100.00",
"turnover_credit": null,
"closing_debit": null,
"closing_credit": null,
"extra": null
},
{
"row_number": 13,
"level": 1,
"parent_row_number": 9,
"row_value": "П002913",
"group_type": "COUNTERPARTY",
"group_name": "Поставщики",
"account_code_raw": "60.111",
"counterparty_name": "М ДИСТРИБЬЮШН",
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": null,
"opening_credit": "50.00",
"turnover_debit": "70.00",
"turnover_credit": "20.00",
"closing_debit": null,
"closing_credit": null,
"extra": null
},
{
"row_number": 15,
"level": 2,
"parent_row_number": 13,
"row_value": "ДП60469;З-46/20",
"group_type": "CONTRACT",
"group_name": null,
"account_code_raw": "60.111",
"counterparty_name": null,
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": null,
"opening_credit": "20.00",
"turnover_debit": "30.00",
"turnover_credit": "10.00",
"closing_debit": null,
"closing_credit": null,
"extra": null
},
{
"row_number": 16,
"level": 2,
"parent_row_number": 13,
"row_value": "441",
"group_type": "CONTRACT",
"group_name": null,
"account_code_raw": "60.111",
"counterparty_name": null,
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": null,
"opening_credit": "30.00",
"turnover_debit": "40.00",
"turnover_credit": "10.00",
"closing_debit": null,
"closing_credit": null,
"extra": null
},
{
"row_number": 18,
"level": 0,
"parent_row_number": null,
"row_value": "60.112",
"group_type": "ACCOUNT",
"group_name": "Субконто",
"account_code_raw": "60.112",
"counterparty_name": null,
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": null,
"opening_credit": "10.00",
"turnover_debit": "10.00",
"turnover_credit": null,
"closing_debit": null,
"closing_credit": null,
"extra": null
},
{
"row_number": 19,
"level": 1,
"parent_row_number": 18,
"row_value": "П003258",
"group_type": "COUNTERPARTY",
"group_name": "Поставщики",
"account_code_raw": "60.112",
"counterparty_name": "ООО \"РОМАШКА\"",
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": null,
"opening_credit": "10.00",
"turnover_debit": "10.00",
"turnover_credit": null,
"closing_debit": null,
"closing_credit": null,
"extra": null
},
{
"row_number": 21,
"level": 2,
"parent_row_number": 19,
"row_value": "ДП1;1",
"group_type": "CONTRACT",
"group_name": null,
"account_code_raw": "60.112",
"counterparty_name": null,
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": null,
"opening_credit": "10.00",
"turnover_debit": "10.00",
"turnover_credit": null,
"closing_debit": null,
"closing_credit": null,
"extra": null
},
{
"row_number": 23,
"level": 0,
"parent_row_number": null,
"row_value": "ИТОГ",
"group_type": "TOTAL",
"group_name": null,
"account_code_raw": null,
"counterparty_name": null,
"counterparty_inn": null,
"data_type": "BU",
"opening_debit": null,
"opening_credit": "160.00",
"turnover_debit": "180.00",
"turnover_credit": "20.00",
"closing_debit": null,
"closing_credit": null,
"extra": null
}
],
"checks": {
"total_row_matches_root": true,
"balance_identity_violations": [],
"parent_sum_violations": []
}
}
]
}

View File

@ -62,6 +62,8 @@ cd tabular-parser/api
| `s42_subaccounts_totals_reversed.xlsx` | под счётом 76 в шапке идут строки-субсчета «76.2», «76.5», «76.Н», «76.Н.1» (корня «76» нет), «Итого развернутое» перед «Итого» | `account_code_raw=76`, «Итого развернутое» — `TOTAL`, сверка по основной «Итого», `done` |
| `s43_subkonto_unnamed_60.xlsx` | счёт 60: корень «60.01» и два элемента аналитики с отступом, вид субконто в шапке не назван; «Итого» перед «Итого развернутое» | `hierarchy=indent`, подстроки — `COUNTERPARTY` по плану счетов с предупреждением `OSV_ROWS`, `done` |
| `s44_subkonto_unnamed_10.xlsx` | то же, что `s43`, но счёт 10 (материалы «Мука пшеничная», «Сахар-песок») | счёт 10 не расчётный: подстроки остаются `OTHER` без имени, предупреждения нет, `done` |
| `s45_account_label_value_cells.xlsx` | выгрузка 1С «ОСВ по счёту 60 по контрагентам» (tabular-parser#71, AURORA-1714): слов «по счету» нет, счёт — «Счет Поставщика» \| «60*» в соседних ячейках, «Счет Клиента» без значения; в первой колонке голые числовые коды 441, 431, 199; период «За период» \| «01.01.25..30.06.25» | `account_code_raw=60`, 2025 Q2 нарастающий, голые коды не счета, строки `COUNTERPARTY`, `done` |
| `s46_counterparty_code_blocks.xlsx` | та же выгрузка целиком: вид субконто «Поставщики» в колонке суммы первой строки данных; блоки субсчетов 60.111, 60.112 (сумм в строке нет); в блоке — код контрагента с суммами, строка названия без сумм, договоры (в том числе «441»); «ИТОГ по 60.111» с суммами блока; в конце «ИТОГ» | `hierarchy=code_blocks`, субсчета `ACCOUNT` с суммами из «ИТОГ по …», коды — `COUNTERPARTY` с названием, договоры — `CONTRACT`, строки «ИТОГ по …», названий и «Поставщики» в `rows` нет, «ИТОГ» — `TOTAL`, `done` |
`s17`–`s19` — регрессия извлечения ИНН из текста (issue #9). `s14`–`s16` добавлены тестом покрытия словарей `tabular-parser` (`rules/*.yaml`, решение R-22): каждая запись словаря
должна сработать на реальных или синтетических файлах; эти файлы закрывают записи, которых нет в реальных ОСВ.

Binary file not shown.

Binary file not shown.