fix(detect): quick wins #6 #10 #11 — caractère ñ, numéro adhérent, NIR avant TEL

Trois fixes regroupés issus de la session de revue couche 2 :

#6 — caractère ñ dans les patterns de noms
Étend les classes de caractères pour inclure Ñ/ñ (basque, hispanique).
Avant : `Beñat` → `[NOM]ñat` (fuite indirecte du suffixe).
Après : `Beñat` → `[NOM]` (capture complète).
Justification : usage prévu La Réunion + populations basques/
hispaniques. Si nécessaire on ajoutera Ã/ã, Õ/õ (portugais) plus
tard.

#10 — règle numéro adhérent mutuelle (nouveau)
Ajoute placeholder [ADHERENT] et `RE_NUM_ADHERENT` :
`(?:n[°o]?\s*|num[ée]ro\s+(?:d['’]\s*)?)adh[ée]rent[e]?\s*[:\-]?\s*([A-Z0-9]{6,15})`
Couvre `n°adhérent`, `n° adhérent:`, `Numéro d'adhérent :`,
`Numéro d'adhérente:`, `numero adherent`, alphanumérique 6-15.
Faux positif `Le patient est adhérent à la mutuelle.` non matché
(préfixe N°/numéro obligatoire).

Branché dans `_mask_structured_line` (pour conserver le préfixe
au moment du matching, avant le split key:value) et dans
`_mask_line_by_regex` (texte non-structuré).

#11 — NIR avant TEL pour éviter consommation prématurée
Réordonne RE_NIR avant RE_TEL dans `_mask_line_by_regex` et
`selective_rescan`. Le NIR au format espacé `2 73 04 65 100 100 88`
est testé d'abord (validation modulo 97). Si validé, masqué en
[NIR] avant que RE_TEL ne consomme les 10 chiffres centraux. Si
la clé échoue (faux positif), TEL reprend la main inchangé.

Avant : `2 73 04 65 100 100 68` → `2 73 [TEL] 68`.
Après : `2 73 04 65 100 100 68` → `[NIR]`.

Cas synthetic_review/010 corrigé : NIR de test mis à clé valide
(68 au lieu de 88), expected aligné sur [ADHERENT] et [NIR].
Le case 010 reste en xfail — fuites résiduelles ELIZONDO / Sabine
/ Bayonne (labels structurels Nom de jeune fille / Prénom / Ville
non couverts) à fixer dans le batch suivant.

Tests : 70 passed, 3 xfailed (inchangé). Pas de régression.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-27 21:13:27 +02:00
parent 93338b6b72
commit fcf945d1f7
4 changed files with 110 additions and 87 deletions

View File

@@ -1,5 +1,6 @@
{
"required_kinds": [
"ADHERENT",
"ADRESSE",
"CODE_POSTAL",
"DATE_NAISSANCE",
@@ -37,7 +38,7 @@
"05 59 11 22 33",
"sabine.darribehaude@example.com",
"1234567890",
"2 73 04 65 100 100 88",
"2 73 04 65 100 100 68",
"CHCB"
]
}

View File

@@ -34,7 +34,7 @@ RPPS : [RPPS]
Tel : [TEL]
INFORMATIONS COMPLEMENTAIRES
Mutuelle : MGEN n°adhérent [NDA]
Mutuelle : MGEN n°adhérent [ADHERENT]
Sécurité sociale : [NIR]
Service de gastro-entérologie — chambre 412

View File

@@ -35,6 +35,6 @@ Tel : 05 59 11 22 33
INFORMATIONS COMPLEMENTAIRES
Mutuelle : MGEN n°adhérent 1234567890
Sécurité sociale : 2 73 04 65 100 100 88
Sécurité sociale : 2 73 04 65 100 100 68
Service de gastro-entérologie — chambre 412