chore(rgpd): replace CHCB/Bayonne/Saint-Denis/Réunion refs in source + configs (D-12)

Anonymise toutes les références à des entités réelles (CHCB, Bayonne, Saint-Denis,
Réunion, etc.) dans le code source, les configurations YAML, les scripts/outils,
et les tests unitaires. Conserve les tests synthétiques (cases) intentionnels.

- profile key chcb_strict → chuxx_strict
- CHCB → CHUXX, Bayonne → Chicago, Saint-Denis → Springfield,
  Réunion → Province Bêta, 64100/97400 → 12345, FINESS → 999999999,
  préfixe tél 05.59.44 → 0X.XX.XX
- renomme tools/test_chcb_leak.py → tools/test_force_term_leak.py

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-02 14:39:21 +02:00
parent 7b09b06065
commit 92557d4e74
37 changed files with 819 additions and 128 deletions

View File

@@ -74,7 +74,7 @@ def normalize(s: str) -> str:
def extract_distinctive_name(full_name: str) -> str:
"""Extrait la partie distinctive d'un nom d'établissement.
Ex: 'CENTRE HOSPITALIER DE BAYONNE''bayonne'
Ex: 'CENTRE HOSPITALIER DE CHICAGO''chicago'
'PHARMACIE DES GASCONS''gascons'
'LES GIRANDIERES''les girandieres'
"""
@@ -112,7 +112,7 @@ def main():
# Numéros FINESS : col 1 = finess_et (structure), col 2 = entjur (entité juridique).
# Les deux sont des identifiants 9 chiffres réels du référentiel FINESS et doivent
# être masqués. Avant ce fix, seul finess_et était extrait (~102k), et les ~48k
# entjur étaient manqués — provoquant des fuites (ex: 640780417 entjur CHCB).
# entjur étaient manqués — provoquant des fuites (ex: 999999999 entjur CHUXX).
for col_idx in (1, 2):
finess = row[col_idx].strip() if col_idx < len(row) else ""
if re.match(r"^\d{9}$", finess):

View File

@@ -34,7 +34,7 @@ from typing import Dict, List, Set, Tuple
# === Chemins par défaut ===
PROJECT_DIR = Path(__file__).parent.parent
DEFAULT_DIR = Path(
"/home/dom/Téléchargements/II-1 Ctrl_T2A_2025_CHCB_DocJustificatifs (1)"
"/home/dom/Téléchargements/II-1 Ctrl_T2A_2025_CHUXX_DocJustificatifs (1)"
"/anonymise_audit_30"
)
INSEE_NOMS = PROJECT_DIR / "data" / "insee" / "noms_famille_france.txt"
@@ -85,7 +85,7 @@ NAME_IGNORE = {
"GAUCHE", "DROITE", "ANTERIEUR", "POSTERIEUR",
"JANVIER", "FEVRIER", "MARS", "AVRIL", "JUIN", "JUILLET",
"AOUT", "SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DECEMBRE",
"FRANCE", "BAYONNE", "BORDEAUX", "PARIS", "TOULOUSE",
"FRANCE", "CHICAGO", "BORDEAUX", "PARIS", "TOULOUSE",
"SAINT", "SAINTE",
}

View File

@@ -45,7 +45,7 @@ PLACEHOLDER_TO_BIO: Dict[str, str] = {
RE_PLACEHOLDER = re.compile(r"^\[([A-Z_]+)\]$")
SRC = Path("/home/dom/Téléchargements/II-1 Ctrl_T2A_2025_CHCB_DocJustificatifs (1)")
SRC = Path("/home/dom/Téléchargements/II-1 Ctrl_T2A_2025_CHUXX_DocJustificatifs (1)")
AUDIT_DIR = SRC / "anonymise_audit_30"
# --- Gazetteer paths ---

View File

@@ -2,7 +2,7 @@
"""Reprocess corpus audit_30 avec le code actuel.
Lit la liste des documents depuis evaluation/baseline_scores.json, retrouve
chaque PDF source dans le dossier des justificatifs CHCB, et appelle
chaque PDF source dans le dossier des justificatifs CHUXX, et appelle
process_pdf() pour chacun.
Sortie : un dossier horodaté sous /tmp/reprocess_audit30/<timestamp>/ avec
@@ -31,7 +31,7 @@ from anonymizer_core_refactored_onnx import process_pdf, NerModelManager, NerThr
BASELINE_PATH = PROJECT_DIR / "evaluation" / "baseline_scores.json"
SOURCE_ROOT = Path(
"/home/dom/Téléchargements/II-1 Ctrl_T2A_2025_CHCB_DocJustificatifs (1)"
"/home/dom/Téléchargements/II-1 Ctrl_T2A_2025_CHUXX_DocJustificatifs (1)"
)