fix(core): renforcer detection PII et FINESS Corse
Couvre les corrections PII batch A/A-2, le NIR multi-ligne en flux reel, le gazetteer FINESS Corse derive depuis la base locale, et les tests de regression associes. Aucun build ni diffusion.
This commit is contained in:
@@ -20,6 +20,7 @@ from collections import Counter
|
||||
|
||||
CSV_PATH = Path(__file__).parent.parent / "data" / "finess" / "finess_etablissements.csv"
|
||||
OUT_DIR = Path(__file__).parent.parent / "data" / "finess"
|
||||
RE_FINESS_IDENTIFIER = re.compile(r"^(?:\d{9}|2[AB]\d{7})$", re.IGNORECASE)
|
||||
|
||||
# Préfixes génériques d'établissements à retirer pour extraire le nom distinctif
|
||||
GENERIC_PREFIXES = re.compile(
|
||||
@@ -110,12 +111,12 @@ def main():
|
||||
continue
|
||||
|
||||
# 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: 999999999 entjur CHUXX).
|
||||
# Les deux sont des identifiants réels du référentiel FINESS et doivent être masqués.
|
||||
# Les départements corses utilisent le préfixe alphanumérique 2A/2B au lieu de deux
|
||||
# chiffres, donc on accepte aussi 2A/2B + 7 chiffres.
|
||||
for col_idx in (1, 2):
|
||||
finess = row[col_idx].strip() if col_idx < len(row) else ""
|
||||
if re.match(r"^\d{9}$", finess):
|
||||
finess = (row[col_idx].strip() if col_idx < len(row) else "").upper()
|
||||
if RE_FINESS_IDENTIFIER.match(finess):
|
||||
finess_numbers.add(finess)
|
||||
|
||||
# Noms (col 3 = court, col 4 = long)
|
||||
|
||||
Reference in New Issue
Block a user