test(golden): финальная волна — line_name, лист 2400 НПЗ, предупреждения (arm-tabular-parser#14)

Синтетика st07 (лист-продолжение с одной строкой 2400), снимки форм: названия строк,
2400 у НПЗ, предупреждение о дробных одно на документ, строки с суммами без нулей и
нумерации. Снимки ОСВ не менялись.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
This commit is contained in:
Andrey Epifancev 2026-10-06 21:58:34 +04:00
parent ba600fcba2
commit 9586207857
15 changed files with 339 additions and 50 deletions

View File

@ -7,7 +7,6 @@
"metrics": {
"rows": 37,
"warnings": [
"sheet=TDSheet строк без кода с суммами пропущено: 1",
"sheet=TDSheet значений с дробной частью при единице тыс. руб.: 17 из 105"
]
},

View File

@ -6,9 +6,7 @@
"status": "done",
"metrics": {
"rows": 23,
"warnings": [
"sheet=TDSheet строк без кода с суммами пропущено: 1"
]
"warnings": []
},
"documents": [
{

View File

@ -5,18 +5,11 @@
},
"status": "needs_check",
"metrics": {
"rows": 174,
"rows": 175,
"warnings": [
"sheet=Отчет о финансовых результата_2 skipped: нет признаков ОСВ или формы",
"sheet=Бухгалтерский баланс. Лист 1 строк без кода с суммами пропущено: 1",
"sheet=Бухгалтерский баланс. Лист 1 значений с дробной частью при единице тыс. руб.: 22 из 54",
"sheet=Бухгалтерский баланс. Лист 2 значений с дробной частью при единице тыс. руб.: 36 из 129",
"sheet=Бухгалтерский баланс. Лист 3 строк без кода с суммами пропущено: 1",
"sheet=Бухгалтерский баланс. Лист 3 значений с дробной частью при единице тыс. руб.: 20 из 54",
"sheet=Бухгалтерский баланс. Лист 4 значений с дробной частью при единице тыс. руб.: 22 из 111",
"sheet=Бухгалтерский баланс. Лист 5 значений с дробной частью при единице тыс. руб.: 27 из 48",
"sheet=Отчет о финансовых результата строк без кода с суммами пропущено: 2",
"sheet=Отчет о финансовых результата значений с дробной частью при единице тыс. руб.: 28 из 68",
"sheet=Бухгалтерский баланс. Лист 1 значений с дробной частью при единице тыс. руб.: 127 из 396",
"sheet=Бухгалтерский баланс. Лист 1 соотношение «1600 = 1700» нарушено (колонка 0): 17411081553.82 ≠ 17411081555.76",
"sheet=Бухгалтерский баланс. Лист 1 мягкое соотношение «1150 = 11501 + 11502 + 11503 + 11504 + 11505 + 11509» нарушено (колонка 0): 10741981390.00 ≠ 8223509632.08",
"sheet=Бухгалтерский баланс. Лист 1 мягкое соотношение «1230 = 12301 + 12302 + 12303 + 12304 + 12305 + 12306 + 12307 + 12308 + 12309» нарушено (колонка 0): 4435145361.60 ≠ 4330982154.64",
@ -32,15 +25,18 @@
"sheet=Бухгалтерский баланс. Лист 1 мягкое соотношение «1230 = 12301 + 12302 + 12303 + 12304 + 12305 + 12306 + 12307 + 12308 + 12309» нарушено (колонка 2): 4421092726.00 ≠ 4287107964.69",
"sheet=Бухгалтерский баланс. Лист 1 мягкое соотношение «1410 = 14101 + 14102 + 14103 + 14104 + 14105» нарушено (колонка 2): 4103939756.00 ≠ 4111248501.57",
"sheet=Бухгалтерский баланс. Лист 1 мягкое соотношение «1510 = 15101 + 15102 + 15103 + 15104 + 15105 + 15106 + 15107 + 15108 + 15109» нарушено (колонка 2): 2491069038.00 ≠ 2483760292.60",
"sheet=Отчет о финансовых результата значений с дробной частью при единице тыс. руб.: 28 из 86",
"sheet=Отчет о финансовых результата соотношение «2100 = 2110 - 2120» нарушено (колонка 0): -71141000.00 ≠ -71140867.82",
"sheet=Отчет о финансовых результата соотношение «2200 = 2100 - 2210 - 2220» нарушено (колонка 0): -740350000.00 ≠ -740350182.50",
"sheet=Отчет о финансовых результата соотношение «2300 = 2200 + 2310 + 2320 - 2330 + 2340 - 2350» нарушено (колонка 0): -2707350000.00 ≠ -2707350001.85",
"sheet=Отчет о финансовых результата мягкое соотношение «2500 = 2400 + 2510 + 2520 + 2530» нарушено (колонка 0): -2235788000.00 ≠ 0.00",
"sheet=Отчет о финансовых результата мягкое соотношение «2400 = 2300 - 2410 + 2420» нарушено (колонка 0): -2235788000.00 ≠ -3178911817.12",
"sheet=Отчет о финансовых результата мягкое соотношение «2400 = 2300 + 2410 + 2460» нарушено (колонка 0): -2235788000.00 ≠ -2235788182.88",
"sheet=Отчет о финансовых результата соотношение «2100 = 2110 - 2120» нарушено (колонка 1): 1976818000.00 ≠ 1976817590.17",
"sheet=Отчет о финансовых результата соотношение «2200 = 2100 - 2210 - 2220» нарушено (колонка 1): 1138368000.00 ≠ 1138367802.73",
"sheet=Отчет о финансовых результата соотношение «2300 = 2200 + 2310 + 2320 - 2330 + 2340 - 2350» нарушено (колонка 1): 327724000.00 ≠ 327723647.61",
"sheet=Отчет о финансовых результата мягкое соотношение «2410 = 2411 + 2412» нарушено (колонка 1): -85933029.44 ≠ 16781834.97",
"sheet=Отчет о финансовых результата мягкое соотношение «2500 = 2400 + 2510 + 2520 + 2530» нарушено (колонка 1): 240044000.00 ≠ 0.00"
"sheet=Отчет о финансовых результата мягкое соотношение «2400 = 2300 - 2410 + 2420» нарушено (колонка 1): 240044000.00 ≠ 241790970.56",
"sheet=Отчет о финансовых результата мягкое соотношение «2400 = 2300 + 2410 + 2460» нарушено (колонка 1): 240044000.00 ≠ 240044114.56",
"sheet=Отчет о финансовых результата мягкое соотношение «2410 = 2411 + 2412» нарушено (колонка 1): -85933029.44 ≠ 16781834.97"
]
},
"documents": [
@ -3613,7 +3609,7 @@
},
{
"document_type": "INCOME",
"locator": "sheet:Отчет о финансовых результата,Отчет о финансовых результата_3",
"locator": "sheet:Отчет о финансовых результата,Отчет о финансовых результата_2,Отчет о финансовых результата_3",
"header": {
"form_name": "Отчет о финансовых результатах",
"organization_name": "ООО \"НОВОРОССИЙСКИЙ ПРОКАТНЫЙ ЗАВОД\"",
@ -4322,6 +4318,26 @@
}
]
},
{
"line_code": "2400",
"line_code_confidence": 100.0,
"line_name": "Чистая прибыль (убыток)",
"line_name_confidence": 100.0,
"values": [
{
"column_index": 0,
"amount": "-2235788000.00",
"confidence": 100.0,
"is_recognized": true
},
{
"column_index": 1,
"amount": "240044000.00",
"confidence": 100.0,
"is_recognized": true
}
]
},
{
"line_code": "2510",
"line_code_confidence": 100.0,
@ -4345,7 +4361,7 @@
{
"line_code": "25101",
"line_code_confidence": 100.0,
"line_name": "",
"line_name": "Результат от переоценки основных средств, не включаемый в чистую прибыль (убыток) периода",
"line_name_confidence": 100.0,
"values": [
{
@ -4365,7 +4381,7 @@
{
"line_code": "25102",
"line_code_confidence": 100.0,
"line_name": "",
"line_name": "Результат от переоценки нематериальных активов, не включаемый в чистую прибыль (убыток) периода",
"line_name_confidence": 100.0,
"values": [
{
@ -4425,7 +4441,7 @@
{
"line_code": "2500",
"line_code_confidence": 100.0,
"line_name": "",
"line_name": "Совокупный финансовый результат",
"line_name_confidence": 100.0,
"values": [
{
@ -4525,21 +4541,33 @@
"soft_relations_failed": [
{
"column_index": 0,
"relation": "2500 = 2400 + 2510 + 2520 + 2530",
"relation": "2400 = 2300 - 2410 + 2420",
"expected": "-2235788000.00",
"actual": "0.00"
"actual": "-3178911817.12"
},
{
"column_index": 0,
"relation": "2400 = 2300 + 2410 + 2460",
"expected": "-2235788000.00",
"actual": "-2235788182.88"
},
{
"column_index": 1,
"relation": "2400 = 2300 - 2410 + 2420",
"expected": "240044000.00",
"actual": "241790970.56"
},
{
"column_index": 1,
"relation": "2400 = 2300 + 2410 + 2460",
"expected": "240044000.00",
"actual": "240044114.56"
},
{
"column_index": 1,
"relation": "2410 = 2411 + 2412",
"expected": "-85933029.44",
"actual": "16781834.97"
},
{
"column_index": 1,
"relation": "2500 = 2400 + 2510 + 2520 + 2530",
"expected": "240044000.00",
"actual": "0.00"
}
],
"duplicate_line_codes": []

View File

@ -0,0 +1,267 @@
{
"schema_version": "1.2",
"service": {
"name": "tabular-parser"
},
"status": "done",
"metrics": {
"rows": 10,
"warnings": [
"sheet=ОФР мягкое соотношение «2410 = 2411 + 2412» нарушено (колонка 0): -40.00 ≠ 0",
"sheet=ОФР мягкое соотношение «2410 = 2411 + 2412» нарушено (колонка 1): -40.00 ≠ 0"
]
},
"documents": [
{
"document_type": "INCOME",
"locator": "sheet:ОФР,ОФР_2",
"header": {
"form_name": "Отчет о финансовых результатах",
"organization_name": "ООО \"Тестовая организация\"",
"organization_name_confidence": 100.0,
"inn": "7700000000",
"inn_confidence": 100.0,
"report_date_text": "за 2024 г.",
"report_date": "2024-12-31",
"units": "тыс. руб.",
"okud": "0710002",
"okpo": null,
"okopf": null,
"okfs": null,
"address": null
},
"columns": [
{
"column_index": 0,
"label": "За 2024 г.",
"period_date": "2024-12-31"
},
{
"column_index": 1,
"label": "За 2023 г.",
"period_date": "2023-12-31"
}
],
"lines": [
{
"line_code": "2110",
"line_code_confidence": 100.0,
"line_name": "Выручка",
"line_name_confidence": 100.0,
"values": [
{
"column_index": 0,
"amount": "1000.00",
"confidence": 100.0,
"is_recognized": true
},
{
"column_index": 1,
"amount": "900.00",
"confidence": 100.0,
"is_recognized": true
}
]
},
{
"line_code": "2120",
"line_code_confidence": 100.0,
"line_name": "Себестоимость продаж",
"line_name_confidence": 100.0,
"values": [
{
"column_index": 0,
"amount": "-600.00",
"confidence": 100.0,
"is_recognized": true
},
{
"column_index": 1,
"amount": "-500.00",
"confidence": 100.0,
"is_recognized": true
}
]
},
{
"line_code": "2100",
"line_code_confidence": 100.0,
"line_name": "Валовая прибыль (убыток)",
"line_name_confidence": 100.0,
"values": [
{
"column_index": 0,
"amount": "400.00",
"confidence": 100.0,
"is_recognized": true
},
{
"column_index": 1,
"amount": "400.00",
"confidence": 100.0,
"is_recognized": true
}
]
},
{
"line_code": "2210",
"line_code_confidence": 100.0,
"line_name": "Коммерческие расходы",
"line_name_confidence": 100.0,
"values": [
{
"column_index": 0,
"amount": "-50.00",
"confidence": 100.0,
"is_recognized": true
},
{
"column_index": 1,
"amount": "-40.00",
"confidence": 100.0,
"is_recognized": true
}
]
},
{
"line_code": "2220",
"line_code_confidence": 100.0,
"line_name": "Управленческие расходы",
"line_name_confidence": 100.0,
"values": [
{
"column_index": 0,
"amount": "-50.00",
"confidence": 100.0,
"is_recognized": true
},
{
"column_index": 1,
"amount": "-60.00",
"confidence": 100.0,
"is_recognized": true
}
]
},
{
"line_code": "2200",
"line_code_confidence": 100.0,
"line_name": "Прибыль (убыток) от продаж",
"line_name_confidence": 100.0,
"values": [
{
"column_index": 0,
"amount": "300.00",
"confidence": 100.0,
"is_recognized": true
},
{
"column_index": 1,
"amount": "300.00",
"confidence": 100.0,
"is_recognized": true
}
]
},
{
"line_code": "2330",
"line_code_confidence": 100.0,
"line_name": "Проценты к уплате",
"line_name_confidence": 100.0,
"values": [
{
"column_index": 0,
"amount": "-100.00",
"confidence": 100.0,
"is_recognized": true
},
{
"column_index": 1,
"amount": "-100.00",
"confidence": 100.0,
"is_recognized": true
}
]
},
{
"line_code": "2300",
"line_code_confidence": 100.0,
"line_name": "Прибыль (убыток) до налогообложения",
"line_name_confidence": 100.0,
"values": [
{
"column_index": 0,
"amount": "200.00",
"confidence": 100.0,
"is_recognized": true
},
{
"column_index": 1,
"amount": "200.00",
"confidence": 100.0,
"is_recognized": true
}
]
},
{
"line_code": "2410",
"line_code_confidence": 100.0,
"line_name": "Налог на прибыль",
"line_name_confidence": 100.0,
"values": [
{
"column_index": 0,
"amount": "-40.00",
"confidence": 100.0,
"is_recognized": true
},
{
"column_index": 1,
"amount": "-40.00",
"confidence": 100.0,
"is_recognized": true
}
]
},
{
"line_code": "2400",
"line_code_confidence": 100.0,
"line_name": "Чистая прибыль (убыток)",
"line_name_confidence": 100.0,
"values": [
{
"column_index": 0,
"amount": "160.00",
"confidence": 100.0,
"is_recognized": true
},
{
"column_index": 1,
"amount": "160.00",
"confidence": 100.0,
"is_recognized": true
}
]
}
],
"checks": {
"relations_failed": [],
"soft_relations_failed": [
{
"column_index": 0,
"relation": "2410 = 2411 + 2412",
"expected": "-40.00",
"actual": "0"
},
{
"column_index": 1,
"relation": "2410 = 2411 + 2412",
"expected": "-40.00",
"actual": "0"
}
],
"duplicate_line_codes": []
}
}
]
}

View File

@ -109,7 +109,7 @@
{
"line_code": "2300",
"line_code_confidence": 100.0,
"line_name": "",
"line_name": "Прибыль (убыток) от продолжающейся деятельности до налогообложения",
"line_name_confidence": 100.0,
"values": []
},

View File

@ -7,7 +7,6 @@
"metrics": {
"rows": 43,
"warnings": [
"sheet=Лист_1 строк без кода с суммами пропущено: 9",
"sheet=Лист_1 значений с дробной частью при единице тыс. руб.: 58 из 129",
"sheet=Лист_1 соотношение «1600 = 1700» нарушено (колонка 0): 4307468147.89 ≠ 0",
"sheet=Лист_1 мягкое соотношение «1150 = 11501 + 11502 + 11503 + 11504 + 11505 + 11506 + 11507 + 11508 + 11509» нарушено (колонка 0): 2039077663.16 ≠ 552544080.81",

View File

@ -455,7 +455,7 @@
{
"line_code": "15401",
"line_code_confidence": 100.0,
"line_name": "",
"line_name": "Оценочные обязательства по вознаграждениям работников",
"line_name_confidence": 100.0,
"values": [
{
@ -481,7 +481,7 @@
{
"line_code": "15402",
"line_code_confidence": 100.0,
"line_name": "",
"line_name": "Резервы предстоящих расходов прочие",
"line_name_confidence": 100.0,
"values": [
{

View File

@ -155,7 +155,7 @@
{
"line_code": "2200",
"line_code_confidence": 100.0,
"line_name": "",
"line_name": "Прибыль (убыток) от продаж",
"line_name_confidence": 100.0,
"values": [
{
@ -275,7 +275,7 @@
{
"line_code": "2300",
"line_code_confidence": 100.0,
"line_name": "",
"line_name": "Прибыль (убыток) до налогообложения",
"line_name_confidence": 100.0,
"values": [
{
@ -315,7 +315,7 @@
{
"line_code": "2411",
"line_code_confidence": 100.0,
"line_name": "",
"line_name": "текущий налог на прибыль",
"line_name_confidence": 100.0,
"values": [
{
@ -335,7 +335,7 @@
{
"line_code": "2412",
"line_code_confidence": 100.0,
"line_name": "",
"line_name": "отложенный налог на прибыль",
"line_name_confidence": 100.0,
"values": [
{
@ -375,7 +375,7 @@
{
"line_code": "2400",
"line_code_confidence": 100.0,
"line_name": "",
"line_name": "Чистая прибыль (убыток)",
"line_name_confidence": 100.0,
"values": [
{

View File

@ -7,7 +7,6 @@
"metrics": {
"rows": 44,
"warnings": [
"sheet=Лист_1 строк без кода с суммами пропущено: 9",
"sheet=Лист_1 значений с дробной частью при единице тыс. руб.: 27 из 132",
"sheet=Лист_1 соотношение «1600 = 1700» нарушено (колонка 0): 395796148.43 ≠ 0",
"sheet=Лист_1 мягкое соотношение «1150 = 11501 + 11502 + 11503 + 11504 + 11505 + 11506 + 11507 + 11508 + 11509» нарушено (колонка 0): 90000.00 ≠ 0.00",

View File

@ -457,7 +457,7 @@
{
"line_code": "15401",
"line_code_confidence": 100.0,
"line_name": "",
"line_name": "Оценочные обязательства по вознаграждениям работников",
"line_name_confidence": 100.0,
"values": [
{
@ -483,7 +483,7 @@
{
"line_code": "15402",
"line_code_confidence": 100.0,
"line_name": "",
"line_name": "Резервы предстоящих расходов прочие",
"line_name_confidence": 100.0,
"values": [
{

View File

@ -7,7 +7,6 @@
"metrics": {
"rows": 43,
"warnings": [
"sheet=Лист_1 строк без кода с суммами пропущено: 9",
"sheet=Лист_1 значений с дробной частью при единице тыс. руб.: 25 из 129",
"sheet=Лист_1 соотношение «1600 = 1700» нарушено (колонка 0): 361054099.72 ≠ 0",
"sheet=Лист_1 мягкое соотношение «1150 = 11501 + 11502 + 11503 + 11504 + 11505 + 11506 + 11507 + 11508 + 11509» нарушено (колонка 0): 90000.00 ≠ 0.00",

View File

@ -457,7 +457,7 @@
{
"line_code": "15401",
"line_code_confidence": 100.0,
"line_name": "",
"line_name": "Оценочные обязательства по вознаграждениям работников",
"line_name_confidence": 100.0,
"values": [
{
@ -483,7 +483,7 @@
{
"line_code": "15402",
"line_code_confidence": 100.0,
"line_name": "",
"line_name": "Резервы предстоящих расходов прочие",
"line_name_confidence": 100.0,
"values": [
{

View File

@ -7,7 +7,6 @@
"metrics": {
"rows": 17,
"warnings": [
"sheet=Лист_1 строк без кода с суммами пропущено: 1",
"sheet=Лист_1 значений с дробной частью при единице тыс. руб.: 16 из 34",
"sheet=Лист_1 соотношение «2100 = 2110 - 2120» нарушено (колонка 0): 392259000.00 ≠ 392258982.50",
"sheet=Лист_1 соотношение «2200 = 2100 - 2210 - 2220» нарушено (колонка 0): -1365000.00 ≠ -1364601.56",
@ -157,7 +156,7 @@
{
"line_code": "2200",
"line_code_confidence": 100.0,
"line_name": "",
"line_name": "Прибыль (убыток) от продаж",
"line_name_confidence": 100.0,
"values": [
{
@ -277,7 +276,7 @@
{
"line_code": "2300",
"line_code_confidence": 100.0,
"line_name": "",
"line_name": "Прибыль (убыток) до налогообложения",
"line_name_confidence": 100.0,
"values": [
{
@ -317,7 +316,7 @@
{
"line_code": "2411",
"line_code_confidence": 100.0,
"line_name": "",
"line_name": "текущий налог на прибыль",
"line_name_confidence": 100.0,
"values": [
{
@ -337,7 +336,7 @@
{
"line_code": "2412",
"line_code_confidence": 100.0,
"line_name": "",
"line_name": "отложенный налог на прибыль",
"line_name_confidence": 100.0,
"values": [
{
@ -377,7 +376,7 @@
{
"line_code": "2400",
"line_code_confidence": 100.0,
"line_name": "",
"line_name": "Чистая прибыль (убыток)",
"line_name_confidence": 100.0,
"values": [
{

View File

@ -1,6 +1,6 @@
# Синтетические формы (Срез 2b, Task 13)
Файлы st01…st06 — сценарии спецификации `statement-parsing` на синтетических данных (ББ и ОФР, XLSX).
Файлы st01…st07 — сценарии спецификации `statement-parsing` на синтетических данных (ББ и ОФР, XLSX).
Генератор: `tabular-parser/api/tests/synthetic/generate_statements.py`.
| Файл | Что проверяет |
@ -11,3 +11,4 @@
| st04_mixed_book.xlsx | Книга с листом ОСВ и листом баланса; проверка типов документов |
| st05_continuation_only.xlsx | Одинокая страница 2 формы; needs_check, warning о continuation |
| st06_header_variants.xlsx | Варианты, которых нет в реальных файлах: старое название ОФР, расшифровки/ОДДС/ОИК/целевое использование, форма только с ОКУД 0710xxx, название организации в «», «Адрес», колонка «Пояснения», числовая дата (покрытие словарей) |
| st07_single_code_continuation.xlsx | ОФР без 2400 на первом листе и лист-продолжение с единственной кодовой строкой 2400 (O-9): присоединяется, ОФР done |