Files
rpa_vision_v3/agent_v0/deploy/test_replay_diag.py
Dom ae65be2555 chore: ajouter agent_v0/ au tracking git (était un repo embarqué)
Suppression du .git embarqué dans agent_v0/ — le code est maintenant
tracké normalement dans le repo principal.
Inclut : agent_v1 (client), server_v1 (streaming), lea_ui (chat client)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 11:12:23 +01:00

137 lines
4.2 KiB
Python

#!/usr/bin/env python3
"""
Diagnostic pour le replay Agent V1 sur Windows.
Test en 3 etapes :
1. Verifie que pynput fonctionne (souris + clavier)
2. Verifie la connexion au serveur de replay
3. Execute un poll_and_execute de test
Usage : python test_replay_diag.py
(Depuis C:\rpa_vision : .venv\Scripts\python.exe test_replay_diag.py)
"""
import os
import sys
import time
# Charger .env si present
env_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), '.env')
if os.path.exists(env_file):
with open(env_file, encoding='utf-8') as f:
for line in f:
line = line.strip()
if line and not line.startswith('#') and '=' in line:
key, val = line.split('=', 1)
os.environ.setdefault(key.strip(), val.strip())
SERVER_URL = os.getenv("RPA_SERVER_URL", "http://192.168.1.40:5005/api/v1")
print("=" * 60)
print(" DIAGNOSTIC REPLAY AGENT V1")
print("=" * 60)
print()
# ---- Test 1 : pynput ----
print("[TEST 1] Verification pynput...")
try:
from pynput.mouse import Controller as MouseController
from pynput.keyboard import Controller as KeyboardController
mouse = MouseController()
kb = KeyboardController()
pos = mouse.position
print(f" Position souris actuelle : {pos}")
if pos is None:
print(" PROBLEME : mouse.position = None !")
print(" -> pynput n'a pas acces a la session graphique.")
print(" -> Le script doit etre lance DEPUIS le bureau Windows,")
print(" pas via SSH.")
else:
print(f" OK : souris detectee a {pos}")
# Test deplacement souris (petit mouvement)
print(" Test deplacement souris dans 2s...")
time.sleep(2)
old_pos = mouse.position
if old_pos:
# Deplacement de 50px a droite puis retour
mouse.position = (old_pos[0] + 50, old_pos[1])
time.sleep(0.3)
new_pos = mouse.position
mouse.position = old_pos # Retour
print(f" Deplacement: {old_pos} -> {new_pos} -> retour")
if new_pos and new_pos[0] != old_pos[0]:
print(" OK : deplacement souris fonctionne !")
else:
print(" PROBLEME : la souris n'a pas bouge.")
else:
print(" SKIP : pas de position souris disponible.")
except Exception as e:
print(f" ERREUR pynput : {e}")
import traceback
traceback.print_exc()
print()
# ---- Test 2 : connexion serveur ----
print(f"[TEST 2] Connexion au serveur : {SERVER_URL}")
try:
import requests
url = f"{SERVER_URL}/traces/stream/replay/next"
resp = requests.get(url, params={"session_id": "diag_test"}, timeout=5)
print(f" HTTP {resp.status_code} : {resp.text[:200]}")
if resp.ok:
data = resp.json()
if data.get("action") is None:
print(" OK : serveur accessible, pas d'action en attente.")
else:
print(f" OK : serveur accessible, ACTION RECUE : {data['action']}")
else:
print(f" PROBLEME : le serveur a repondu HTTP {resp.status_code}")
except requests.exceptions.ConnectionError as e:
print(f" ERREUR CONNEXION : {e}")
print(f" -> Verifiez que le serveur tourne sur {SERVER_URL}")
except Exception as e:
print(f" ERREUR : {e}")
print()
# ---- Test 3 : mss (capture ecran) ----
print("[TEST 3] Capture ecran (mss)...")
try:
import mss
sct = mss.mss()
monitor = sct.monitors[1]
print(f" Moniteur principal : {monitor['width']}x{monitor['height']}")
raw = sct.grab(monitor)
print(f" Capture OK : {raw.size}")
except Exception as e:
print(f" ERREUR mss : {e}")
print()
# ---- Test 4 : typing test (5s delay) ----
print("[TEST 4] Test de frappe clavier")
print(" -> Ouvrez le Bloc-Notes et placez le curseur dedans.")
print(" -> La frappe commencera dans 5 secondes...")
time.sleep(5)
try:
from pynput.keyboard import Controller as KeyboardController
kb = KeyboardController()
test_text = "Hello RPA!"
print(f" Frappe de '{test_text}'...")
kb.type(test_text)
print(f" Frappe terminee. Verifiez si le texte apparait dans le Bloc-Notes.")
except Exception as e:
print(f" ERREUR frappe : {e}")
import traceback
traceback.print_exc()
print()
print("=" * 60)
print(" DIAGNOSTIC TERMINE")
print("=" * 60)
input("Appuyez sur Entree pour fermer...")