fix(ORA): logs stdout + vérification pHash tolérante pour clics
Some checks failed
security-audit / Bandit (scan statique) (push) Successful in 14s
security-audit / pip-audit (CVE dépendances) (push) Successful in 11s
security-audit / Scan secrets (grep) (push) Successful in 9s
tests / Lint (ruff + black) (push) Successful in 14s
tests / Tests unitaires (sans GPU) (push) Failing after 15s
tests / Tests sécurité (critique) (push) Has been skipped

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) <noreply@anthropic.com>
This commit is contained in:
Dom
2026-04-22 15:04:13 +02:00
parent 9dfcdb5fb0
commit 4ce9c47f45

View File

@@ -13,6 +13,16 @@ Module standalone — importable depuis n'importe où.
import logging import logging
import time import time
import subprocess 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 base64
import os import os
import json import json
@@ -680,17 +690,19 @@ Règles:
# Déterminer le succès selon le niveau de changement # Déterminer le succès selon le niveau de changement
if change_level == 'same': if change_level == 'same':
# Rien n'a changé — probable échec # Peu ou pas de changement visible
# Exception : certains clics (focus, hover) peuvent ne pas changer l'écran # Certaines actions légitimes changent peu l'écran (clic sur champ, focus, hover)
if decision.value in ('hover', 'focus'): 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 success = True
detail = f"Pas de changement visible (normal pour {decision.value})" detail = f"Pas de changement visible (normal pour {decision.value})"
else: else:
success = False success = False
detail = f"Aucun changement détecté (distance={distance})" detail = f"Aucun changement détecté (distance={distance})"
elif change_level == 'minor': elif change_level == 'minor':
# Changement mineur — OK si confiance élevée success = True
success = decision.confidence > 0.9
detail = f"Changement mineur (distance={distance})" detail = f"Changement mineur (distance={distance})"
else: else:
# Changement majeur — succès # Changement majeur — succès