# Améliorations Interface Graphique - Recommandations **Date**: 2 mars 2026 **Fichier**: `Pseudonymisation_Gui_V5.py` ## Analyse Actuelle L'interface est bien conçue avec : - ✅ Design moderne et épuré - ✅ Thème système natif (sv_ttk) - ✅ Vue unique en 2 étapes - ✅ Feedback visuel (progression, résultats) - ✅ Support VLM optionnel ## Améliorations Recommandées ### 1. Afficher les Métriques de Qualité 🎯 **Problème**: L'utilisateur ne voit pas la qualité de l'anonymisation (Precision/Recall). **Solution**: Ajouter une carte de métriques dans la section résultats : ```python # Après les 3 cartes existantes (fichiers, données masquées, erreurs) self._stat_quality = self._make_stat_card( stats_row, "100%", "qualité (F1-Score)", CLR_GREEN, CLR_GREEN_LIGHT, 3 ) ``` **Calcul**: Utiliser `evaluation/quality_evaluator.py` si annotations disponibles, sinon afficher "N/A". ### 2. Indicateur de Fuites 🔒 **Problème**: Pas de feedback sur les fuites potentielles détectées. **Solution**: Ajouter un indicateur de sécurité : ```python # Badge "0 fuite détectée" ou "⚠️ X fuites potentielles" self._leak_badge = tk.Label( self._results_frame, text="🔒 0 fuite détectée", font=self._f_body_bold, bg=CLR_GREEN_LIGHT, fg=CLR_GREEN, padx=12, pady=6 ) ``` **Calcul**: Utiliser `evaluation/leak_scanner.py` sur les textes anonymisés. ### 3. Temps de Traitement et Vitesse ⏱️ **Problème**: Pas d'info sur les performances. **Solution**: Afficher le temps total et la vitesse moyenne : ```python # Dans la section résultats self._perf_label = tk.Label( self._results_frame, text="Traité en 2m 15s (1.2s/document)", font=self._f_small, bg=CLR_BG, fg=CLR_TEXT_SECONDARY ) ``` ### 4. Prévisualisation Avant/Après 👁️ **Problème**: L'utilisateur ne peut pas voir un exemple d'anonymisation. **Solution**: Ajouter un bouton "Voir un exemple" qui ouvre une fenêtre avec : - Texte original (extrait) - Texte anonymisé - Liste des PII détectés ```python self.btn_preview = tk.Button( self._results_frame, text="Voir un exemple d'anonymisation", font=self._f_button, bg=CLR_PRIMARY, fg="white", command=self._show_preview ) ``` ### 5. Options Avancées (Optionnel) ⚙️ **Problème**: Pas de contrôle sur les paramètres d'anonymisation. **Solution**: Ajouter un bouton "Options avancées" qui ouvre une fenêtre modale avec : - ☑️ Activer/désactiver VLM - ☑️ Activer/désactiver filtre hôpital - ☑️ Générer PDF vectoriel (en plus du raster) - ☑️ Activer validation post-anonymisation - 🎚️ Seuil de confiance NER (slider) ### 6. Rapport d'Audit Téléchargeable 📄 **Problème**: Pas de rapport consolidé des résultats. **Solution**: Générer un rapport HTML/PDF avec : - Statistiques globales - Liste des fichiers traités - Métriques de qualité - Temps de traitement - Fuites détectées (si applicable) ```python self.btn_report = tk.Button( self._results_frame, text="Télécharger le rapport d'audit", font=self._f_button, bg=CLR_TEXT_SECONDARY, fg="white", command=self._generate_report ) ``` ### 7. Gestion des Erreurs Améliorée ⚠️ **Problème**: Les erreurs sont juste comptées, pas détaillées. **Solution**: Ajouter un bouton "Voir les erreurs" qui liste : - Nom du fichier - Type d'erreur - Message d'erreur - Action suggérée ### 8. Mode Batch avec Pause/Reprise ⏸️ **Problème**: Impossible de mettre en pause un traitement long. **Solution**: Ajouter des boutons : - ⏸️ Pause - ▶️ Reprendre - ⏹️ Arrêter ### 9. Historique des Traitements 📊 **Problème**: Pas de trace des traitements précédents. **Solution**: Ajouter un onglet "Historique" avec : - Date/heure - Dossier traité - Nombre de fichiers - Métriques - Bouton "Retraiter" ### 10. Drag & Drop 🖱️ **Problème**: L'utilisateur doit cliquer pour choisir un dossier. **Solution**: Permettre le glisser-déposer d'un dossier sur la zone de sélection. ```python self._folder_zone.drop_target_register(DND_FILES) self._folder_zone.dnd_bind('<>', self._on_drop) ``` ## Priorités d'Implémentation ### Priorité 1 (Impact Élevé, Effort Faible) 1. ✅ Temps de traitement et vitesse 2. ✅ Indicateur de fuites 3. ✅ Gestion des erreurs améliorée ### Priorité 2 (Impact Élevé, Effort Moyen) 4. ✅ Métriques de qualité 5. ✅ Prévisualisation avant/après 6. ✅ Rapport d'audit téléchargeable ### Priorité 3 (Impact Moyen, Effort Élevé) 7. ⚙️ Options avancées 8. ⏸️ Mode batch avec pause/reprise 9. 📊 Historique des traitements 10. 🖱️ Drag & drop ## Mockup Proposé (Section Résultats) ``` ┌─────────────────────────────────────────────────────────────┐ │ Résultats │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 125 │ │ 12,450 │ │ 2 │ │ 100% │ │ │ │ fichiers │ │ données │ │ erreurs │ │ qualité │ │ │ │ traités │ │ masquées │ │ │ │(F1-Score)│ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ 🔒 0 fuite détectée │ │ ⏱️ Traité en 3m 45s (1.8s/document) │ │ │ │ ┌────────────────────────────────────────────────────┐ │ │ │ Ouvrir le dossier de résultats │ │ │ └────────────────────────────────────────────────────┘ │ │ │ │ ┌────────────────────────────────────────────────────┐ │ │ │ Voir un exemple d'anonymisation │ │ │ └────────────────────────────────────────────────────┘ │ │ │ │ ┌────────────────────────────────────────────────────┐ │ │ │ Télécharger le rapport d'audit │ │ │ └────────────────────────────────────────────────────┘ │ │ │ │ Voir le journal détaillé ▼ │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ## Code Exemple : Indicateur de Fuites ```python def _check_leaks(self, output_dir: Path) -> int: """Vérifie les fuites dans les textes anonymisés.""" from evaluation.leak_scanner import LeakScanner scanner = LeakScanner() leak_count = 0 for txt_file in output_dir.glob("*.pseudonymise.txt"): with open(txt_file, 'r', encoding='utf-8') as f: content = f.read() report = scanner.scan_text(content) leak_count += len(report.leaks) return leak_count def _update_leak_indicator(self, leak_count: int): """Met à jour l'indicateur de fuites.""" if leak_count == 0: self._leak_badge.configure( text="🔒 0 fuite détectée", bg=CLR_GREEN_LIGHT, fg=CLR_GREEN ) else: self._leak_badge.configure( text=f"⚠️ {leak_count} fuite{'s' if leak_count > 1 else ''} potentielle{'s' if leak_count > 1 else ''}", bg=CLR_RED_LIGHT, fg=CLR_RED ) ``` ## Accessibilité - ✅ Contraste des couleurs conforme WCAG AA - ✅ Tailles de police lisibles - ⚠️ Ajouter des labels ARIA pour les lecteurs d'écran - ⚠️ Support navigation clavier (Tab, Enter, Espace) - ⚠️ Tooltips informatifs sur tous les boutons ## Tests Utilisateur Suggérés 1. Tester avec un utilisateur non-technique 2. Mesurer le temps pour comprendre l'interface 3. Vérifier la compréhension des métriques 4. Valider l'utilité des fonctionnalités proposées ## Conclusion L'interface actuelle est solide. Les améliorations prioritaires sont : 1. **Indicateur de fuites** (sécurité) 2. **Temps de traitement** (feedback) 3. **Métriques de qualité** (confiance) Ces 3 ajouts simples augmenteraient significativement la valeur perçue et la confiance de l'utilisateur.