fix: session_cleaner utilise le fallback simple exclusivement

build_replay_from_raw_events transforme les events (réordonne, injecte
du setup "ouvrir l'app", fusionne les actions, ajoute des waits) ce qui
décale les clics par rapport à l'enregistrement original. Le texte était
saisi dans le mauvais champ parce que les actions n'étaient plus en 1:1
avec la session.

Le fallback _simple_build_replay reproduit les events tels quels en
coords brutes — exactement ce qu'on veut pour "nettoyer et rejouer".
Le session_cleaner l'utilise maintenant exclusivement.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dom
2026-04-12 16:29:07 +02:00
parent d82aad984f
commit 816b37af98

View File

@@ -758,28 +758,12 @@ def clean_and_replay():
replay_actions = None
error_message = ""
if _build_replay_fn is not None:
# Chemin principal : utiliser build_replay_from_raw_events
try:
replay_actions = _build_replay_fn(
cleaned_events,
session_id=session_id,
session_dir=str(session_dir),
)
logger.info("build_replay_from_raw_events a produit %d actions", len(replay_actions))
# Forcer visual_mode=False sur les clics pour eviter le crash
# agent "cannot unpack non-iterable NoneType" quand le visual
# resolve ne fonctionne pas. Les coords brutes suffisent pour
# un replay de nettoyage. Le mode visuel sera reactive quand
# le bug agent sera corrige.
if replay_actions:
for act in replay_actions:
if act.get("type") == "click":
act["visual_mode"] = False
except Exception as e:
logger.error("Erreur build_replay_from_raw_events : %s", e)
error_message = f"Erreur lors de la construction du replay : {e}"
# Pour le session_cleaner, on utilise TOUJOURS le fallback simple.
# build_replay_from_raw_events transforme les events (réordonne,
# injecte du setup "ouvrir l'app", fusionne des actions) — ce qui
# décale les clics par rapport à l'enregistrement original.
# Le fallback simple reproduit les events 1:1 en coords brutes,
# ce qui est exactement ce qu'on veut pour "nettoyer et rejouer".
if not replay_actions:
# Fallback : filtrage simple et conversion directe.
# Se declenche si build_replay_from_raw_events a crashe OU