Срез 2a: парсер ОСВ из XLS/XLSX/XLSB — динамическое обнаружение структуры (§1), контракт v1.1, golden на 66 реальных файлах #6

Merged
aep merged 45 commits from feat/5-slice-2a-osv-parser into main 2026-10-05 19:18:07 +03:00
2 changed files with 9 additions and 9 deletions
Showing only changes of commit 777d4aa850 - Show all commits

View File

@ -6,7 +6,7 @@ Stateless-сервис распознавания табличных файло
возвращает структуру файла и ничего не знает про организации, периметры и план счетов — нормализацией занимается возвращает структуру файла и ничего не знает про организации, периметры и план счетов — нормализацией занимается
`arm-core`. `arm-core`.
Обмен с `arm-core` идёт по контракту **v1.0**: схемы — [`../docs/contracts/`](../docs/contracts/), копия — в Обмен с `arm-core` идёт по контракту **v1.1**: схемы — [`../docs/contracts/`](../docs/contracts/), копия — в
`api/contracts/` (идентичность с источником проверяется в `make check`). `api/contracts/` (идентичность с источником проверяется в `make check`).
**Срез 0 — скелет.** Транспорт работает полностью (подписка, ack, чтение S3, публикация результата, ошибки транспорта), **Срез 0 — скелет.** Транспорт работает полностью (подписка, ack, чтение S3, публикация результата, ошибки транспорта),
@ -52,7 +52,7 @@ api/ бэкенд (все команды разработки
src/core/ config.py (настройки), clients.py (S3), nats.py (соединение NATS), worker.py (воркер src/core/ config.py (настройки), clients.py (S3), nats.py (соединение NATS), worker.py (воркер
распознавания), logger.py, exception_handlers.py распознавания), logger.py, exception_handlers.py
src/parser/ интерфейс Parser и заглушка NullParser (разбор — Срез 2) src/parser/ интерфейс Parser и заглушка NullParser (разбор — Срез 2)
src/contract/ pydantic-модели контракта v1.0 src/contract/ pydantic-модели контракта v1.1
contracts/ копии JSON-схем контракта и примеры contracts/ копии JSON-схем контракта и примеры
rules/ словари синонимов *.yaml для парсера (пока только README; словари — Срез 2) rules/ словари синонимов *.yaml для парсера (пока только README; словари — Срез 2)
tests/ pytest: unit и integration (маркер `integration`) tests/ pytest: unit и integration (маркер `integration`)

View File

@ -71,15 +71,15 @@
}, },
{ {
"row_number": 3, "row_number": 3,
"level": 1, "level": 2,
"parent_row_number": 2, "parent_row_number": 2,
"row_value": "ООО Одуванчик, ИНН 7722222222", "row_value": "Вал.",
"group_type": "COUNTERPARTY", "group_type": "OTHER",
"group_name": "Контрагенты", "group_name": null,
"account_code_raw": "60", "account_code_raw": "60",
"counterparty_name": "ООО Одуванчик", "counterparty_name": "ООО Лютик",
"counterparty_inn": "7722222222", "counterparty_inn": "7711111111",
"data_type": "NU", "data_type": "CURRENCY",
"opening_debit": "0.00", "opening_debit": "0.00",
"opening_credit": "400.00", "opening_credit": "400.00",
"turnover_debit": "100.00", "turnover_debit": "100.00",