12 KiB
Handoff session 2026-05-06 — démo GHT Sud 95 (J-2)
Auteur : Claude (session précédente, contexte saturé)
Pour : Claude (nouvelle session)
Démo : dans ~2 jours, pour DSI Carvella + DIM/TIM/DG GHT Sud 95
Branche git : feature/feedback-bus
🎯 Objectif de la nouvelle session
Finir la prep démo : terminer corrections data.js + structurer onglet Imagerie + accompagner Dom sur l'enregistrement workflow Urgence_unit + tests E2E.
📊 État actuel — ce qui est FAIT
Code & infrastructure
- ✅ Maquette aiva-vision déployée :
https://urgence.labs.laurinebazin.design/codage.html?id=XXX+ service systemdrpa-mockup-easily(Flask, port 8765) - ✅ Backend
/api/analysebranché surcore.llm.t2a_decision.analyze_dpi(qwen2.5:7b par défaut) - ✅ Maquette codage.html refondue avec layout aiva-vision 2 colonnes + auto-trigger paste
- ✅ 5e onglet "Imagerie" ajouté côté UI (HTML + JS) — mais
data.jspas encore alimenté (sauf le champ vide qui est traité comme "Aucun examen") - ✅ Pipeline Léa orchestrateur dans
agent_chat/urgences_orchestrator.py(NLP gemma3:1b + thread + boucle + synthèse) — fonctionne en bout-en-bout, validé matin du 2026-05-05 - ✅
extract_tablebackend danscore/llm/ocr_extractor.py+agent_v0/server_v1/replay_engine.py(regex IPP^25\d{6}$) — testé OK 11/11 sur capture liste patients - ✅ Préchargement EasyOCR au boot du streaming server (3.8s, log confirmé) — fini le cold start qui bloquait 2 min
- ✅ Templating
{{patient_id}}surby_textdans replay_engine + variables runtime initiales viaReplayRequest.variables - ✅ Agent V1 mis à jour sur PC Windows (32 fichiers .py, hashes vérifiés, compile clean) — 2026-05-04
- ✅ Catalogue de réflexes (
gesture_catalog.py) utilisé par l'orchestrateur (composition réflexes + workflows appris, pas de hardcode)
Bench LLM — 18 modèles testés
- ✅ Rapport complet :
docs/BENCH_T2A_DECISION_11DOSSIERS.md - 🥇
gemma3:27b-cloud: 8/11 (73%) sur vérité-terrain corrigée — recommandé démo - 🥈
qwen3:8b: 7/11 (64%) — backup local, 7.6s/dossier, 5 GB → tient large dans 12 GB GPU - ⚠️ Bench fait sur DPI partiellement fictifs (cf. revue Pauline) → ré-évaluer après corrections data.js
Documentation produite
docs/BENCH_T2A_DECISION_11DOSSIERS.md— bench 18 modèlesdocs/BENCH_MINI_LLM_NLP.md— bench gemma3:1b vainqueur (NLP commande chat)docs/REVUE_DOSSIERS_PAULINE.md— revue 11 dossiers vs captures (fait par sous-agent, avec quelques inexactitudes : "médecins du sport 0559447669" remonté comme inventé, en réalité présent dans la capture)docs/POINTS_SUSPECTS_PAULINE.md— synthèse pour visio Pauline (méthodo : on ne signale PAS les noms anonymisés, on focus hallucinations cliniques + constantes + imagerie)docs/MAIL_PAULINE_AVANT_VISIO.md— mail-template à adapter
Mémoires importantes (~/.claude/.../memory/)
feedback_anonymisation_stricte.md⭐ — règle absolue : anonymiser = remplacement chirurgical des identités, JAMAIS réécrire le contenu clinique. Erreur historique : "anhydrose" vs "ankylose" sur 25003475feedback_lea_reflexes_catalog.md— utilisergesture_catalog.py, ne pas hardcoder Win+R+type+Enterfeedback_auth_dialogs_runtime.md— Windows Hello / Basic Auth bloquent le replay, anticiper avant chaque démo client-
- toutes les feedbacks existantes dans
MEMORY.md
- toutes les feedbacks existantes dans
Corrections data.js DÉJÀ FAITES
- 25003475 (UHCD aura migraineuse) — 3 hallucinations cliniques graves corrigées :
symptomes_orientation: "Migraines de membre" → "Faiblesse de membre"notes_paramedicales[0](03:09) : "Pansement compressif possible si perfusé" → "--> RAD possible. dé perfusé"notes_medicales[1](Histoire maladie) : "anhydrose au talon supérieur" → "ankylose du membre supérieur gauche"
- 25151530 (Forfait colique néphrétique) :
- "TDM sans injection" → "TDM avec injection" (2 occurrences)
- Histoire de la maladie enrichie avec ATCD RGO + TTT ESOMEPRAZOLE
server.pyVERITES_TERRAIN: 25003284 reclasséFORFAIT_URGENCE(sortie domicile en 3h37, J12.1 VRS)app.jssignes_vitaux : adapté pour itérer sur N colonnes dynamiquement (au lieu de v1/v2 fixe). MAISdata.jsa toujours 2 cols partout → rétrocompatible.
❌ Ce qui RESTE à faire (priorité décroissante)
🔴 PRIORITÉ 1 — corrections data.js (1-2h)
Constantes vitales tronquées (4 dossiers)
Captures Pauline source : /home/dom/Téléchargements/Exemples Dossiers UHCD - Forfaits (1)/Exemples Dossiers UHCD - Forfaits/[UHCD|FORFAITS]/<IPP>/
| IPP | Actuel data.js | Capture | Cols à ajouter | Priorité |
|---|---|---|---|---|
| 25003364 | 2 cols (21:02 + 14:45) | 4 cols | 19:45 (volume miction 700) + 18:44 (T 71, FC 87, PA 168/92, débit O2 2L) | 🟠 |
| 25005866 | 2 cols (10:56 + 23:01) | 5 cols | 08:20, 06:25, 02:00 (surveillance neuro post-trauma) | 🔴 grave |
| 25048485 | 2 cols (12:09 + 10:52) | 5 cols | 10:58, 10:54, 10:53 + ligne PA Latéralité | 🔴 grave |
| 25151530 | 2 cols (06:41 + 03:25) | 7 cols | 08:15, 07:37, 06:00, 04:45, 04:01 (évolution douleur EN: 7→0→5→10→6→4) | 🔴 très grave |
Format à adopter : passer de {item, v1, v2} à {item, v1, v2, v3, v4, ...}. app.js itère déjà dynamiquement sur N cols.
Imagerie à structurer (7 dossiers)
Le champ imagerie: [{date, type, par, role, horodatage, contenu}, ...] est lu par renderImagerie() dans app.js (déjà branché).
| IPP | CR à déplacer | Source actuelle data.js |
|---|---|---|
| 25003284 | RX thorax (signé Dr LAURENT Charles) | notes_medicales[3] |
| 25003364 | RX pulmonaire (foyer condensation lobaire D) | notes_medicales[0] |
| 25003475 | Scanner cérébral sans injection (normal) | notes_medicales[0] |
| 25005866 | 3 examens : TDMc 01:53 + RX thorax 01:54 + TDMc contrôle 10:18 | notes_medicales[1, 2] |
| 25012257 | TDM AP sans injection (allergie iode) + ECG | notes_medicales[0] |
| 25056615 | Scanner AP avec injection (CR complet) | notes_medicales[0] |
| 25151530 | Scanner AP avec injection | notes_medicales[1] |
Règle : extraire le CR du notes_medicales (ou autre source), le placer dans imagerie mot pour mot (procédure stricte). Le retirer de notes_medicales si entièrement déplacé OU laisser une mention "voir onglet Imagerie".
Enrichir 25048485 (2 motifs CTCG)
Captures montrent 2 motifs distincts le même jour 28/02/2025 : 1ère CTCG le matin 9h15, 2e CTCG l'après-midi (récidive). data.js modélise UN seul passage 10:40→17:30 → cohérent (le patient a été gardé entre les 2). Action : enrichir l'histoire de la maladie pour mentionner explicitement les 2 épisodes (matin + après-midi). Pas une question Pauline — juste clarification de présentation.
🟠 PRIORITÉ 2 — re-bench T2A après corrections (30 min)
Après corrections data.js, relancer bench_t2a_cloud.py (top 5 modèles seulement) pour avoir les chiffres réels. Les scripts existent dans /tmp/bench_t2a*.py. Mettre à jour BENCH_T2A_DECISION_11DOSSIERS.md.
🟠 PRIORITÉ 3 — workflow Urgence_unit (Dom, sur PC Windows)
Dom enregistre le workflow VWB qui traite 1 dossier de bout-en-bout :
- Click sur lien IPP
{{patient_id}}(variabilisé) - Navigation dans les onglets dossier (Motif, Examens, Imagerie, Notes médicales, Synthèse)
- extract_text par onglet → DPI consolidé
- Click "Coder >" → arrive sur aiva-vision
- type_text DPI dans
#dpi-input(auto-trigger analyse) - Wait + extract_text décision aiva-vision
- Click "Liste patients" pour revenir
Tu peux le faire MAINTENANT (data.js stable, aiva-vision opérationnelle, agent V1 à jour). Mais attendre que les corrections data.js soient finies est plus sûr (sinon les anchors visuels peuvent se déplacer si la table signes vitaux gagne des colonnes).
🟡 PRIORITÉ 4 — visio Pauline (pour les questions ouvertes)
Pauline doit répondre à 4-5 questions critiques :
- 25048485 : confirmer 2 épisodes le même jour ✓ (pas urgent, je gère seul)
- 25005866 : "médecins du sport 0559447669" — Pauline avait dit inventé, le sous-agent a vu présent → contradiction à trancher
- 25003284 étiquette workflow : "UHCD asthme" → "Pneumopathie VRS" ?
- Onglet Imagerie : niveau de détail attendu
Mail-template prêt : docs/MAIL_PAULINE_AVANT_VISIO.md
🟡 PRIORITÉ 5 — Tests E2E (J-1, dernier jour)
10 répétitions du scénario démo complet (chat Léa "traite-moi 3 dossiers" → orchestration → boucle → synthèse).
🚨 Contraintes critiques
-
Procédure d'anonymisation stricte (cf.
feedback_anonymisation_stricte.md) : pour toute correction data.js, NE JAMAIS reformuler/synthétiser le contenu clinique. Remplacer chirurgicalement les identités/dates uniquement. Erreur historique grave : "anhydrose"/"ankylose". -
Catalogue de réflexes (cf.
feedback_lea_reflexes_catalog.md) : utilisergesture_catalog.pypour les raccourcis natifs (Win+R, etc.), ne pas hardcoder. -
Pas de cloud LLM dans le projet sauf pour la démo (Ollama Cloud via clés Dom). Prod 100% local.
-
Captures Pauline = source de vérité :
/home/dom/Téléchargements/Exemples Dossiers UHCD - Forfaits (1)/...(8 dossiers) +/tmp/captures_pauline_3manquants/(3 dossiers extraits du docx). En cas de conflit avec rapport revue, la capture prime. -
Noms substitués = anonymisation volontaire : ne pas signaler comme erreur, ne pas chercher à les réaligner avec captures.
📁 Fichiers clés à connaître
/home/dom/ai/rpa_vision_v3/docs/clients/ght_sud_95/mockup_easily_assure/data.js— base 11 dossiers (~2100 lignes)/home/dom/ai/rpa_vision_v3/docs/clients/ght_sud_95/mockup_easily_assure/server.py— backend Flask +/api/analyse+VERITES_TERRAIN/home/dom/ai/rpa_vision_v3/docs/clients/ght_sud_95/mockup_easily_assure/app.js— rendering frontend (signes_vitaux dynamique appliqué)/home/dom/ai/rpa_vision_v3/agent_v0/server_v1/api_stream.py— streaming server (boot avec préchargement EasyOCR)/home/dom/ai/rpa_vision_v3/agent_chat/urgences_orchestrator.py— orchestrateur démo/home/dom/ai/rpa_vision_v3/core/llm/t2a_decision.py— décision T2A LLM/home/dom/ai/rpa_vision_v3/core/llm/ocr_extractor.py—extract_text_from_image+extract_table_from_image
🔧 Commandes utiles
# Vérifier syntaxe data.js
node -e "var fs=require('fs'); var c=fs.readFileSync('docs/clients/ght_sud_95/mockup_easily_assure/data.js','utf-8'); c=c.replace(/^const /gm, 'var '); var s={}; require('vm').runInContext(c, require('vm').createContext(s)); console.log('OK', Object.keys(s.DOSSIERS).length);"
# Restart streaming server
cd /home/dom/ai/rpa_vision_v3 && ./svc.sh restart streaming
# Restart maquette
sudo systemctl restart rpa-mockup-easily
# Re-bench T2A (après corrections data.js)
node /tmp/extract_dpi.js > /tmp/dpis.json
/home/dom/ai/rpa_vision_v3/.venv/bin/python /tmp/bench_t2a_cloud.py
⏱ Timeline démo
- Aujourd'hui : finir corrections data.js + visio Pauline
- Demain (J-2 / 2026-05-07) : enregistrement workflow Urgence_unit sur PC Windows
- J-1 (2026-05-08) : tests E2E répétés
- Jour J : démo GHT Sud 95
📌 Ce qui marche aujourd'hui (pas casser)
- Maquette aiva-vision visible et fonctionnelle
- Pipeline orchestrateur opérationnel (testé matin 05/05)
- Préchargement EasyOCR opérationnel (3.8s au boot)
- Bench complet avec rapport
- Mail-template Pauline prêt
Ne pas relancer les services systemd sans raison, ne pas modifier server.py sauf pour les corrections explicites.