From 4a6c6f2fd658fe4019f645fd452422e90aa83130 Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Wed, 28 Oct 2026 00:44:24 +0400 Subject: [PATCH 1/2] =?UTF-8?q?golden(osv-dkb):=20=D0=9D=D0=9A=D0=97=2058+?= =?UTF-8?q?66+67,=20=D0=BB=D0=B8=D1=81=D1=82=2058=20=E2=80=94=20done:=20?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B8=D0=BE=D0=B4=D1=8B=20=D1=81=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D1=8F=D1=8E=D1=82=D1=81=D1=8F=20=D1=86=D0=B5=D0=BF=D0=BE?= =?UTF-8?q?=D1=87=D0=BA=D0=BE=D0=B9=20=D1=81=D0=B0=D0=BB=D1=8C=D0=B4=D0=BE?= =?UTF-8?q?=20(AURORA-1823,=20tp#78)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- ...’_58+66+67_Субсчета+Контрагенты_2025.09-01_24459.json | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/golden/expected_osv_parse/osv-dkb/nkz/2025-Q3/НКЗ_ОСВ_58+66+67_Субсчета+Контрагенты_2025.09-01_24459.json b/golden/expected_osv_parse/osv-dkb/nkz/2025-Q3/НКЗ_ОСВ_58+66+67_Субсчета+Контрагенты_2025.09-01_24459.json index a21d8e6..367a50a 100644 --- a/golden/expected_osv_parse/osv-dkb/nkz/2025-Q3/НКЗ_ОСВ_58+66+67_Субсчета+Контрагенты_2025.09-01_24459.json +++ b/golden/expected_osv_parse/osv-dkb/nkz/2025-Q3/НКЗ_ОСВ_58+66+67_Субсчета+Контрагенты_2025.09-01_24459.json @@ -3,7 +3,7 @@ "service": { "name": "tabular-parser" }, - "status": "needs_check", + "status": "done", "metrics": { "rows": 32, "warnings": [] @@ -12,7 +12,7 @@ { "document_type": "OSV", "locator": "sheet:58", - "status": "needs_check", + "status": "done", "warnings": [ { "code": "OSV_HIERARCHY_BY_OUTLINE", @@ -23,11 +23,6 @@ "code": "OSV_HEADER", "severity": "info", "message": "валюта в шапке не найдена" - }, - { - "code": "OSV_PARENT_SUM", - "severity": "info", - "message": "§1.4: суммы родителя ≠ сумме детей (±0.01): строки 12, 24" } ], "header": { @@ -433,10 +428,7 @@ "checks": { "total_row_matches_root": true, "balance_identity_violations": [], - "parent_sum_violations": [ - 12, - 24 - ] + "parent_sum_violations": [] } }, { -- 2.47.2 From 0fae9b14679cdd42e913f9ea276a6ca2109553b9 Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Wed, 28 Oct 2026 01:03:01 +0400 Subject: [PATCH 2/2] =?UTF-8?q?test(osv):=20=D1=81=D0=B8=D0=BD=D1=82=D0=B5?= =?UTF-8?q?=D1=82=D0=B8=D0=BA=D0=B0=20s47=20(=D0=B8=D0=B5=D1=80=D0=B0?= =?UTF-8?q?=D1=80=D1=85=D0=B8=D1=8F=20=D0=BF=D0=BE=20=D0=BE=D1=82=D1=81?= =?UTF-8?q?=D1=82=D1=83=D0=BF=D0=B0=D0=BC:=20=D0=BF=D0=BE=D0=B4=D1=83?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B5=D0=BD=D1=8C=20=D1=81=D1=87=D1=91=D1=82?= =?UTF-8?q?=D0=B0,=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B0=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BA=D1=80=D1=8B=D1=82=D0=B8=D1=8F,=20=D0=B2=D0=BB=D0=BE?= =?UTF-8?q?=D0=B6=D0=B5=D0=BD=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D0=BF=D0=BE?= =?UTF-8?q?=20=D1=81=D1=83=D0=BC=D0=BC=D0=B0=D0=BC),=20golden=20(tabular-p?= =?UTF-8?q?arser#78,=20AURORA-1858)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- .../s47_indent_hierarchy_code_sums.json | 867 ++++++++++++++++++ osv/synthetic/README.md | 1 + .../s47_indent_hierarchy_code_sums.xlsx | Bin 0 -> 7758 bytes 3 files changed, 868 insertions(+) create mode 100644 golden/expected_osv_parse/synthetic/s47_indent_hierarchy_code_sums.json create mode 100644 osv/synthetic/s47_indent_hierarchy_code_sums.xlsx diff --git a/golden/expected_osv_parse/synthetic/s47_indent_hierarchy_code_sums.json b/golden/expected_osv_parse/synthetic/s47_indent_hierarchy_code_sums.json new file mode 100644 index 0000000..c0c6ba1 --- /dev/null +++ b/golden/expected_osv_parse/synthetic/s47_indent_hierarchy_code_sums.json @@ -0,0 +1,867 @@ +{ + "schema_version": "2.0", + "service": { + "name": "tabular-parser" + }, + "status": "done", + "metrics": { + "rows": 32, + "warnings": [] + }, + "documents": [ + { + "document_type": "OSV", + "locator": "sheet:68 сч.", + "status": "done", + "warnings": [ + { + "code": "OSV_HIERARCHY_BY_INDENT", + "severity": "info", + "message": "иерархия строк — по отступам (indent)" + }, + { + "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": "68", + "period_text": "9 месяцев 2024 г.", + "period_year": 2024, + "period_quarter": "Q3", + "is_cumulative": true, + "period_start": "2024-01-01", + "period_end": "2024-09-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": 7, + "level": 0, + "parent_row_number": null, + "row_value": "68.01", + "group_type": "ACCOUNT", + "group_name": "Субконто", + "account_code_raw": "68.01", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": "2333.00", + "turnover_credit": "2624.00", + "closing_debit": null, + "closing_credit": "291.00", + "extra": null + }, + { + "row_number": 8, + "level": 1, + "parent_row_number": 7, + "row_value": "68.01.1", + "group_type": "ACCOUNT", + "group_name": "Субконто", + "account_code_raw": "68.01.1", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": "2333.00", + "turnover_credit": "2624.00", + "closing_debit": null, + "closing_credit": "291.00", + "extra": null + }, + { + "row_number": 9, + "level": 2, + "parent_row_number": 8, + "row_value": "Налог (взносы): начислено / уплачено", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "68.01.1", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": "2333.00", + "turnover_credit": "2624.00", + "closing_debit": null, + "closing_credit": "291.00", + "extra": null + }, + { + "row_number": 10, + "level": 0, + "parent_row_number": null, + "row_value": "68.10", + "group_type": "ACCOUNT", + "group_name": "Субконто", + "account_code_raw": "68.10", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": "15687.00", + "turnover_debit": "45332.00", + "turnover_credit": "45332.00", + "closing_debit": null, + "closing_credit": "15687.00", + "extra": null + }, + { + "row_number": 11, + "level": 1, + "parent_row_number": 10, + "row_value": "Налог (взносы): начислено / уплачено", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "68.10", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": "15687.00", + "turnover_debit": "45332.00", + "turnover_credit": "45332.00", + "closing_debit": null, + "closing_credit": "15687.00", + "extra": null + }, + { + "row_number": 12, + "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": "15687.00", + "turnover_debit": "47665.00", + "turnover_credit": "47956.00", + "closing_debit": null, + "closing_credit": "15978.00", + "extra": null + } + ], + "checks": { + "total_row_matches_root": true, + "balance_identity_violations": [], + "parent_sum_violations": [] + } + }, + { + "document_type": "OSV", + "locator": "sheet:90 сч.", + "status": "done", + "warnings": [ + { + "code": "OSV_HIERARCHY_BY_INDENT", + "severity": "info", + "message": "иерархия строк — по отступам (indent)" + }, + { + "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": "90", + "period_text": "9 месяцев 2024 г.", + "period_year": 2024, + "period_quarter": "Q3", + "is_cumulative": true, + "period_start": "2024-01-01", + "period_end": "2024-09-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": 7, + "level": 0, + "parent_row_number": null, + "row_value": "90.01", + "group_type": "ACCOUNT", + "group_name": "Субконто", + "account_code_raw": "90.01", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": null, + "turnover_credit": "300.00", + "closing_debit": null, + "closing_credit": "300.00", + "extra": null + }, + { + "row_number": 8, + "level": 1, + "parent_row_number": 7, + "row_value": "90.01.1", + "group_type": "ACCOUNT", + "group_name": "Субконто", + "account_code_raw": "90.01.1", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": null, + "turnover_credit": "300.00", + "closing_debit": null, + "closing_credit": "300.00", + "extra": null + }, + { + "row_number": 9, + "level": 2, + "parent_row_number": 8, + "row_value": "Аренда", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "90.01.1", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": null, + "turnover_credit": "200.00", + "closing_debit": null, + "closing_credit": null, + "extra": null + }, + { + "row_number": 10, + "level": 2, + "parent_row_number": 8, + "row_value": "Прочие", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "90.01.1", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": null, + "turnover_credit": "100.00", + "closing_debit": null, + "closing_credit": null, + "extra": null + }, + { + "row_number": 11, + "level": 0, + "parent_row_number": null, + "row_value": "90.07", + "group_type": "ACCOUNT", + "group_name": "Субконто", + "account_code_raw": "90.07", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": "200.00", + "turnover_credit": null, + "closing_debit": "200.00", + "closing_credit": null, + "extra": null + }, + { + "row_number": 12, + "level": 1, + "parent_row_number": 11, + "row_value": "90.07.1", + "group_type": "ACCOUNT", + "group_name": "Субконто", + "account_code_raw": "90.07.1", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": "200.00", + "turnover_credit": null, + "closing_debit": "200.00", + "closing_credit": null, + "extra": null + }, + { + "row_number": 13, + "level": 2, + "parent_row_number": 12, + "row_value": "Расходы по аренде", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "90.07.1", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": "200.00", + "turnover_credit": null, + "closing_debit": null, + "closing_credit": null, + "extra": null + }, + { + "row_number": 14, + "level": 0, + "parent_row_number": null, + "row_value": "90.09", + "group_type": "ACCOUNT", + "group_name": "Субконто", + "account_code_raw": "90.09", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": "500.00", + "turnover_credit": "300.00", + "closing_debit": "200.00", + "closing_credit": null, + "extra": null + }, + { + "row_number": 15, + "level": 1, + "parent_row_number": 14, + "row_value": "", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "90.09", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": "500.00", + "turnover_credit": "300.00", + "closing_debit": null, + "closing_credit": null, + "extra": null + }, + { + "row_number": 16, + "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": null, + "turnover_debit": "700.00", + "turnover_credit": "600.00", + "closing_debit": "400.00", + "closing_credit": "300.00", + "extra": null + } + ], + "checks": { + "total_row_matches_root": true, + "balance_identity_violations": [], + "parent_sum_violations": [] + } + }, + { + "document_type": "OSV", + "locator": "sheet:91 сч.", + "status": "done", + "warnings": [ + { + "code": "OSV_HIERARCHY_BY_INDENT", + "severity": "info", + "message": "иерархия строк — по отступам (indent)" + }, + { + "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": "91", + "period_text": "9 месяцев 2024 г.", + "period_year": 2024, + "period_quarter": "Q3", + "is_cumulative": true, + "period_start": "2024-01-01", + "period_end": "2024-09-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": 7, + "level": 0, + "parent_row_number": null, + "row_value": "91.01", + "group_type": "ACCOUNT", + "group_name": "Субконто", + "account_code_raw": "91.01", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": null, + "turnover_credit": "100.00", + "closing_debit": null, + "closing_credit": "100.00", + "extra": null + }, + { + "row_number": 8, + "level": 1, + "parent_row_number": 7, + "row_value": "Проценты к получению", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "91.01", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": null, + "turnover_credit": "70.00", + "closing_debit": null, + "closing_credit": null, + "extra": null + }, + { + "row_number": 9, + "level": 2, + "parent_row_number": 8, + "row_value": "Проценты по вкладам", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "91.01", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": null, + "turnover_credit": "70.00", + "closing_debit": null, + "closing_credit": null, + "extra": null + }, + { + "row_number": 10, + "level": 1, + "parent_row_number": 7, + "row_value": "Прочие доходы", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "91.01", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": null, + "turnover_credit": "30.00", + "closing_debit": null, + "closing_credit": null, + "extra": null + }, + { + "row_number": 11, + "level": 2, + "parent_row_number": 10, + "row_value": "Пени", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "91.01", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": null, + "turnover_credit": "20.00", + "closing_debit": null, + "closing_credit": null, + "extra": null + }, + { + "row_number": 12, + "level": 2, + "parent_row_number": 10, + "row_value": "Штрафы", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "91.01", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": null, + "turnover_credit": "10.00", + "closing_debit": null, + "closing_credit": null, + "extra": null + }, + { + "row_number": 13, + "level": 0, + "parent_row_number": null, + "row_value": "91.02", + "group_type": "ACCOUNT", + "group_name": "Субконто", + "account_code_raw": "91.02", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": "170.00", + "turnover_credit": null, + "closing_debit": "170.00", + "closing_credit": null, + "extra": null + }, + { + "row_number": 14, + "level": 1, + "parent_row_number": 13, + "row_value": "91.02.1", + "group_type": "ACCOUNT", + "group_name": "Субконто", + "account_code_raw": "91.02.1", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": "170.00", + "turnover_credit": null, + "closing_debit": "170.00", + "closing_credit": null, + "extra": null + }, + { + "row_number": 15, + "level": 2, + "parent_row_number": 14, + "row_value": "Проценты к уплате", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "91.02.1", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": "100.00", + "turnover_credit": null, + "closing_debit": null, + "closing_credit": null, + "extra": null + }, + { + "row_number": 16, + "level": 3, + "parent_row_number": 15, + "row_value": "Проценты по займам", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "91.02.1", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": "60.00", + "turnover_credit": null, + "closing_debit": null, + "closing_credit": null, + "extra": null + }, + { + "row_number": 17, + "level": 3, + "parent_row_number": 15, + "row_value": "Проценты по кредитам", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "91.02.1", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": "40.00", + "turnover_credit": null, + "closing_debit": null, + "closing_credit": null, + "extra": null + }, + { + "row_number": 18, + "level": 2, + "parent_row_number": 14, + "row_value": "Прочие расходы", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "91.02.1", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": "30.00", + "turnover_credit": null, + "closing_debit": null, + "closing_credit": null, + "extra": null + }, + { + "row_number": 19, + "level": 3, + "parent_row_number": 18, + "row_value": "Затраты на нужды", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "91.02.1", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": "20.00", + "turnover_credit": null, + "closing_debit": null, + "closing_credit": null, + "extra": null + }, + { + "row_number": 20, + "level": 3, + "parent_row_number": 18, + "row_value": "Штрафы по договорам", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "91.02.1", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": "10.00", + "turnover_credit": null, + "closing_debit": null, + "closing_credit": null, + "extra": null + }, + { + "row_number": 21, + "level": 2, + "parent_row_number": 14, + "row_value": "Операционные расходы", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "91.02.1", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": "40.00", + "turnover_credit": null, + "closing_debit": null, + "closing_credit": null, + "extra": null + }, + { + "row_number": 22, + "level": 3, + "parent_row_number": 21, + "row_value": "Услуги банка", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "91.02.1", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": "40.00", + "turnover_credit": null, + "closing_debit": null, + "closing_credit": null, + "extra": null + }, + { + "row_number": 23, + "level": 0, + "parent_row_number": null, + "row_value": "91.09", + "group_type": "ACCOUNT", + "group_name": "Субконто", + "account_code_raw": "91.09", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": null, + "turnover_credit": "70.00", + "closing_debit": null, + "closing_credit": "70.00", + "extra": null + }, + { + "row_number": 24, + "level": 1, + "parent_row_number": 23, + "row_value": "", + "group_type": "OTHER", + "group_name": null, + "account_code_raw": "91.09", + "counterparty_name": null, + "counterparty_inn": null, + "data_type": "BU", + "opening_debit": null, + "opening_credit": null, + "turnover_debit": null, + "turnover_credit": "70.00", + "closing_debit": null, + "closing_credit": null, + "extra": null + }, + { + "row_number": 25, + "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": null, + "turnover_debit": "170.00", + "turnover_credit": "170.00", + "closing_debit": "170.00", + "closing_credit": "170.00", + "extra": null + } + ], + "checks": { + "total_row_matches_root": true, + "balance_identity_violations": [], + "parent_sum_violations": [] + } + } + ] +} diff --git a/osv/synthetic/README.md b/osv/synthetic/README.md index 3c1d262..062e283 100644 --- a/osv/synthetic/README.md +++ b/osv/synthetic/README.md @@ -64,6 +64,7 @@ cd tabular-parser/api | `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` | +| `s47_indent_hierarchy_code_sums.xlsx` | три листа «Субконто» без вида аналитики в шапке, иерархия по отступам (AURORA-1858, tabular-parser#78): «68 сч.» — подуровень `68.01.1` на том же отступе, что `68.01`; «90 сч.» — безымянная строка закрытия сразу за счётом `90.09` (пустая ячейка отступа не хранится); «91 сч.» — аналитика на одном отступе, вложенность видна только по суммам (`100 = 60 + 40`, `30 = 20 + 10`, `40 ⊃ 40`) | `hierarchy=indent`, `68.01.1` — ребёнок `68.01`, строка закрытия — ребёнок `90.09`/`91.09`, аналитика 91 вложена по суммам, три листа `done` | `s17`–`s19` — регрессия извлечения ИНН из текста (issue #9). `s14`–`s16` добавлены тестом покрытия словарей `tabular-parser` (`rules/*.yaml`, решение R-22): каждая запись словаря должна сработать на реальных или синтетических файлах; эти файлы закрывают записи, которых нет в реальных ОСВ. diff --git a/osv/synthetic/s47_indent_hierarchy_code_sums.xlsx b/osv/synthetic/s47_indent_hierarchy_code_sums.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..21f4255f83cc5e67001b0eb5d8b2c49ec8aaf5b3 GIT binary patch literal 7758 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 literal 0 HcmV?d00001 -- 2.47.2