Décision Dom 2026-06-29 (honnêteté UI) :
- « Téléphones / e-mails » → « Téléphones » : EMAIL reste toujours masqué (non-toggleable),
le label ne le promet plus.
- hint « Adresses / CP » : « Voie, ville, code » → « Voie + code postal » : VILLE reste
toujours masquée (décision 1b), le hint ne la promet plus.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Suite à la migration OCR docTR→OnnxTR (8d683bc) et au verdict pré-audit Qwen
(GO technique, 2026-06-21), préparation des 3 specs PyInstaller pour le prochain
rebuild Windows :
- Retrait de "torch", "torchvision", "doctr.*" des hiddenimports des 3 specs
(anonymisation_onefile, _cli_onefile, _gui_v6_onefile) → -~2 Go EXE attendu,
suppression définitive de la classe de bug oneDNN sur CPU contraint.
- Ajout des hiddenimports transitifs OnnxTR manquants (réserve R1 Qwen) :
"pyclipper", "scipy.cluster.hierarchy", "scipy.special" → anti-omission
PyInstaller (évite un crash OCR en frozen).
- Retrait de python-doctr[torch]>=0.9.0 de requirements.txt (transitoire levé).
_configure_torch_threads() conservé en code (lazy import torch sous try/except,
no-op si torch absent) pour future réactivation EDS-Pseudo/GLiNER.
Aucun rebuild ni diffusion (gate Dom). 3 specs compilent (py_compile).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Recalibre la section sécurité au modèle de menace réel : portail sans
donnée patient (licences + compteurs agrégés) → HTTPS + login/mot de
passe fort suffisent. Retire la recommandation VPN/IP allowlist (overkill).
CSRF déjà couvert par SameSite=Lax ; rate-limiting /login = nice-to-have
au proxy. https_only désormais implémenté (app_aivanov 884661a).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Ajoute un conteneur scrollable dedie au sous-onglet Profils pour permettre le defilement souris du formulaire complet. Tests GUI: test_gui_v6_profiles.py et test_gui_v6_*.py.
Force input_ids et attention_mask en int64 avant inference CamemBERT ONNX, pour eviter les erreurs de dtype selon les tokenizers/environnements Windows. Test cible: test_camembert_manager_cache.py.
Passe theme clair, libelles utilisateur, aides conteneurs, recherche de mise a jour et indication honnete des moteurs optionnels non embarques. Tests GUI unitaires: 126 passed.
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.
Condition du GO-CONDITIONNEL Qwen sur le lot engine capabilities
(cb3b767/890edb3/5e5f0bd) : un profil YAML forçant enable_eds/enable_gliner
ne doit pas déclencher un chargement voué à l'échec silencieux.
NerManagers.ensure_loaded() applique désormais un garde-fou via la sonde
engine_capabilities.capabilities_map() (injectable) AVANT toute tentative
de load EDS/GLiNER : si le moteur optionnel demandé est indisponible dans
le build courant → warning + désactivation forcée dans les réglages runtime.
Best-effort (sonde en échec ⇒ réglages inchangés, les try/except de load
protègent déjà). Sonde légère (find_spec), aucun import lourd.
CamemBERT (requis) inchangé. Diff limité au garde-fou + tests cibles.
TDD : 4 tests (test_gui_v6_engine_bridge.py) — eds/gliner indispo désactivés
et jamais chargés, moteur dispo conservé, fail-safe sonde. 282 unit passed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Axe application GUI (utilisateur final) : cohérence UI/moteurs propre au build
GUI, sans présumer du build CLI. EDS-Pseudo / GLiNER désactivés (switch disabled
+ « non embarqué dans cette version ») et `enable_eds/gliner` forcés à False quand
indisponibles ; CamemBERT-bio reste le moteur standard actif. Note Moteurs des
Profils rendue honnête. `_mini_toggle` gère `disabled`/`disabled_hint` + `.switch`.
2 tests GUI (toggles désactivés si indispo + état forcé False ; actifs si dispo).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Axe CLI (intégration dans d'autres programmes) : contrat stable, codes retour
fiables. `--engines` liste les moteurs réellement disponibles dans CET
exécutable CLI (`[OUI]/[NON] Label (requis/optionnel) — raison`) et sort 0, sans
traiter. `input` devient optionnel pour ce mode (sinon code 2).
Le fail-closed CamemBERT (code 3) et le best-effort EDS/GLiNER (jamais déclarés
actifs si le chargement échoue) restent inchangés. Ne présume pas du build GUI.
2 tests (--engines → code 0 + moteurs listés ; absence d'input → code 2).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Utilitaire neutre (ni CLI ni GUI) qui dit la vérité sur les moteurs réellement
disponibles dans le build COURANT (la sonde reflète l'exécutable qui tourne, sans
présumer d'un autre build). Consommé séparément par chaque axe produit.
- `EngineCapability(key, label, available, required, reason)`.
- Sondes légères `importlib.util.find_spec` (pas d'import lourd au démarrage) +
présence du modèle ONNX pour CamemBERT (gère _MEIPASS en frozen).
- camembert=requis ; eds (edsnlp+spacy) / gliner=optionnels. Sondes injectables,
fail-closed. `capabilities_map()` / `available_engines()`.
6 tests (sondes injectables dispo/indispo, required, reasons, sondes réelles).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Retour Dom : « les règles du profil doivent être dans le menu profil, pas à
part ! ». Même logique que le Masquage — les règles qui influencent
l'anonymisation appartiennent au profil ; un sous-onglet séparé crée la
même confusion.
- Retrait du sous-onglet « Administration > Règles » (_SUBTABS, builder,
méthode _build_regles supprimée). Sous-onglets restants : Réglages /
Profils / Partage.
- Section « Profils > Règles du profil » enrichie : wording clair (règles
d'anonymisation portées par le profil), aperçu illustratif de la table
des règles (réutilise _rule_row + _HELP_REGLES), édition fine annoncée
« à venir ».
- Abandon du « Testeur de règle » (écran outil global) pour ne pas
réintroduire un second réglage métier.
Cible UX : Réglages / Profils (Général・Masquage・Mots・Moteurs・Règles du
profil) / Partage. Test obsolète test_rules_subtab_has_no_unexplained_2
remplacé par test_no_separate_rules_subtab.
262 tests unit OK (0 régression), self-test OK, nav 3 sous-onglets + section
Règles dans Profils + thème OK. Préserve d8bc0cd + GO Qwen. Aucun build/push
sans GO Dom.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>