test(review): étendre couche 2 à 10 cas et brancher gate pytest avec xfail strict

Couche 2 (revue humaine sur documents complets) : ajout de 6 cas
synthétiques pour atteindre la cible cadrage produit (10 cas).

Cas ajoutés :
- 005_bacterio_complete : layout BACTERIO N° venue rejeté avant IPP
  + RPPS prescripteur (pattern qualifié non détecté).
- 006_trackare_soignants : export Trackare avec activités HH:MM NOM,
  Note IDE/médicale, Signé — médicament greedy.
- 007_lettre_sortie_complete : courrier médecin→médecin, multi-villes,
  email institutionnel @chcb.fr (cassé par le force_term CHCB).
- 008_anesthesie_complete : protocole anesthésique avec molécules
  BDPM, prénoms basques rares (Maddi, Pantxoa).
- 009_multi_etablissements : 3 établissements distincts (CHCB, CHU
  Bordeaux, Clinique Aguilera), prénoms basques avec ñ (Beñat).
- 010_fiche_admission_minimale : fiche administrative dense, labels
  variés (Nom de jeune fille :, Prénom :, Ville :, Mutuelle :).

Gate pytest (tests/unit/test_synthetic_review.py) :
- vérifie l'inventaire (10 cas) et fait passer chaque cas via run_case.
- 3 cas marqués xfail(strict=True) pour révéler 9 fuites de PII et
  2 patterns partiels que le moteur ne couvre pas aujourd'hui :
  * 005 — RPPS avec qualificateur (RPPS prescripteur :)
  * 009 — Bordeaux résiduel après [ETAB], CHCB en fin de phrase,
          Biarritz sur ligne Ville :, ñ qui casse Beñat → [NOM]ñat
  * 010 — Nom de jeune fille / Prénom / Ville sans label "Patient :",
          NIR au format espacé partiellement consommé en TEL,
          numéro de mutuelle MGEN non couvert
- xfail strict force pytest à signaler un xpass quand un fix passe :
  rappel automatique de retirer l'entrée de KNOWN_FAILURES.

Le runner tools/run_synthetic_review_corpus.py reste utilisable en
direct (sortie diff/audit/summary) pour la revue humaine. Les sorties
actual/ sont gitignorées (régénérées à chaque exécution).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-27 20:46:22 +02:00
parent 8f6c462b27
commit cf36357fe5
26 changed files with 1065 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
{
"required_kinds": [
"ADRESSE",
"CODE_POSTAL",
"DATE_NAISSANCE",
"EMAIL",
"ETAB",
"IPP",
"NIR",
"TEL",
"VILLE"
],
"must_contain": [
"FICHE D'ADMISSION",
"Service de gastro-entérologie",
"Sexe : F",
"Nationalité : française",
"Lien : conjoint",
"MGEN"
],
"must_not_contain": [
"DARRIBEHAUDE",
"ELIZONDO",
"Sabine",
"ETCHEGOIN",
"Jean-Louis",
"Tarbes",
"Bayonne",
"VWX99001",
"24009988",
"2400667788",
"44455566677",
"30/04/1973",
"05 59 22 33 44",
"06 88 99 00 11",
"06 77 88 99 00",
"05 59 11 22 33",
"sabine.darribehaude@example.com",
"1234567890",
"2 73 04 65 100 100 88",
"CHCB"
]
}

View File

