backup: snapshot post-démo GHT 2026-05-19
Some checks failed
tests / Lint (ruff + black) (push) Successful in 1m50s
tests / Tests unitaires (sans GPU) (push) Failing after 1m50s
tests / Tests sécurité (critique) (push) Has been skipped

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>
This commit is contained in:
Dom
2026-05-19 14:55:06 +02:00
parent f2212e77e3
commit 5ea4960e65
627 changed files with 211348 additions and 169 deletions

View File

@@ -58,8 +58,10 @@ VWB_ACTION_TO_CORE = {
"visual_condition": "evaluate_condition",
"screenshot_evidence": "screenshot",
"extract_text": "extract_text", # passthrough — handler serveur OCR + variable
"extract_text_scroll": "extract_text_scroll", # passthrough — expansé en sous-actions par _edge_to_normalized_actions
"pause_for_human": "pause_for_human", # passthrough — intercepté par api_stream /replay/next
"t2a_decision": "t2a_decision", # passthrough — handler serveur LLM T2A + variable
"llm_generate": "llm_generate", # passthrough — génération texte libre côté serveur
}
@@ -673,12 +675,29 @@ def _vwb_params_to_core(action_type: str, params: Dict[str, Any]) -> Dict[str, A
if "paragraph" in params:
core_params["paragraph"] = bool(params["paragraph"])
elif action_type == "extract_text_scroll":
# variable_name est le nom canonique côté VWB (cohérent avec extract_table) ;
# output_var accepté en compat. Le préprocesseur d'expansion lit les deux.
var = params.get("variable_name") or params.get("output_var") or "extracted_text"
core_params["variable_name"] = var
if "paragraph" in params:
core_params["paragraph"] = bool(params["paragraph"])
elif action_type == "t2a_decision":
core_params["input_template"] = params.get("input_template", "")
core_params["output_var"] = params.get("output_var", "t2a_result")
if params.get("model"):
core_params["model"] = params["model"]
elif action_type == "llm_generate":
core_params["prompt"] = params.get("prompt", "")
core_params["context"] = params.get("context", "")
core_params["output_var"] = params.get("output_var", "generated_text")
if params.get("model"):
core_params["model"] = params["model"]
if params.get("temperature") is not None:
core_params["temperature"] = params["temperature"]
return core_params