From 4ce9c47f4531922fd0248f57c15a7b88d7337934 Mon Sep 17 00:00:00 2001 From: Dom Date: Wed, 22 Apr 2026 15:04:13 +0200 Subject: [PATCH] =?UTF-8?q?fix(ORA):=20logs=20stdout=20+=20v=C3=A9rificati?= =?UTF-8?q?on=20pHash=20tol=C3=A9rante=20pour=20clics?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Logs : forcer le handler stdout pour que les logs ORA apparaissent dans nohup (logger.info n'écrivait nulle part). Vérification : un clic avec confiance >= 0.7 est accepté même si l'écran ne change pas (pHash same). Un clic sur un champ de saisie ne modifie quasi pas l'écran mais est légitime. Changement mineur toujours accepté (plus de condition confiance > 0.9). Co-Authored-By: Claude Opus 4.6 (1M context) --- core/execution/observe_reason_act.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/core/execution/observe_reason_act.py b/core/execution/observe_reason_act.py index 4de925ed6..db2703ef1 100644 --- a/core/execution/observe_reason_act.py +++ b/core/execution/observe_reason_act.py @@ -13,6 +13,16 @@ Module standalone — importable depuis n'importe où. import logging import time import subprocess +import sys + +# Forcer les logs ORA dans stdout (visible dans nohup) +logging.basicConfig(level=logging.INFO, stream=sys.stdout, + format='%(message)s', force=False) +if not logging.getLogger(__name__).handlers: + handler = logging.StreamHandler(sys.stdout) + handler.setFormatter(logging.Formatter('%(message)s')) + logging.getLogger(__name__).addHandler(handler) + logging.getLogger(__name__).setLevel(logging.INFO) import base64 import os import json @@ -680,17 +690,19 @@ Règles: # Déterminer le succès selon le niveau de changement if change_level == 'same': - # Rien n'a changé — probable échec - # Exception : certains clics (focus, hover) peuvent ne pas changer l'écran - if decision.value in ('hover', 'focus'): + # 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: + success = True + detail = f"Changement minimal accepté (confiance={decision.confidence:.2f})" + elif decision.value in ('hover', 'focus'): success = True detail = f"Pas de changement visible (normal pour {decision.value})" else: success = False detail = f"Aucun changement détecté (distance={distance})" elif change_level == 'minor': - # Changement mineur — OK si confiance élevée - success = decision.confidence > 0.9 + success = True detail = f"Changement mineur (distance={distance})" else: # Changement majeur — succès