Backup état complet après enregistrement vidéo démo de bout en bout. À utiliser comme point de référence pour la consolidation post-démo. Changements majeurs de la session 18-19 mai : - AIVA-URGENCE : page autonome avec preset URL + auto-focus chain - Workflow Demo_urgence_3_db : merge linux_db + steps AIVA + pause humaine NoMachine - Bypass LLM (static_result / static_text) dans replay_engine pour démos déterministes sans appel Ollama - Fix api_stream:3013 — replay_paused au premier polling /next - dag_execute : lift duration_ms vers top-level pour wait runtime - NPM bypass auth /aiva-urgence/ via location ^~ (proxy_host/10.conf hors git) - scripts/cancel-replays.sh — workaround Stop VWB qui ne purge pas la queue Anchors visuels (468) forcés dans le commit pour garantir restorabilité. DB workflows actuelle + ~12 .bak DB de la journée incluses. Sujets identifiés pour consolidation post-démo (TODO) : 1. Bug VWB recapture anchor ne régénère pas le PNG 2. Léa client accumule état mémoire (restart périodique requis) 3. Stop VWB ne purge pas la queue serveur (lien manquant vers /replay/cancel) 4. Bug coord client mss tronqué 2560x60 → mapping Y cassé 5. delay_before/delay_after ignorés au runtime (fix partiel duration_ms) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
14 KiB
Handoff session 15-16 mai 2026 — Workflow Demo_urgence_3_db + linux_db
Auteur : Claude (session du 15 mai 22h jusqu'au 16 mai 2h) Objectif : permettre la reprise propre du travail (même session ou nouvelle session) jusqu'à la démo vidéo "demo 95" prévue jeudi 21 mai 2026 (J-5).
1. Contexte démo
Démo "95" / GHT Sud 95 — Paris 21 mai 2026 — format vidéo enregistrée (pas live). Périmètre recentré : requalification forfait / hospitalisation uniquement (Demo_urgence_2 v2 Excel abandonnée — Excel inadapté pour textes longs).
Différenciateurs vidéo :
- 100 % vision (pas de DOM, pas d'API)
- Multi-OS Windows ↔ Linux (NoMachine)
- Bureau (Word) ET base (DBeaver/SQLite VM Ubuntu)
Patient démo : MOREL Catherine, IPP 25003284 (hardcodé partout) Date démo : 15/05/2026 (hardcodée) Décision démo : REQUALIFICATION_HOSPITALISATION Somme récupérée : 1750 € (hardcodée)
2. Workflows en base
DB : /home/dom/ai/rpa_vision_v3/visual_workflow_builder/backend/instance/workflows.db
Demo_urgence_3_db — wf_483910cdd851_1778750587 (workflow complet)
40 steps (ord 0-39). Source = Demo_urgence_2_interop (wf_56bf8fa2d332_1778666923, intact).
| ord | action | rôle |
|---|---|---|
| 0-14 | DPI extraction + t2a_decision + 2× llm_generate | Génère t_*, dec, resume_patient, justification_t2a |
| 15 | Win+D | Basculer bureau Windows |
| 16-28 | Word | Ouvre template rapport_T2A_template.docx, saisit IPP/date/décision/somme via Tab |
| 29 | double_click LINUX_demo.nxs | Ouvre NoMachine vers VM Ubuntu (auto-login configuré par Dom) |
| 30 | type_text "loli" | Mot de passe Linux (skippé si auto-login actif) |
| 31 | Enter | Valider login |
| 32-39 | DBeaver dans VM | Ouvre demo_95 2, console SQL, INSERT, exécute |
Note : ord 35 a by_text="Tables", ord 36 a by_text="demo_95" (ajoutés en cours de session).
linux_db — wf_0786343fb2b7_1778879244 (sous-workflow de test rapide)
Créé spécifiquement pour itérer rapidement sur la partie NoMachine + DBeaver sans rejouer le DPI+LLM (5-10 min). Initialement 11 steps = ord 29-39 du Demo_urgence_3_db.
État actuel après nombreuses modifs Dom : 10 ou 11 steps (à vérifier en début de session). Dom a notamment :
- Supprimé certains steps
- Ajouté un click sur menu "Éditeur SQL" + sous-menu (passage à 3 clics au lieu de Ctrl+Alt+Enter, plus robuste)
- Réordonné via UPDATE SQL (les edges DAG visuelles VWB ne se sauvegardent pas)
Commande pour voir l'état :
sqlite3 /home/dom/ai/rpa_vision_v3/visual_workflow_builder/backend/instance/workflows.db \
"SELECT \"order\" AS ord, action_type, COALESCE(label,'') AS label, json_extract(parameters_json, '\$.visual_anchor.bounding_box') AS bbox, json_extract(parameters_json, '\$.by_text') AS by_text FROM steps WHERE workflow_id='wf_0786343fb2b7_1778879244' ORDER BY \"order\";"
3. Modifs code appliquées (NON COMMITÉES côté Linux)
agent_v0/agent_v1/ui/chat_window.py (Léa Windows)
Trois modifs UX (validées Dom : Q1=oui minimiser sur Annuler, Q2=500ms, Q3=clear visuel uniquement, Q4=bulle accueil effaçable) :
- Nouvelle méthode
_clear_chat_history()(vers ligne 870) : détruit les widgets enfants de_msg_frameà chaque pause. Ne touche pas àself._messages(RAM conservée pour debug). - Appel dans
_show_and_render:self._clear_chat_history()AVANT_render_paused_bubble(payload). - Minimisation 500 ms sur
_on_paused_resumeET_on_paused_abort:self._root.after(500, self._do_hide).
agent_v0/agent_v1/core/executor.py (Léa Windows)
- Délai paste (ligne 2579) :
time.sleep(0.05)→time.sleep(0.5)pour laisser NoMachine sync le clipboard Windows → VM Ubuntu. NE FONCTIONNE TOUJOURS PAS — clipboard probablement non propagé du tout par NoMachine.
agent_v0/server_v1/resolve_engine.py (serveur Linux)
- Constante drift (ligne 2110) :
_RESOLUTION_MAX_DRIFT: 0.20→0.95. Permet à l'élément d'être trouvé n'importe où à l'écran (esprit "100 % vision"). Servicerpa-streamingredémarré, nouveau PID au démarrage (vérifiersystemctl --user status rpa-streaming).
Déploiements Windows effectués via SCP
chat_window.py→dom@192.168.1.11:C:/rpa_vision/agent_v1/ui/chat_window.py✓executor.py→dom@192.168.1.11:C:/rpa_vision/agent_v1/core/executor.py✓- Léa Windows a été redémarrée après les SCP (à confirmer pour la session du 16 mai)
Convention notée : à chaque modif d'un fichier client Windows, Claude fait le SCP automatiquement (mot de passe SSH loli cf. reference_credentials.md).
4. Modifs DB appliquées (workflows.db)
Liste exhaustive des UPDATE de la session :
- ord 29 source (
step_5c81e5bdd20f_1778879250historique) :by_text="LINUX_demo"(ne plus retrouver via faux positifs) - ord 35 source + ord 4 linux_db (anc.) :
by_text="Tables" - ord 36 source + ord 5 linux_db (anc.) :
by_text="demo_95" - ord 40 source — INSERT SQL (
step_9cf99c5f2420_1778862183) : ajout"paste": trueau parameters_json - ord 5 linux_db (Ctrl+Alt+Enter) : ajout
delay_before: 1500ms pour laisser le focus s'établir après le clic demo_95 2 (peut être inutile maintenant que Dom passe par le menu) - Réordonnancement linux_db : déplacement du clic demo_95 2 (ord 7) à ord 4 + décalage des suivants
- Réordonnancement linux_db après ajout menu : 3 nouveaux clic_anchor menu (ord 8/9/10 → 5/6/7), type_text + Ctrl+Enter décalés à 8/9
- Retrait
pastesur le step type_text INSERT (paste:true ne fonctionnait pas → fallback frappe char-by-char) - Retrait
by_text="demo_95"sur le nouveau click demo_95 2 (ord 4 linux_db) car OCR matchait l'onglet<demo_95 2> Script-1en haut au lieu du Navigator à gauche
Backups disponibles dans visual_workflow_builder/backend/instance/workflows.db.backup_* :
..._avant_dup_demo3(création Demo_urgence_3_db)..._avant_paste_true(avant UPDATE paste:true)..._avant_bytext_ord29(avant by_text LINUX_demo)..._avant_bytext_demo95(avant by_text demo_95 + Tables)..._avant_suppr_vwb31(avant suppression Dom)..._avant_linux_db(avant création linux_db)..._avant_reorder_linux_db(avant 1er réordonnancement)..._avant_reorder_menu(avant 2e réordonnancement)
5. Bugs / dette technique identifiés (À TRAITER POST-DÉMO)
Critiques pour la démo vidéo
-
paste:true ne fonctionne pas entre Léa Windows et VM Ubuntu via NoMachine
- Soit
win32clipboard.SetClipboardText()plante silencieusement - Soit NoMachine ne propage pas le clipboard Windows → Ubuntu (probable)
- Investiguer : vérifier NoMachine settings (Devices → Clipboard → cocher "Both directions")
- Fallback : char-by-char (lent mais peut-être suffisant pour 1859 chars)
- Soit
-
Clics Léa n'atteignent pas toujours la VM Ubuntu via NoMachine
- Pattern : Léa clique côté Windows, l'agent reporte
success=Truemaisno_screen_change - Chaque clic prend 2 min côté agent (retries internes silencieux)
- À ce rythme, le replay complet est inutilisable pour vidéo (25+ min)
- Hypothèse : focus de fenêtre NoMachine instable, ou mode input non passthrough
- Workaround temporaire : Dom intervient en supervision humaine (chaque step → bulle Léa → clic manuel + Continuer)
- Pattern : Léa clique côté Windows, l'agent reporte
-
Faux négatifs détecteur screen_change : seuil
global=0.002%considéré "aucun changement" sur les clics de menu qui pourtant ouvrent quelque chose visuellement. Déclenche retries inutiles. -
Bug
get_target_memory_storeimport dansreplay_memory.py:Learning: échec stockage target_memory: cannot import name 'get_target_memory_store'Non bloquant mais empêche l'apprentissage des corrections humaines.
-
VLM Quick Find exception :
'int' object has no attribute 'get'— fallback OK mais à corriger.
Bugs UX VWB
-
Bouton "Stop" disparaît côté VWB UI quand le replay reste actif côté serveur (désynchro). Confondant.
-
Bouton vert "Exécuter" appelle un mini-runtime legacy (
real_demo.py) qui ne supporte que click/type/wait. Pour le replay complet, toujours cliquer le bouton bleu "→ Windows". -
DAG edges visuelles dans VWB ne se sauvegardent pas → l'ordre visuel des flèches ne reflète pas l'ordre réel (basé sur
steps.order). Confusing pour l'utilisateur. -
Bannière Windows 11 "Aucun périphérique audio disponible" (grise) persistante en haut → VLM la décrit comme "popup, dialog box, confirmation, or erro..." (faux). Pollue les diagnostics.
Bugs Léa
-
Démarrage Léa très lent : 3-6 minutes au lancement (chargement modèles ML probablement). À investiguer.
-
Capture VWB : si Léa Windows n'est pas lancée, le fallback
msssur Wayland échoue (XGetImage failed). Le bouton "Capturer" dans CapturePanel a un fallback local Linux qui ne marche plus sur Wayland natif (Chrome moderne).
6. État infra runtime (vérifications à faire en début de session)
- Service
rpa-streaming(port 5005) :systemctl --user status rpa-streaming→ doit être active. Si redémarré entre temps, PID différent du 308418 mentionné. - VWB backend : port 5002, lancé via
app.py(PID ≈ 140052 au moment du handoff). - VWB frontend : port 3002, Vite/React.
- Léa Windows : sur
192.168.1.11, tray icon visible si lancée. Pour confirmer connexion = polls/api/v1/traces/stream/replay/nextdepuis 192.168.1.11 dans les logs serveur. - NoMachine : configuré avec auto-login Ubuntu activé (skip lock screen). Clipboard partage probablement non bidirectionnel — à vérifier.
7. Reprise demain — checklist proposée
Étape 0 — Vérification état
# Vérifier services
systemctl --user status rpa-streaming
ps aux | grep -E "app.py|api_stream" | grep -v grep
# Vérifier état workflows
sqlite3 /home/dom/ai/rpa_vision_v3/visual_workflow_builder/backend/instance/workflows.db \
"SELECT id, name, updated_at FROM workflows WHERE name LIKE 'Demo_urgence_3%' OR name LIKE 'linux_db';"
# Vérifier modifs code non commitées
cd /home/dom/ai/rpa_vision_v3 && git status --short | grep -E "chat_window|executor|resolve_engine"
Étape 1 — Résoudre le bug "clics ne traversent pas NoMachine"
C'est le bloqueur n°1. Sans ça, pas de démo vidéo possible.
Diagnostic Dom (16 mai 2h) : « C'est NoMachine côté Windows qui ne répond plus comme il faut. » À investiguer en priorité demain (mise à jour NoMachine récente ? Config qui a sauté ? Process zombi ? Réinstall ?).
Pistes :
- Activer le partage clipboard NoMachine bidirectionnel (Settings → Devices → Clipboard)
- Vérifier que la fenêtre NoMachine reste plein écran tout au long
- Tester un autre client display (RDP natif Windows ?)
- Configurer Léa pour focus la fenêtre NoMachine avant chaque action (mécanisme à ajouter dans executor.py ?)
Étape 2 — Si NoMachine OK : tester linux_db de bout en bout
Cible : run linux_db en ≤ 2 min sans intervention manuelle.
Étape 3 — Run complet Demo_urgence_3_db
Cible : 1 run propre du DPI au INSERT SQL. Enregistrer cette session pour la vidéo.
Étape 4 — Post-démo
Traiter la dette listée section 5 dans l'ordre d'importance.
8. Annexes
IDs critiques
- Workflow Demo_urgence_3_db :
wf_483910cdd851_1778750587 - Workflow linux_db :
wf_0786343fb2b7_1778879244 - Workflow source Demo_urgence_2_interop (intact) :
wf_56bf8fa2d332_1778666923 - IPP démo :
25003284 - Step INSERT SQL Demo_urgence_3_db :
step_9cf99c5f2420_1778862183(ord 40, paste:true) - Service streaming :
rpa-streaminguser systemd
Variables runtime produites par le workflow
t_extraction_liste(extract_table ord 0)t_motif_admission,t_examen_clinique,t_imagerie,t_notes_medicales,t_synthese_urgences(extract_text_scroll)dec(objet) :dec.decision,dec.decision_court,dec.preuve_critere1/2/3(t2a_decision ord 12, modelgemma4:31b-cloud)resume_patient(llm_generate ord 13)justification_t2a(llm_generate ord 14)
Fichiers source modifiés (non commités)
modified: agent_v0/agent_v1/ui/chat_window.py # clear+minimize Léa
modified: agent_v0/agent_v1/core/executor.py # paste delay 0.5s
modified: agent_v0/server_v1/resolve_engine.py # drift 0.95
Schema DB rapide
- Table
steps:id, workflow_id, action_type, "order" (réservé), position_x, position_y, parameters_json (JSON), anchor_id (FK), label, created_at, updated_at - Table
workflows:id, name, description, tags_json, trigger_examples_json, created_at, updated_at, is_active, source, review_status, review_feedback, reviewed_at - VWB affiche
orderen 1-indexed (VWB N = DB N-1)
Commandes utiles
# Logs streaming (filtrés)
journalctl --user-unit=rpa-streaming --since "10 minutes ago" --no-pager | \
grep -vE "stream/image|/replay/next|GET /health|EDS-NLP" | tail -30
# Backup DB
cp /home/dom/ai/rpa_vision_v3/visual_workflow_builder/backend/instance/workflows.db{,.backup_$(date +%Y-%m-%d_%H%M%S)_label}
# SCP fichier vers Léa Windows
SSHPASS='loli' sshpass -e scp -o StrictHostKeyChecking=no \
/home/dom/ai/rpa_vision_v3/agent_v0/agent_v1/ui/chat_window.py \
dom@192.168.1.11:C:/rpa_vision/agent_v1/ui/chat_window.py
# Forcer reprise replay côté serveur
curl -X POST "http://localhost:5005/api/v1/traces/stream/replay/<replay_id>/resume"
Trois questions Q1/Q2/Q3 Léa chat (déjà tranchées)
- Q1 : minimiser aussi sur Annuler ? → oui
- Q2 : délai minimisation ? → 500 ms
- Q3 : purger
self._messagesRAM ? → non (clear visuel uniquement, RAM gardée pour debug) - Q4 (bulle accueil RGPD) : effaçable au 1er pause ? → oui OK
9. Posture pour la reprise
Si nouvelle session Claude : commencer par lire ce handoff EN ENTIER + MEMORY.md + CLAUDE.md. Ne pas relancer de modifs sans vérifier l'état actuel de la DB et du code.
Si même session Claude (ce qui est déjà perdu probablement) : reprendre directement.
Priorité absolue : résoudre le bug "clics NoMachine ne traversent pas". Sans ça, la démo vidéo est compromise.
Démo J-5 : jeudi 21 mai. Marge de manœuvre étroite. Si NoMachine est un blocage durable, envisager un plan B (un seul OS = tout sous Linux ? ou tout sous Windows ?).