@@ -0,0 +1,40 @@
[ETABLISSEMENT]
FICHE D'ADMISSION
Date : 02/09/2024
N° venue : [NDA]
IPP : [IPP]
Dossier : [DOSSIER]
IDENTITE
Nom : [NOM]
Nom de jeune fille : [NOM]
Prénom : [NOM]
Sexe : F
[DATE_NAISSANCE]
Lieu de naissance : [VILLE]
Nationalité : française
COORDONNEES
Adresse : [ADRESSE]
Code postal : [CODE_POSTAL]
Ville : [VILLE]
Téléphone fixe : [TEL]
Téléphone portable : [TEL]
Email : [EMAIL]
PERSONNE A PREVENIR
Nom : [NOM] (époux)
Téléphone : [TEL]
Lien : conjoint
MEDECIN TRAITANT
Dr [NOM]
RPPS : [RPPS]
Tel : [TEL]
INFORMATIONS COMPLEMENTAIRES
Mutuelle : MGEN n°adhérent [NDA]
Sécurité sociale : [NIR]
Service de gastro-entérologie — chambre 412

View File

@@ -0,0 +1,36 @@
# Revue 010 — fiche d'admission administrative
Famille documentaire : fiche d'identification administrative pure,
quasi sans narratif. Empilement dense de PII structurées sous des
labels explicites. Pas de contexte sémantique pour aider le NER.
Patterns testés :
- structuration en blocs (IDENTITE, COORDONNEES, PERSONNE A PREVENIR,
MEDECIN TRAITANT, INFORMATIONS COMPLEMENTAIRES) ;
- nom marital + nom de jeune fille empilés sur deux lignes ;
- patient et époux portant le même nom de famille (DARRIBEHAUDE) :
vérifier la propagation globale ;
- 4 numéros de téléphone différents (fixe patient, portable patient,
proche, médecin traitant) ;
- email avec local-part contenant le nom de famille
(`sabine.darribehaude`) — fuite indirecte si l'email n'est pas masqué
comme un bloc atomique ;
- numéro de mutuelle MGEN (10 chiffres) à masquer ;
- numéro de sécurité sociale au format espacé (`2 73 04 65 100 100 88`)
qui doit être détecté par la règle NIR.
Points critiques :
- aucun token PII ne doit fuiter, malgré l'absence de contexte narratif ;
- le label structurel doit rester (`Nom :`, `Prénom :`, `Adresse :`, etc.) ;
- le sigle `MGEN` (organisme de mutuelle, pas un nom propre) doit rester ;
- le numéro d'adhérent MGEN `1234567890` doit être masqué (pseudo-NDA) ;
- `Sexe : F` et `Nationalité : française` doivent rester intacts ;
- le numéro de chambre `chambre 412` doit rester intact (pas un
identifiant patient).
Écarts attendus :
- numéro d'adhérent MGEN : pas couvert par les règles standard, peut
être un FN si aucune règle générique sur séquence numérique 10+ ;
- le NIR au format espacé peut être détecté ou non selon la règle ;
- patient et époux portant le même nom : vérifier que les deux
occurrences sont bien masquées.

View File

@@ -0,0 +1,40 @@
CENTRE HOSPITALIER DE LA COTE BASQUE
FICHE D'ADMISSION
Date : 02/09/2024
N° venue : 2400667788
IPP : VWX99001
Dossier : 24009988
IDENTITE
Nom : DARRIBEHAUDE
Nom de jeune fille : ELIZONDO
Prénom : Sabine
Sexe : F
Date de naissance : 30/04/1973
Lieu de naissance : Tarbes
Nationalité : française
COORDONNEES
Adresse : 17 boulevard Thiers, appartement 3B
Code postal : 64100
Ville : Bayonne
Téléphone fixe : 05 59 22 33 44
Téléphone portable : 06 88 99 00 11
Email : sabine.darribehaude@example.com
PERSONNE A PREVENIR
Nom : DARRIBEHAUDE Pierre (époux)
Téléphone : 06 77 88 99 00
Lien : conjoint
MEDECIN TRAITANT
Dr ETCHEGOIN Jean-Louis
RPPS : 44455566677
Tel : 05 59 11 22 33
INFORMATIONS COMPLEMENTAIRES
Mutuelle : MGEN n°adhérent 1234567890
Sécurité sociale : 2 73 04 65 100 100 88
Service de gastro-entérologie — chambre 412