d324ada310
test(core): verrouiller le fallback edsnlp sur drugs.json corrompu (revue qualité)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-03 09:42:15 +02:00
6a992d87de
fix(core): charger gazetteer médicaments edsnlp depuis data/ (torch-free) + log si absent
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-03 09:36:08 +02:00
b196d00813
docs(build): réserves revue Qwen Plan 3 — MAJ app gelée (D8), précondition tray, note RGPD identifiants indirects
2026-07-03 09:20:53 +02:00
5dbad699bc
test(beta): référence détections sur 6 documents réels avant build torch-free (Plan 3)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-02 18:18:42 +02:00
7dba4014c4
docs(build): torch-free + précache OnnxTR + version unifiée + runbook URL portail (P0-4/P1-8)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-02 18:13:01 +02:00
2c48d95c1f
build(installer): AppMutex + CloseApplications pour MAJ en place (D8)
...
Synchronise l'installeur GUI avec gui_v6/single_instance.py:APP_MUTEX_NAME
afin que Inno Setup ferme l'application avant de remplacer l'EXE lors d'une
mise à jour en place (AppId fixe). Test anti-dérive dynamique inclus.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-02 18:10:20 +02:00
f9b6f21923
build: purge torch venv GUI V6 + précache OnnxTR + version release unifiée (P0-3/P0-4/P1-7)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-02 11:25:47 +02:00
e4bc9166be
test(build): échec bruyant si bloc hiddenimports introuvable (revue Task 2)
...
- _hiddenimport_strings assert désormais si le bloc hiddenimports=[...] est
absent (renommage/refonte de spec) au lieu de retourner [] silencieusement,
ce qui faisait passer le test à vide.
- Docstring corrigée : la regex s'arrête au PREMIER `]` où qu'il soit (pas
« ligne seule ») — limitation réelle documentée.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-02 11:23:51 +02:00
65c97a39b3
build: specs GUI V6 + CLI torch-free — retrait optimum, excludes explicites (P0-3)
...
Suppression des 5 hiddenimports optimum* dans les deux specs V6/CLI.
Ajout de EXCLUDED_TORCH_STACK + excludes=EXCLUDED_TORCH_STACK dans Analysis()
pour éviter que PyInstaller embarque torch (~+2 Go) via optimum à l'analyse
statique. Spec GUI V5 legacy inchangée (garde optimum légitimement).
Test anti-dérive ajouté (5 cas). Correctif import pytest inutilisé (version.py).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-02 11:11:07 +02:00
5f05ba0fb8
feat(build): version release résolue au build avec repli dev (P1-7)
...
Crée gui_v6/version.py (DEFAULT_VERSION + resolve_version()) qui tente
d'importer gui_v6._build_version (généré au build Windows, non commité).
Câble gui_v6.__version__ sur resolve_version(). Ajoute gui_v6/_build_version.py
au .gitignore et aux hiddenimports du spec PyInstaller. 4 tests TDD.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-02 11:02:57 +02:00
8f9107a27f
feat(gui): câblage upload diagnostics en fin de run (E3)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-30 10:44:02 +02:00
8eb8cf9999
feat(gui): client diagnostics non bloquant + spool best-effort (E3)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-30 10:39:25 +02:00
4b7a31b9df
feat(gui): module diagnostics — payload liste-blanche RGPD (E2)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-30 10:36:16 +02:00
4412512d4b
test(gui): vérifier chaque branche de classify_error_code + anti-dérive (E2)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-30 10:34:11 +02:00
952a1c6ca0
feat(gui): DocResult porte type+catégorie d'erreur RGPD-safe (E2)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-30 10:28:42 +02:00
675e328d8c
docs(plan): Plan 1c honnêteté UI (P1-4/NER/P1-5/P1-3/P1-1/P1-6/P1-11)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-29 19:42:16 +02:00
4813f9439e
fix(core): corriger la provenance OCR de l'audit (docTR → OnnxTR, P1-11)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-29 19:36:58 +02:00
ee1f86d55e
feat(gui): échec amont clair si dossier de sortie non inscriptible (P1-6)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-29 19:33:16 +02:00
3a981eb15a
feat(gui): dropzone cliquable + libellé honnête (P1-1, DnD natif différé)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-29 19:29:12 +02:00
d3189d5bb7
feat(gui): recâbler import/export de configuration par email (P1-3)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-29 19:27:33 +02:00
1d65d42430
feat(gui): localiser les documents livrés + bouton ouvrir le dossier (P1-5)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-29 19:15:28 +02:00
416b347d7f
feat(gui): confirmation explicite avant anonymisation regex-only (NER off)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-29 19:07:38 +02:00
880a75873d
feat(gui): charger le dictionnaires.yml externe éditable en frozen (P1-4)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-29 19:00:49 +02:00
c1c3565a0b
feat(gui): labels honnêtes — toggle « Téléphones » (e-mails non-toggleables) + hint Adresses sans ville (1c)
...
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 >
2026-06-29 10:42:58 +02:00
4357a58d7d
fix(core): exempter les hits forcés (overrides) du filtre catégorie — anti-fuite PDF (P1-2/T1)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-27 11:38:19 +02:00
5663966938
docs(coord): verdict Qwen GO — re-revue post-impl Tasks 1-4 gating catégories
...
§FAX: aucun autre type non-toggleable dépend d'une passe gatée.
§Divergence: accord seuil 0 strict + premask scopé (retire suggestion adaptatif).
§Task 3b: report acceptable pour beta (fail-closed).
1 trouble mineur T1: override user-defined nommé avec catégorie toggleable.
2026-06-27 11:27:24 +02:00
bf832e12f0
feat(gui): câbler les 7 toggles catégories au moteur (P1-2)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-26 11:33:13 +02:00
daec1f53bd
feat(core): garde-fou adresse burn + doc chemins conservateurs (P1-2/F-3)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-26 11:13:42 +02:00
a02bca516d
feat(core): gates texte par catégorie sur toutes les passes (P1-2/F-2/F-5)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-26 11:03:04 +02:00
dd392c4a50
docs(beta): plan 1b — Task 2 seuil résiduel strict 0 + premask scopé TEL (revue qualité) + Task 3 span-aware
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-26 10:23:40 +02:00
2a3aab117d
feat(core): coordination quarantaine résiduelle NIR/TEL décochés (P1-2/F-4)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-26 10:21:27 +02:00
b15d0da141
feat(core): _category_of dérivé (anti-dérive) + filtre audit Tier 1 (P1-2/F-1)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-26 10:04:03 +02:00
c93dc34a70
docs(beta): plan 1b — décision Dom CODE_POSTAL suit le toggle Adresses (catégorie ADRESSE)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-26 09:50:07 +02:00
c77082409d
docs(beta): plan 1b v3 — re-revue Qwen GO (boucle adversariale 2/2) + 3 correctifs
...
Re-revue Qwen de l'approche dérivation = GO (dérivation jugée supérieure à la table
figée). Vérif exhaustive maps : 7 VLM + 7 EDS + 8 regex + _GLOBAL dynamique = 22+ kinds
couverts. Mon reverse-map VLM + fallback EDS confirmés sûrs (pas de fuite croisée).
3 correctifs intégrés : (A) site manquant RE_TRACKARE_IAO_MULTILINE_VALUE l.3102 (NOM
Trackare) → Task 3 ; (B) doc convention admin_rules (kind=clé placeholder, branche 3) ;
(C) seuil quarantaine adaptatif 0→1 si catégories décochées (anti fragment TEL). Caveat
UX CP documenté. Convergence Claude+Qwen. Exécution = GO Dom après relecture.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-25 23:02:44 +02:00
c7c3a86910
docs(coord): re-revue Qwen Plan 1b v2 — GO dérivation + 3 corrections mineures
...
A: RE_TRACKARE_IAO_MULTILINE_VALUE site manquant Task 3,
B: documenter convention admin_rules kind=placeholder,
C: suggestion seuil adaptatif quarantaine
2026-06-25 23:00:56 +02:00
ade1743bee
docs(coord): verdict Qwen GO-AVEC-RÉSERVES — revue adversariale Plan 1b gating catégories
...
5 findings: F-1 CRITIQUE (_CATEGORY_OF manque 15 kinds VLM/EDS/_GLOBAL),
F-2 HAUT (24+ sites texte manquants), F-3 HAUT (Tier 1 OK, 3 gaps PDF),
F-4 HAUT (quarantaine NIR/TEL décochés), F-5 MODÉRÉ (fuite croisée NER)
2026-06-25 22:46:44 +02:00
fa575d5f61
docs(beta): plan 1b v2 — intègre revue Qwen + vérif Claude (gating cœur P1-2)
...
Revue adversariale Qwen = GO-avec-réserves (F-1 critique : 15 kinds manquants VLM/EDS/
_GLOBAL ; F-2 24+ sites ; F-3 burn ; F-4 quarantaine NIR/TEL ; F-5 NER intra-boucle).
Vérif indépendante Claude : table Qwen elle-même incomplète (VLM_CP raté). Décision :
_category_of DÉRIVÉ de VLM_CATEGORY_MAP + EDS_LABEL_MAP + suffixe _GLOBAL + test
anti-dérive, au lieu d'une table figée. Sites consolidés, coordination quarantaine,
gating NER intra-boucle, garde-fous burn. Sauvegarde avant implémentation (consigne Dom).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-25 22:45:38 +02:00
9ad7833d21
docs(beta): plan 1b — câblage des 7 toggles catégories au moteur (P1-2)
...
Plan TDD du gating par catégorie : infra disabled_kinds + _CATEGORY_OF (default-deny)
+ filtre audit Tier 1 (porteur de sûreté PDF), relaxation rescan résiduel NIR/TEL,
gates texte Tier 2/3 (dispatchers + selective_rescan + NER + phase-0), garde-fou
adresse burn, câblage GUI 7 booléens. Tests comportementaux par catégorie + baseline
non-régression. CODE SÉCURITÉ — revue Qwen obligatoire.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-25 22:25:01 +02:00
2aa5a43261
harden(gui): centraliser fail-close repli + garde-fou logging + doc mutex (revue finale Plan 1a)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-25 18:09:52 +02:00
6476fe9f98
feat(gui): instance unique + mutex partagé installeur (P0-7)
...
Protection multi-instance GUI V6 : mutex kernel nommé sur Windows (partagé
avec l'installeur Inno via AppMutex), fcntl exclusif sur POSIX (dev/test).
3 tests unitaires, self-test OK, 0 régression gui_v6 (145 passed).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-25 18:01:28 +02:00
d4891f5cfd
fix(gui): flag legacy ONNX + log fichier dès l'entrée frozen (P0-5/E1)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-25 17:58:05 +02:00
9296c28bed
feat(gui): log fichier rotatif V6 à chemin connu (E1)
2026-06-25 17:56:50 +02:00
9e87cb3122
feat(gui): binding licence-poste souple (P0-6/D-20.4, affichage sans blocage)
2026-06-25 17:52:07 +02:00
dc0554e694
fix(gui): fail-close si CamemBERT-bio indisponible (P0-1, anti-fuite PII)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-25 17:46:50 +02:00
f3e6cdb980
fix(gui): connecter la GUI V6 au portail prod (P0-2, plus localhost)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-25 17:40:33 +02:00
55e8839613
docs(beta): plan d'implémentation 1a — socle sûreté & chaîne prod GUI V6
...
Plan bite-sized TDD pour les chantiers A/B/E1 : fail-close PII (P0-1), URL portail
(P0-2), binding licence souple (P0-6), log fichier V6 (E1), flag frozen ONNX (P0-5),
instance unique + mutex installeur (P0-7). 6 tâches, code complet, tests unitaires.
Plans 1b (gating cœur), 1c (UI), 2 (diagnostics), 3 (build/release) à suivre.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-25 16:49:01 +02:00
6554a6d590
docs(beta): audit prêt-bêta GUI V6 + design de mise en prod bêta testeur
...
Audit prêt-pour-bêta de GUI V6 (3 axes : parcours/UX/PII, moteurs/OnnxTR/frozen,
licence/télémétrie/diffusion) → punch-list P0=7 / P1=11 / P2=6, findings vérifiés.
Design validé Dom : périmètre « A + chaîne prod », P0 + P1 honnêteté UI, toggles
« Données à détecter » câblés au moteur (gating par type + couplage rescan, pas de
plancher dur), licence souple + binding poste (D-20.4), −2 Go via excludes PyInstaller,
Linux-first TDD + un seul build Windows. Plus 3 exigences prod intégrées : diagnostics
logs auto-upload scrubbé (liste-blanche), mise à jour propre (installeur), modèles
embarqués hors-ligne. 6 chantiers (A-F), 2 repos. Diffusion = gate Dom.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-25 16:43:04 +02:00
4b7c8db9a8
build: retirer torch/docTR du frozen + hiddenimports OnnxTR (pré-audit Qwen GO)
...
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 >
2026-06-22 16:49:03 +02:00
8d683bc6d8
feat(ocr): migrer l'OCR de docTR (PyTorch) vers OnnxTR (ONNX Runtime)
...
OnnxTR exécute les MÊMES modèles que docTR (db_resnet50 + crnn_vgg16_bn) sur
ONNX Runtime, sans PyTorch. Corrige le crash torch/oneDNN « could not create a
primitive » sur CPU contraint (VM 2 cœurs collaborateur : OCR scan impossible →
quarantaine). Qualité identique validée empiriquement (CER 0,10-0,23 % vs docTR,
2 validations indépendantes Claude+Qwen), OCR ~2-3× plus rapide CPU.
- core : import OnnxTR, _get_ocr_model(), _OCR_AVAILABLE, boucle OCR inchangée
(API miroir) ; ONNXTR_CACHE_DIR pour le frozen ; bandeau de logs ENV au démarrage
(OS, CPU+AVX, cœurs, RAM, versions, providers) pour retours terrain auto-suffisants.
- 3 .spec : embarquent les poids ONNX OnnxTR (fail-closed) + hiddenimports onnxtr.
- requirements : onnxtr[cpu] (python-doctr conservé transitoirement).
- inclut le correctif quarantaine-visible du runner (GO Qwen).
Tests : test_ocr_onnxtr.py (RED→GREEN), 95 unit passed, e2e scan client OK
(OCR 5/5, PDF produit, plus de crash). Retrait torch du frozen + rebuild Windows
= étapes suivantes (gates Dom).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-19 17:07:00 +02:00
80d8cc230b
docs(coord): rapport transfert artefacts 19c4934 vers portail (SHA vérifiés)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-18 18:06:17 +02:00