- README: парсер по модулям, статусы и коды, словари и добавление синонима, лимиты, golden-процесс, настройки PARSE_* - CLAUDE.md: раздел «Добавлено в Срезе 2a» (модули, правила расширения, линтер, R-21); api/rules/README.md: ключи словарей - openspec: tasks.md (5.1), design.md (D-1…D-7, O-7/O-8), спека-дельты osv-parsing (R-12…R-22) и tabular-recognition-service («Результат по контракту») - tests: check_snapshot в golden_helpers + тесты «нет снимка»/«регрессия»; locator в property-тесте; пример needs_check синхронизирован с docs Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
120 lines
3.7 KiB
JSON
120 lines
3.7 KiB
JSON
{
|
||
"schema_version": "1.1",
|
||
"job_id": "3f2a9c1e-7b4d-4e0a-9d51-2c8e6a1b0f01",
|
||
"file_id": "a1c4e7d2-5b36-4f89-8e12-9d0c3b7a4e02",
|
||
"service": { "name": "tabular-parser", "version": "0.1.0" },
|
||
"status": "needs_check",
|
||
"metrics": { "rows": 3, "warnings": ["hierarchy=outline", "balance identity violated at rows [3]"] },
|
||
"documents": [
|
||
{
|
||
"document_type": "OSV",
|
||
"locator": "sheet:Лист_1",
|
||
"header": {
|
||
"organization_name": "ООО Ромашка",
|
||
"organization_inn": "7700000000",
|
||
"account_code_raw": "60",
|
||
"period_text": "1 квартал 2025 г.",
|
||
"period_year": 2025,
|
||
"period_quarter": "Q1",
|
||
"is_cumulative": false,
|
||
"data_type": "BU",
|
||
"currency": "RUB",
|
||
"header_variant": 1
|
||
},
|
||
"group_schema": [
|
||
{ "type": "ACCOUNT", "name": "Счет" },
|
||
{ "type": "COUNTERPARTY", "name": "Контрагенты", "has_inn": true }
|
||
],
|
||
"columns": {
|
||
"opening_debit": "D",
|
||
"opening_credit": "E",
|
||
"turnover_debit": "F",
|
||
"turnover_credit": "G",
|
||
"closing_debit": "H",
|
||
"closing_credit": "I",
|
||
"inn": "B"
|
||
},
|
||
"rows": [
|
||
{
|
||
"row_number": 1,
|
||
"level": 0,
|
||
"parent_row_number": null,
|
||
"row_value": "60",
|
||
"group_type": "ACCOUNT",
|
||
"group_name": "Счет",
|
||
"account_code_raw": "60",
|
||
"counterparty_name": null,
|
||
"counterparty_inn": null,
|
||
"data_type": "BU",
|
||
"opening_debit": "0.00",
|
||
"opening_credit": "1000.00",
|
||
"turnover_debit": "500.00",
|
||
"turnover_credit": "200.50",
|
||
"closing_debit": "0.00",
|
||
"closing_credit": "700.50"
|
||
},
|
||
{
|
||
"row_number": 2,
|
||
"level": 1,
|
||
"parent_row_number": 1,
|
||
"row_value": "ООО Лютик",
|
||
"group_type": "COUNTERPARTY",
|
||
"group_name": "Контрагенты",
|
||
"account_code_raw": "60",
|
||
"counterparty_name": "ООО Лютик",
|
||
"counterparty_inn": "7711111111",
|
||
"data_type": "BU",
|
||
"opening_debit": "0.00",
|
||
"opening_credit": "1000.00",
|
||
"turnover_debit": "500.00",
|
||
"turnover_credit": "200.50",
|
||
"closing_debit": "0.00",
|
||
"closing_credit": "700.50",
|
||
"extra": { "КПП": "352801001" }
|
||
},
|
||
{
|
||
"row_number": 3,
|
||
"level": 2,
|
||
"parent_row_number": 2,
|
||
"row_value": "Вал.",
|
||
"group_type": "OTHER",
|
||
"group_name": null,
|
||
"account_code_raw": "60",
|
||
"counterparty_name": null,
|
||
"counterparty_inn": null,
|
||
"data_type": "CURRENCY",
|
||
"opening_debit": "0.00",
|
||
"opening_credit": "400.00",
|
||
"turnover_debit": "100.00",
|
||
"turnover_credit": "50.00",
|
||
"closing_debit": "0.00",
|
||
"closing_credit": "400.00"
|
||
},
|
||
{
|
||
"row_number": 4,
|
||
"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": "0.00",
|
||
"opening_credit": "1000.00",
|
||
"turnover_debit": "500.00",
|
||
"turnover_credit": "200.50",
|
||
"closing_debit": "0.00",
|
||
"closing_credit": "700.50"
|
||
}
|
||
],
|
||
"checks": {
|
||
"total_row_matches_root": true,
|
||
"balance_identity_violations": [3],
|
||
"parent_sum_violations": []
|
||
}
|
||
}
|
||
]
|
||
}
|