# Specification MVP - regles d'administration ## 1. Objet Cette specification decrit un MVP pour administrer des regles d'anonymisation sans modifier directement le code du moteur. Le but n'est pas de donner un acces libre a des regex dangereuses. Le but est de fournir un **moteur de regles gouverne**, testable et reversible. ## 2. Objectifs fonctionnels Le MVP doit permettre de : - creer une regle ; - visualiser sa forme normalisee ; - simuler son effet sur un corpus cible ; - l'activer ou la desactiver ; - garder une trace complete des changements ; - lier chaque regle a des cas de test. ## 3. Hors perimetre MVP Le MVP ne cherche pas encore a : - couvrir tous les cas regex complexes ; - gerer des workflows d'approbation multi-niveaux ; - remplacer toute la configuration coeur existante ; - editer directement les heuristiques internes du pipeline. ## 4. Types de regles supportes ### 4.1 `exact_term` Usage : - masquer un terme exact. Exemples : - `CHUXX` - `LOCAL_SIGLE` Parametres principaux : - `match.exact_value` - `normalization.case_insensitive` - `normalization.whole_word` ### 4.2 `normalized_identifier` Usage : - masquer une valeur canonique et ses variantes normalisees. Exemple : - valeur canonique : `1234567` Variantes attendues selon la configuration : - `1234567` - `N°1234567` - `N° 1234567` - `No1234567` - `Numero 1234567` Parametres principaux : - `match.canonical_value` - `normalization.accepted_prefixes` - `normalization.prefix_value_separators` - `normalization.allow_bare_value` - `normalization.multiline` ### 4.3 `contextual_identifier` Usage : - masquer un identifiant seulement dans un contexte structure donne. Exemples : - `IPP : ABC12345` - `N° venue : 1234567` - `N° examen : 23L35781` Parametres principaux : - `match.canonical_value` - `match.context_prefixes` - `match.context_separators` - `normalization.multiline` ### 4.4 `preserve_phrase` Usage : - garantir qu'une phrase ou formulation metier ne soit jamais masquee. Exemples : - `classification internationale` - `prise en charge` Parametres principaux : - `match.exact_value` - `normalization.case_insensitive` ## 5. Structure des regles Le schema de reference est fourni ici : - [admin_rules.schema.json](/home/dom/ai/anonymisation/schemas/admin_rules.schema.json:1) Le template versionne est ici : - [admin_rules.default.yml](/home/dom/ai/anonymisation/config/admin_rules.default.yml:1) ## 6. Champs minimaux par regle Chaque regle doit porter : - `id` - `label` - `type` - `action` - `status` - `match` - `scope` - `governance` Et, si `action = mask` : - `placeholder` ## 7. Etats de cycle de vie ### `draft` - regle redigee ; - jamais activee ; - pas encore validee. ### `candidate` - regle complete ; - simulation en cours ; - revue humaine a faire. ### `approved` - regle validee fonctionnellement ; - prete a etre activee. ### `active` - regle exploitable en environnement autorise. ### `disabled` - regle desactivee temporairement. ### `retired` - regle retiree, conservee pour audit. ## 8. Portee d'une regle Une regle ne doit pas etre globalisee par defaut. Le MVP doit permettre de preciser : - familles documentaires ; - environnements ; - zones documentaires : - `narrative` - `structured` - `table` - `header` - `footer` ## 9. Gouvernance minimale Chaque regle doit indiquer : - `owner` - `justification` - `created_at` - `review_required_for_activation` - `tests.required_case_ids` Pour une regle active, l'absence de cas de test associe doit etre interdite. ## 10. Ecrans MVP recommandes ### 10.1 Liste des regles Colonnes minimales : - id ; - label ; - type ; - status ; - scope ; - auteur ; - date ; - dernier test ; - dernier verdict. Actions : - filtrer ; - dupliquer ; - desactiver ; - ouvrir ; - comparer deux versions. ### 10.2 Creation / edition d'une regle Blocs de formulaire : - identification ; - type ; - valeur source ; - normalisation ; - portee ; - gouvernance ; - rattachement des cas de test. ### 10.3 Simulation Avant activation, afficher : - variantes generees ; - cas touches ; - extrait avant / apres ; - nouveaux masquages ; - pertes de preservation ; - verdict automatique. ### 10.4 Validation / activation Le panneau d'activation doit afficher : - resultat du validateur de schema ; - resultat des tests lies ; - resultat du corpus de simulation ; - presence ou non d'une revue humaine ; - bouton `Activer` ou blocage. ### 10.5 Historique Chaque changement doit laisser une trace : - qui ; - quand ; - quoi ; - pourquoi ; - sur quel perimetre ; - avec quel resultat. ## 11. Garde-fous obligatoires Le MVP doit bloquer : - une regle active sans cas de test ; - une regle `preserve_phrase` avec action `mask` ; - une regle trop large sans justification ; - une activation sans simulation ; - une regle syntaxiquement invalide. ## 12. Commande de validation hors interface Le depot fournit un validateur CLI : - [validate_admin_rules.py](/home/dom/ai/anonymisation/tools/validate_admin_rules.py:1) Exemple : ```bash python3 tools/validate_admin_rules.py --config config/admin_rules.default.yml --show-variants ``` ## 13. Recommandation d'implementation Ordre recommande : 1. schema et validateur ; 2. stockage YAML versionne ; 3. simulation hors interface ; 4. ecran d'edition ; 5. ecran de simulation ; 6. activation gouvernee. ## 14. Point important Ces artefacts definissent le **contrat de regles** et le **MVP d'administration**. Ils ne branchent pas encore ces regles dans le moteur de production. La prochaine etape technique sera : - chargement de `admin_rules` ; - compilation ; - simulation ; - puis application controlee dans le pipeline.