fix(statements): вставка document_issue пакетами (#142, AURORA-1711) #143

Merged
aep merged 1 commits from feat/142-batch-document-issues into main 2026-10-20 19:12:27 +03:00
Owner

Closes #142. Jira: AURORA-1711.

Что и почему

repositories/statements.add_issues вставлял все записи document_issue документа одним INSERT: 16 параметров на запись, лимит asyncpg 32 767 — потолок ≈ 2 047 замечаний. «11.xlsx» (ОСВ сч. 11, Конный завод «Чесменский», 6 384 строки) на парсере контура tabular-parser 40287e1 даёт 2 131 предупреждение листа (2 128 — нераспознанная метка «Кол. доп.»; в парсере устранено #67 / AURORA-1709, выкладка AURORA-1710). Маппинг падал с InterfaceError: the number of query arguments cannot exceed 32767, три попытки, файл ERROR.

Теперь вставка пакетами по BATCH (1000), как у строк и значений форм в том же модуле. Других пакетных вставок без деления в repositories/ и services/ нет (колонки формы — единицы на документ, osv_entry — уже по ENTRY_BATCH_SIZE).

Тест

test_osv_v2_many_sheet_warnings_stored (tests/test_mapping_statements_v2.py): лист ОСВ 2.0 с 2 131 предупреждением → документ создан, все 2 131 записи в document_issue. До исправления падал той же InterfaceError.

Проверки (make check-full по шагам)

Шаг Результат
lint (ruff + mypy) ✅
test ❌ 2 failed / 1818 passed — test_fixtures_marker.py::test_ocr_result_*, падают так же на origin/main
dbml-check ✅
check-infra ✅
test-integration ❌ 162 failed / 952 passed — все с RecognitionResult 1.x на golden-снимках fixtures в формате 2.0 (schema_version '2.0' не проходит ^1\.\d+$); на origin/main то же (test_api_statements.py + test_mapping_statements.py: 124 failed / 3 passed). Тесты маппинга 2.0 (test_mapping_statements_v2.py, test_statements_v2_edit.py) — 47 passed
e2e ✅
docker-build ✅
web-check ✅

Красные шаги — существующий долг main (тесты ядра читают golden fixtures, переведённые на контракт 2.0, моделью 1.x), к этой правке не относятся; заводится отдельно.

🤖 Generated with Claude Code

Closes #142. Jira: AURORA-1711. ## Что и почему `repositories/statements.add_issues` вставлял все записи `document_issue` документа одним INSERT: 16 параметров на запись, лимит asyncpg 32 767 — потолок ≈ 2 047 замечаний. «11.xlsx» (ОСВ сч. 11, Конный завод «Чесменский», 6 384 строки) на парсере контура tabular-parser 40287e1 даёт 2 131 предупреждение листа (2 128 — нераспознанная метка «Кол. доп.»; в парсере устранено #67 / AURORA-1709, выкладка AURORA-1710). Маппинг падал с `InterfaceError: the number of query arguments cannot exceed 32767`, три попытки, файл ERROR. Теперь вставка пакетами по `BATCH` (1000), как у строк и значений форм в том же модуле. Других пакетных вставок без деления в `repositories/` и `services/` нет (колонки формы — единицы на документ, `osv_entry` — уже по `ENTRY_BATCH_SIZE`). ## Тест `test_osv_v2_many_sheet_warnings_stored` (`tests/test_mapping_statements_v2.py`): лист ОСВ 2.0 с 2 131 предупреждением → документ создан, все 2 131 записи в `document_issue`. До исправления падал той же InterfaceError. ## Проверки (make check-full по шагам) | Шаг | Результат | |---|---| | lint (ruff + mypy) | ✅ | | test | ❌ 2 failed / 1818 passed — `test_fixtures_marker.py::test_ocr_result_*`, **падают так же на origin/main** | | dbml-check | ✅ | | check-infra | ✅ | | test-integration | ❌ 162 failed / 952 passed — все с `RecognitionResult` 1.x на golden-снимках fixtures в формате 2.0 (`schema_version '2.0'` не проходит `^1\.\d+$`); **на origin/main то же** (`test_api_statements.py` + `test_mapping_statements.py`: 124 failed / 3 passed). Тесты маппинга 2.0 (`test_mapping_statements_v2.py`, `test_statements_v2_edit.py`) — 47 passed | | e2e | ✅ | | docker-build | ✅ | | web-check | ✅ | Красные шаги — существующий долг main (тесты ядра читают golden fixtures, переведённые на контракт 2.0, моделью 1.x), к этой правке не относятся; заводится отдельно. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 1 commit 2026-10-20 19:11:17 +03:00
add_issues вставлял все записи документа одним INSERT: 16 параметров на
запись, лимит asyncpg 32 767 — потолок около 2 047 замечаний. Лист ОСВ
«11.xlsx» (сч. 11, 2 128 строк «Кол. доп.» на парсере контура 40287e1)
давал 2 131 предупреждение, маппинг падал с InterfaceError, файл ERROR.
Теперь пакеты по BATCH (1000), как у строк и значений форм.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
aep merged commit e6e4cd877b into main 2026-10-20 19:12:27 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/arm-core#143
No description provided.