feat(gui): addenda Dom GUI V6 — sous-onglet Profils, libellés, aide, bêta

Suite des retours Dom sur la GUI V6 (par-dessus 6a0a581).

Addendum Profils / Réglages :
- Nouveau sous-onglet Administration « 👤 Profils » : le profil actif devient
  un objet lisible (nom, description, masque requis, template, listes locales
  avec compteurs) — données réelles lues depuis profile_defaults.
- Fenêtre « Tableau des termes » (terms_table_window.py) : table scrollable
  avec recherche/filtre, colonnes Type/Terme/Source ; reste lisible à 50+
  termes. Ajouter/éditer/supprimer désactivés « (à venir) » (écriture par
  profil non câblée).
- Réglages : « Profil métier » → « Profil d'anonymisation », « Sortie… » →
  « Dossier de sortie… » (+ infobulle), hints moteurs (standard/optionnel/
  plus lent), bouton « Voir le profil », « Ouvrir le tableau des termes ».
- Aide « ? » + infobulles (ui_kit.attach_tooltip) près des éléments ambigus.
- profile_view.py : logique pure (résumé profil + lignes du tableau),
  testable sans display.

Addendum bêta : en-tête « aivanonym » + badge « bêta », titre fenêtre
« … — bêta ». Détail version conservé dans À propos.

tests/unit/test_gui_v6_profiles.py + ajouts shell. 237 tests unit OK
(228 → 237, 0 régression), self-test GUI V6 OK, navigation des 5 sous-onglets
+ thème OK. V5/moteur/app_aivanov/profile_defaults non touchés, 0 dépendance.
Aucun build/push sans GO Dom — validation visuelle Dom attendue.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-15 17:02:54 +02:00
parent 6a0a5811a5
commit a9e8b2c2e6
8 changed files with 597 additions and 12 deletions

View File

@@ -45,7 +45,7 @@ class AnonymisationApp(ctk.CTk):
self._tab_frames: dict = {}
self._visible_tab = None
self.title("Pseudonymisation de vos documents")
self.title("Pseudonymisation de vos documents — bêta")
self.geometry("820x880")
self.minsize(720, 680)
self._render()
@@ -87,9 +87,19 @@ class AnonymisationApp(ctk.CTk):
def _build_header(self, p: dict) -> None:
header = ctk.CTkFrame(self, fg_color=p["card"], corner_radius=0)
header.pack(fill="x")
identity = ctk.CTkFrame(header, fg_color="transparent")
identity.pack(side="left", padx=16, pady=10)
ctk.CTkLabel(
header, text="🛡️ aivanonym", text_color=p["text"], font=ui_kit.font(18, "bold")
).pack(side="left", padx=16, pady=10)
identity, text="🛡️ aivanonym", text_color=p["text"], font=ui_kit.font(18, "bold")
).pack(side="left")
ctk.CTkLabel(
identity,
text="bêta",
text_color="#ffffff",
fg_color=p["primary"],
corner_radius=8,
font=ui_kit.font(10, "bold"),
).pack(side="left", padx=(8, 0), ipadx=6, ipady=1)
status = self._safe_local_status()
ctk.CTkLabel(