fix(llm): INN redaction requires context anchor, stop eating large numbers (#1640) #1682

Merged
lekss361 merged 1 commit from fix/inn-regex-context-1640 into main 2026-06-17 17:55:08 +00:00
Owner

Проблема (#1640)

redaction.py _INN_RE матчил голые 10/12-значные числа без контекста → крупные суммы (1200000000) затирались как [REDACTED:inn] (checksum случайно проходил).

Решение

_INN_RE требует якорь ИНН/inn (≤20 не-цифровых символов до блока), цифры в group(1) валидируются checksum'ом. Голые числа больше не трогаются.

Verify

ruff clean; pytest (redact/inn/pii) → 47 passed, 1 skipped (+7 regression-тестов #1640).

Closes #1640

## Проблема (#1640) `redaction.py` `_INN_RE` матчил голые 10/12-значные числа без контекста → крупные суммы (1200000000) затирались как `[REDACTED:inn]` (checksum случайно проходил). ## Решение `_INN_RE` требует якорь `ИНН`/`inn` (≤20 не-цифровых символов до блока), цифры в `group(1)` валидируются checksum'ом. Голые числа больше не трогаются. ## Verify `ruff` clean; `pytest` (redact/inn/pii) → **47 passed, 1 skipped** (+7 regression-тестов #1640). Closes #1640
lekss361 added 1 commit 2026-06-17 17:45:33 +00:00
fix(llm): INN redaction requires context/checksum, stop eating large numbers (#1640)
Some checks failed
CI / changes (push) Successful in 8s
CI / changes (pull_request) Successful in 7s
CI / frontend-tests (push) Has been skipped
CI / openapi-codegen-check (push) Has been skipped
CI / backend-tests (push) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 1m42s
CI / backend-tests (pull_request) Failing after 8m59s
5c5be890ab
_INN_RE now requires an explicit ИНН/inn keyword anchor (case-insensitive) within
~20 chars before a 10/12-digit block. Bare digit sequences without the keyword are
no longer candidates — eliminates false-positives on large monetary amounts such as
1 200 000 000 (which coincidentally passes the ФНС checksum). Checksum validation
is kept as a second gate to avoid redacting e.g. «ИНН 1234567890» with bad digits.

_inn_repl updated to use match.group(1) (digit-only capture group) instead of the
full match that now also includes the keyword prefix.

7 new regression tests in test_redaction.py: bare large numbers not redacted,
keyword-cued real INNs (10/12 digit) still redacted, bad-checksum + keyword left
intact, latin «inn:» accepted.
lekss361 merged commit c0454d8905 into main 2026-06-17 17:55:08 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#1682
No description provided.