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':