From e44fd7b3286ddfae49153c78e306fe3e45f5f931 Mon Sep 17 00:00:00 2001 From: Dom Date: Thu, 23 Apr 2026 08:45:40 +0200 Subject: [PATCH] =?UTF-8?q?fix(ORA):=20double-clic=20fiable=20+=20v=C3=A9r?= =?UTF-8?q?ification=20stricte?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Double-clic : moveTo + 2 clics explicites (pyautogui.doubleClick ne traverse pas toujours la VM). Délai 80ms entre les clics. Vérification : un double-clic DOIT produire un changement majeur (ouverture fichier/dossier). Changement mineur = échec → retry. Les clics simples et hotkeys gardent la tolérance actuelle. Co-Authored-By: Claude Opus 4.6 (1M context) --- core/execution/observe_reason_act.py | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/core/execution/observe_reason_act.py b/core/execution/observe_reason_act.py index d57a98bd6..be8467aa5 100644 --- a/core/execution/observe_reason_act.py +++ b/core/execution/observe_reason_act.py @@ -700,11 +700,15 @@ Règles: print(f"🔍 [ORA/verify] pHash distance={distance} → {change_level}") + # Un double-clic DOIT produire un changement majeur (ouverture de fichier/dossier) + is_double_click = decision.value == 'double' + # Déterminer le succès selon le niveau de changement if change_level == 'same': - # Peu ou pas de changement visible - # Certaines actions légitimes changent peu l'écran (clic sur champ, focus, hover) - if decision.action in ('click', 'hotkey') and decision.confidence >= 0.7: + if is_double_click: + success = False + detail = f"Double-clic sans effet visible (distance={distance})" + elif decision.action in ('click', 'hotkey') and decision.confidence >= 0.7: success = True detail = f"Changement minimal accepté (confiance={decision.confidence:.2f})" elif decision.value in ('hover', 'focus'): @@ -714,8 +718,12 @@ Règles: success = False detail = f"Aucun changement détecté (distance={distance})" elif change_level == 'minor': - success = True - detail = f"Changement mineur (distance={distance})" + if is_double_click: + success = False + detail = f"Double-clic : changement mineur insuffisant (distance={distance}), attendu majeur" + else: + success = True + detail = f"Changement mineur (distance={distance})" else: # Changement majeur — succès success = True @@ -1436,7 +1444,13 @@ Règles: print(f"🖱️ [ORA/click] {decision.value} à ({x}, {y}) via {method_used}") if decision.value == 'double': - pyautogui.doubleClick(x, y) + # Double-clic explicite : moveTo + 2 clics séparés (fiable en VM) + pyautogui.moveTo(x, y) + time.sleep(0.1) + pyautogui.click() + time.sleep(0.08) + pyautogui.click() + time.sleep(0.5) elif decision.value == 'right': pyautogui.rightClick(x, y) elif decision.value == 'hover':