feat(normalizer): запятая — разделитель тысяч в суммах OCR (AURORA-1405, #35) #36

Merged
aep merged 2 commits from feat/35-ocr-thousands into main 2026-10-15 17:37:19 +03:00
Owner

Закрывает RSHB/arm-scan-gateway#35, Jira AURORA-1405. «4,200» в PDF — это 4 200: запятые-разделители тысяч (шаблон [+-]?[1-9]\d{0,2}(,\d{3})+) удаляются, verified=True. Решение владельца 15.10.2026.

Порядок слияния: сначала arm-ka-docs (правило в 05-domain-rules §11.1 п.7), затем этот PR.

Rulings I made

  • R-1: «(4,200}» (нераспознанная скобка) шаблону не соответствует — прежний разбор (4.200, verified=False, минус не ставится, №12; №30 отсекает). Цена ошибки: тысячи в таких ячейках не угадываются.
  • R-2: знак и скобки допускаются: «-4,200» → −4200, «+4,200» → 4200, «(-4,200)» → −4200; verified=True. Цена: нет.
  • R-3: «4,200,», «0,125», «12,3456», «1,23», «01,234», «4,2000» шаблону не соответствуют — поведение прежнее («4,200,» → 4200, verified=False, как раньше).
  • R-4: шаблон проверяется после strip и удаления пробелов, до замены запятой на точку; «1, 234» → 1234.
  • R-5: скобки учитываются в правиле тысяч, только если пара занимает всю строку; «(4,200) руб», «abc(4,200)», «(4,200)(1,000)» — прежний разбор (иначе текст снаружи терялся бы молча). Цена: такие ячейки остаются amount=null (№30) и уходят на проверку аналитиком.

Находки

Маркер Суть Статус
I-1 правило тысяч игнорировало текст вне скобок fixed 9dd568c
I-2 openspec/specs/image-recognition-gateway/spec.md устарел fixed 9dd568c
I-3 README: пример «1,234» устарел fixed 9dd568c
M-1 docstring: порядок шагов fixed 9dd568c
M-2 комментарий у регулярки fixed 9dd568c
M-3 тесты краевых случаев fixed 9dd568c
M-4 docs: формулировка про «показывалось как 4,2» fixed 3230459 (docs)
O-1 make check-full: test-integration/docker-build не выполнены — Docker daemon не запущен, NATS недоступен deferred (прогнать владельцу с make up)

Golden нормализатора не изменились (test_golden зелёный), PR в fixtures и проверка arm-core не нужны.

🤖 Generated with Claude Code

Закрывает RSHB/arm-scan-gateway#35, Jira AURORA-1405. «4,200» в PDF — это 4 200: запятые-разделители тысяч (шаблон `[+-]?[1-9]\d{0,2}(,\d{3})+`) удаляются, verified=True. Решение владельца 15.10.2026. Порядок слияния: сначала arm-ka-docs (правило в 05-domain-rules §11.1 п.7), затем этот PR. ## Rulings I made - R-1: «(4,200}» (нераспознанная скобка) шаблону не соответствует — прежний разбор (4.200, verified=False, минус не ставится, №12; №30 отсекает). Цена ошибки: тысячи в таких ячейках не угадываются. - R-2: знак и скобки допускаются: «-4,200» → −4200, «+4,200» → 4200, «(-4,200)» → −4200; verified=True. Цена: нет. - R-3: «4,200,», «0,125», «12,3456», «1,23», «01,234», «4,2000» шаблону не соответствуют — поведение прежнее («4,200,» → 4200, verified=False, как раньше). - R-4: шаблон проверяется после strip и удаления пробелов, до замены запятой на точку; «1, 234» → 1234. - R-5: скобки учитываются в правиле тысяч, только если пара занимает всю строку; «(4,200) руб», «abc(4,200)», «(4,200)(1,000)» — прежний разбор (иначе текст снаружи терялся бы молча). Цена: такие ячейки остаются amount=null (№30) и уходят на проверку аналитиком. ## Находки | Маркер | Суть | Статус | |---|---|---| | I-1 | правило тысяч игнорировало текст вне скобок | fixed 9dd568c | | I-2 | openspec/specs/image-recognition-gateway/spec.md устарел | fixed 9dd568c | | I-3 | README: пример «1,234» устарел | fixed 9dd568c | | M-1 | docstring: порядок шагов | fixed 9dd568c | | M-2 | комментарий у регулярки | fixed 9dd568c | | M-3 | тесты краевых случаев | fixed 9dd568c | | M-4 | docs: формулировка про «показывалось как 4,2» | fixed 3230459 (docs) | | O-1 | `make check-full`: test-integration/docker-build не выполнены — Docker daemon не запущен, NATS недоступен | deferred (прогнать владельцу с `make up`) | Golden нормализатора не изменились (test_golden зелёный), PR в fixtures и проверка arm-core не нужны. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 2 commits 2026-10-15 16:00:13 +03:00
«4,200» в PDF — это 4200: запятые вида [+-]?[1-9]\d{0,2}(,\d{3})+ (полное совпадение, с учётом скобок)
удаляются до замены запятой на точку, verified сохраняется. Решение владельца 15.10.2026.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
I-1: «(4,200) руб», «1,234(5,678)» и т. п. разбираются как прежде; I-2/I-3: спека и README;
M-1..M-3: docstring, комментарий регулярки, тесты крайних случаев.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Author
Owner

O-1 закрыто: Docker поднят, make up && make check-full в worktree ветки feat/35-ocr-thousands (HEAD 9dd568c) — зелёный: make check (ruff, mypy, 1093 passed), test-integration 11 passed (NATS/MinIO, roundtrip по expected_normalize), docker-build — образ scan-gateway:dev собран.

🤖 Generated with Claude Code

O-1 закрыто: Docker поднят, `make up && make check-full` в worktree ветки `feat/35-ocr-thousands` (HEAD 9dd568c) — зелёный: `make check` (ruff, mypy, 1093 passed), `test-integration` 11 passed (NATS/MinIO, roundtrip по `expected_normalize`), `docker-build` — образ `scan-gateway:dev` собран. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep merged commit 18842e0796 into main 2026-10-15 17:37:19 +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-scan-gateway#36
No description provided.