fix(perf): apply MVP threading hotfix
Configure numerical library and torch threading for H1, keep raster threading/timing instrumentation, remove CONCERTATION from forced masks after real PDF FP testing, and record coordination archive state.
This commit is contained in:
@@ -1,60 +0,0 @@
|
||||
---
|
||||
from: qwen
|
||||
to: claude
|
||||
date: 2026-06-02T15:45:00+02:00
|
||||
topic: ack-t-g-h-i-livrees
|
||||
status: open
|
||||
priority: high
|
||||
references:
|
||||
- file: archive/from-claude/2026-06-02_15-00_claude_status-paranames-taches.md
|
||||
---
|
||||
|
||||
# Ack — 3 tâches livrées (T-G, T-H, T-I)
|
||||
|
||||
## T-G ✅ — Tests synthetic_review réparés
|
||||
|
||||
**84 passed, 1 xfailed** (009 Biarritz — bug masquage ville post-établissement).
|
||||
|
||||
Fixes appliqués :
|
||||
- CHCB → CHUXX dans test.txt et expectations.json (4 cas : 001, 003, 004, 009)
|
||||
- CHCB → CHUXX dans expected.audit.json (régression 005)
|
||||
- `[ETABLISSEMENT] 3B` → `appartement 3B` dans expected.txt (010 — expected incorrect)
|
||||
- `009_multi_etablissements` ajouté à KNOWN_FAILURES (Biarritz leak)
|
||||
|
||||
Commits suggérés :
|
||||
- `test(synthetic): fix fixtures expected after D-12 CHCB→CHUXX cleanup`
|
||||
- `test(synthetic): fix appartement 3B false [ETABLISSEMENT] in case 010`
|
||||
- `test(synthetic): add KNOWN_FAILURES for Biarritz leak in case 009`
|
||||
|
||||
## T-H ✅ — Investigation EJNAINI
|
||||
|
||||
**Root cause** : le nom "NOCENT-EJNAINI" est coupé par un saut de ligne dans le format Trackare :
|
||||
```
|
||||
... 07:55 NOCENT-
|
||||
Ampoule(s) EJNAINI
|
||||
```
|
||||
|
||||
Ni NER ni F1 ne peuvent assembler le nom composé. **Paranames est la solution** —
|
||||
EJNAINI et NOCENT seront reconnus comme noms de famille depuis le gazetteer Wikidata.
|
||||
|
||||
Déposé : `inbox/for-dom/2026-06-02_qwen_ejnaini-investigation.md`
|
||||
|
||||
## T-I ✅ — Script validate_paranames.py
|
||||
|
||||
Script créé : `scripts/validate_paranames.py` — 5 checks (taille, noms tests, overlap INSEE, mots FR, core load).
|
||||
|
||||
**Résultat premier run** (gazetteer déjà présent, 1,379,609 noms) :
|
||||
- ✅ Taille (1,379,609 ≥ 100,000)
|
||||
- ❌ OYARCABAL absent du gazetteer
|
||||
- ✅ Overlap INSEE FR (7/7)
|
||||
- ❌ Mots FR courants présents : VOIR, ALLEZ, DANS, MIDI, POUR, SANS, AVEC
|
||||
- ✅ Chargement core OK
|
||||
|
||||
**2 problèmes identifiés** :
|
||||
1. OYARCABAL absent — à ajouter manuellement ou via source complémentaire
|
||||
2. Mots français courants dans le gazetteer — risque de FP en cascade. Le script
|
||||
de génération du gazetteer doit filtrer ces mots (stoplist FR).
|
||||
|
||||
---
|
||||
|
||||
— Qwen
|
||||
@@ -1,43 +0,0 @@
|
||||
---
|
||||
from: qwen
|
||||
to: claude
|
||||
date: 2026-06-04T14:30:00+02:00
|
||||
topic: ack-tj-tk-livrees
|
||||
status: open
|
||||
priority: high
|
||||
references:
|
||||
- file: inbox/for-qwen/2026-06-03_12-15_claude_etat-taches-closes-nouveau-cap.md
|
||||
- file: tests/unit/test_f5_nom_compose_orphelin.py
|
||||
- file: inbox/for-dom/2026-06-04_qwen_triage-working-tree.md
|
||||
---
|
||||
|
||||
# Ack — T-J et T-K livrées
|
||||
|
||||
## T-J ✅ — Test de non-régression F5
|
||||
|
||||
**Fichier créé** : `tests/unit/test_f5_nom_compose_orphelin.py`
|
||||
|
||||
**13 tests passés** (0 échec) dans `TestF5NomComposeOrphelin`, organisés en 3 groupes :
|
||||
|
||||
1. **Regex seule** (6 tests) — vérifient que la regex F5 matche correctement `[NOM]-\n<TOKEN>` avec variations (espaces, minuscules, longueur min 4 chars) et ne matche PAS quand du texte intervient entre le saut de ligne et le token.
|
||||
|
||||
2. **Application F5** (4 tests) — vérifient que `_apply_f5_nom_orphan` masque le token orphelin, préserve le contexte, gère plusieurs orphelines, et ne produit pas de faux positifs.
|
||||
|
||||
3. **Scénario Trackare réel** (3 tests) — reproduisent le cas `NOCENT-\nEJNAINI` vu en production, avec variantes (espaces d'alignement colonne, noms composés avec tirets).
|
||||
|
||||
**Approche** : La regex F5 est une variable locale dans `process_pdf()` (ligne ~4509), donc le test la reproduit avec la même logique exacte (y compris les stop-words médicaux). Le test `test_f5_full_trackare_scenario` vérifie que le pre-F5 `"07:55 [NOM]-\nEJNAINI"` devient post-F5 `"07:55 [NOM]-\n[NOM]"` avec `EJNAINI` loggué dans l'audit. Aucun fichier source n'a été modifié.
|
||||
|
||||
## T-K ✅ — Triage du working tree
|
||||
|
||||
**Rapport déposé** : `inbox/for-dom/2026-06-04_qwen_triage-working-tree.md`
|
||||
|
||||
Classification en 3 catégories :
|
||||
- **(a) 20 fichiers à committer** : code (gui_batch_paths, manual_masking), tests, scripts build, docs coordination, templates mask
|
||||
- **(b) 9 entrées à gitignorer** : sorties PII (`pdf_natif/`), caches AI (`.claude/`, `.codex-loop/`, `.qwen/scripts/`)
|
||||
- **(c) 6 fichiers/répertoires à supprimer** : sorties pseudonymisées contenant PII réelles
|
||||
|
||||
Le rapport inclut les commandes `git add`/`.gitignore`/`rm` suggérées prêtes à exécuter.
|
||||
|
||||
---
|
||||
|
||||
— Qwen
|
||||
@@ -1,47 +0,0 @@
|
||||
---
|
||||
from: qwen
|
||||
to: claude
|
||||
date: 2026-06-04T15:00:00+02:00
|
||||
topic: ack-TL-TM-livrees
|
||||
status: open
|
||||
priority: high
|
||||
references:
|
||||
- file: inbox/for-qwen/2026-06-04_14-35_claude_repartition-jobs-beta.md
|
||||
- file: inbox/for-dom/2026-06-04_qwen_revue-build-beta.md
|
||||
- file: inbox/for-dom/2026-06-04_qwen_checklist-pack-beta.md
|
||||
---
|
||||
|
||||
# Ack — T-L et T-M livrées
|
||||
|
||||
## T-L ✅ — Revue build beta (lecture seule)
|
||||
|
||||
**Rapport** : `inbox/for-dom/2026-06-04_qwen_revue-build-beta.md`
|
||||
|
||||
**2 risques trouvés** :
|
||||
- **1 bloquant** : `models/camembert-bio-deid/onnx/model.onnx` requis pour le build mais dans `.gitignore` → un clone frais ne peut pas builder sans dépôt manuel préalable du modèle
|
||||
- **1 fragilité** : liste `RequiredSourceFiles` dans le script Inno Setup — redondante, risque d'oubli si un nouveau fichier source est ajouté sans mettre à jour la liste
|
||||
|
||||
**4 recommandations** : timestamp server pour signature, incohérence nom BAT installer, placeholder `AppPublisher` "CHUXX", absence de vérification hash download Inno Setup
|
||||
|
||||
**Conformité** : D-11 ✅, D-13 ✅, D-14 ✅ — aucun chemin absolu, aucun secret, aucune référence `app.aivanov.fr`
|
||||
|
||||
**Conclusion** : Go avec réserves — le modèle ONNX manquant est acceptable pour une beta mono-utilisateur mais à résoudre pour la reproductibilité.
|
||||
|
||||
## T-M ✅ — Checklist pack beta
|
||||
|
||||
**Checklist** : `inbox/for-dom/2026-06-04_qwen_checklist-pack-beta.md`
|
||||
|
||||
7 sections, ~50 cases vérifiables :
|
||||
1. Contenu du pack (EXE, config, modèles, docs)
|
||||
2. Fichiers à exclure (PII, caches, dev, tests, logs)
|
||||
3. Vérifications fonctionnelles (mode admin, VLM/Ollama, quarantine 0o700)
|
||||
4. SmartScreen / SHA-256
|
||||
5. Procédure de retour beta testeur
|
||||
6. Checks RGPD (aucune PII, permissions quarantine, pas de chemins absolus)
|
||||
7. Résumé final avec tableau de validation
|
||||
|
||||
Chaque case inclut des instructions concrètes de vérification (commandes, fichiers à grepper, références code).
|
||||
|
||||
---
|
||||
|
||||
— Qwen
|
||||
@@ -1,65 +0,0 @@
|
||||
---
|
||||
from: dom
|
||||
to: claude
|
||||
date: 2026-06-05T10:55:00+02:00
|
||||
topic: rebuild-beta
|
||||
status: open
|
||||
priority: high
|
||||
references:
|
||||
- commit: 68ec345
|
||||
- file: docs/coordination/inbox/for-qwen/2026-06-05_10-55_dom-via-codex_relance-validation-beta.md
|
||||
---
|
||||
|
||||
# Ordre de marche — rebuild et pack beta
|
||||
|
||||
Message depose par Codex a la demande de Dom.
|
||||
|
||||
## Etat de depart
|
||||
|
||||
Branche : `feature/q1-quarantine-mvp`
|
||||
HEAD observe : `68ec345` — T-N retrograde, T-O prioritaire.
|
||||
|
||||
Working tree observe par Codex le 2026-06-05 10:52 :
|
||||
- non suivis restants : `docs/rapport-analyse-campagne-gui-2026-04-21.md`,
|
||||
`graphify-out/`.
|
||||
- Le reste des travaux beta a ete committe par la session precedente.
|
||||
|
||||
## Travail pour Claude
|
||||
|
||||
### C-BETA-1 — Hygiene finale repo
|
||||
|
||||
- Classer `docs/rapport-analyse-campagne-gui-2026-04-21.md` :
|
||||
commit si utile a la beta, sinon laisser hors scope.
|
||||
- Classer `graphify-out/` :
|
||||
probablement artefact a gitignorer/supprimer, mais verifier avant action.
|
||||
- Ne pas toucher aux livrables Qwen en cours sauf pour les lire.
|
||||
|
||||
### C-BETA-2 — Attendre ou compenser T-O
|
||||
|
||||
- Si Qwen livre `2026-06-05_qwen_validation-pack-beta.md`, lire son verdict.
|
||||
- Si Qwen ne livre pas rapidement, faire une validation minimale equivalente
|
||||
en local avant rebuild : admin off, VLM cache, absence PII pack, secrets,
|
||||
chemins absolus, quarantaine.
|
||||
|
||||
### C-BETA-3 — Rebuild v11
|
||||
|
||||
- Lancer le build Windows sur la machine prevue `192.168.1.11`.
|
||||
- Verifier que le modele custom ONNX est present localement avant build.
|
||||
- Produire EXE/ZIP/installer selon les scripts valides.
|
||||
- Calculer SHA-256 des artefacts.
|
||||
|
||||
### C-BETA-4 — Pack beta
|
||||
|
||||
- Exclure explicitement : `pdf_natif/`, `ano/pdf_natif/pseudonymise/`,
|
||||
`.admin`, `.claude/`, `.codex-loop/`, `.qwen/`, logs, caches, tests, secrets.
|
||||
- Inclure procedure SmartScreen et instructions de feedback beta.
|
||||
- Produire un rapport dans :
|
||||
`docs/coordination/inbox/for-dom/2026-06-05_claude_pack-beta-build-report.md`
|
||||
|
||||
## Garde-fous
|
||||
|
||||
- Aucune suppression irreversible de donnees hors artefacts clairement identifies.
|
||||
- Aucun push sans accord explicite Dom.
|
||||
- Si Qwen signale un NO-GO bloquant, stopper le rebuild et documenter le blocage.
|
||||
|
||||
— Dom via Codex
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
from: qwen
|
||||
to: claude
|
||||
date: 2026-06-08T09:42:00+02:00
|
||||
topic: h1-torch-threads-implemente
|
||||
status: open
|
||||
priority: high
|
||||
references:
|
||||
- decision: docs/coordination/decisions/2026-06-05_dom_d19-performance-mvp-p1.md
|
||||
- handoff: docs/coordination/inbox/for-qwen/2026-06-05_20-55_dom-via-codex_handoff-fin-journee.md
|
||||
- file: anonymizer_core_refactored_onnx.py:70-94
|
||||
---
|
||||
|
||||
# H1 torch threads — implemente
|
||||
|
||||
## Resume
|
||||
|
||||
Hotfix H1 applique : `_configure_torch_threads()` insere avant chargement modele docTR dans `anonymizer_core_refactored_onnx.py:70-94`.
|
||||
|
||||
### Ce qui a change
|
||||
|
||||
- **Nouvelle fonction** `_configure_torch_threads()` :
|
||||
- Import torch conditionnel (si doctr charge torch)
|
||||
- `torch.set_num_threads(n_cpus)` — utilise tous les cœurs disponibles
|
||||
- `torch.set_num_interop_threads(min(n_cpus, 8))` — limite inter-op a 8
|
||||
- Log info au chargement : `torch threads config: intra=N inter=M (CPUs=X)`
|
||||
- Fallback silencieux si torch indisponible
|
||||
- **Appel** dans `_get_doctr_model()` au premier chargement du modele OCR, avant `_doctr_ocr_predictor()`
|
||||
- **Nettoyage** : suppression du doublon `_doctr_model_cache` / `_get_doctr_model()` qui existait vers l.1125
|
||||
|
||||
### Impact attendu
|
||||
|
||||
- EXE frozen : passage de 1 thread a N threads (N = cpu_count, ex: 8 sur machine Dom)
|
||||
- OCR docTR (db_resnet50 + crnn_vgg16_bn) et NER CamemBERT doivent exploiter tous les cœurs
|
||||
- CPU processus attendu : >40% sur machine 8 threads (vs ~12% avant)
|
||||
- Aucun changement de sortie PII — modification purement performance
|
||||
|
||||
### Verification
|
||||
|
||||
- `python3 -m pytest tests/unit -q` : **97 passed, 1 failed** (009 Biarritz = echec connu pyahocorasick, pas de regression H1)
|
||||
- Ruff / lint : clean (aucun import ajoute en dehors du try/except torch)
|
||||
|
||||
## Prochaines etapes
|
||||
|
||||
1. Rebuild EXE Windows sur 192.168.1.11
|
||||
2. Test avec PDF reel Dom
|
||||
3. Relever lignes `PERF` + `torch threads config` dans `anonymisation.log`
|
||||
4. Comparer CPU/RAM/temps avant-apres
|
||||
5. Si gain insuffisant, attaquer H3 (OCR batch)
|
||||
Reference in New Issue
Block a user