3 Commits

Author SHA1 Message Date
Andrey Epifancev
663ba17716 fix(parser): inn_digits склеивает только группы цифр через пробел (T7.4)
ИНН из текста ячейки колонки ИНН принимается, только если в тексте одна запись цифр:
группы, разделённые пробелом/NBSP/узким пробелом («3528 052718», «ИНН 352819549855»).
«№ 12 от 01.02.2025» и «№ 12 / 3528052718 / …» больше не дают ложный ИНН.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 14:07:33 +04:00
Andrey Epifancev
46c427e3c1 fix(parser): inn_digits извлекает ИНН из текста с обрамлением (T7.1, R-15)
Строгая detect.inn_from_cell не меняется (ей детектор отличает колонку ИНН). inn_digits — режим извлечения для ячеек
выбранной колонки: сначала строгое правило, затем для текстовых ячеек цифры всех групп склеиваются и принимаются при
длине 10/12 (без дополнения нулём). Числовые ячейки во второй шаг не попадают.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 13:50:09 +04:00
Andrey Epifancev
1f2f050838 feat(parser): нормализация сумм и ИНН (Decimal, текстовые форматы)
to_money — единственное место квантования сумм до 0.01 (ROUND_HALF_UP): число из ячейки (уже Decimal(str(value)))
без float-хвостов, текст с пробелами/NBSP/узкими пробелами, запятой, (x), U+2212, экспонентой; прочерки и пусто — None
без предупреждения; нечисловой текст, NaN/Infinity, значения вне numeric(18,2) — None с предупреждением; «-0» → 0.00.
inn_digits делегирует detect.inn_from_cell (одно правило ИНН для детектора и классификатора).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 13:45:59 +04:00