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>
This commit is contained in:
136
agent_v0/deploy/test_replay_diag.py
Normal file
136
agent_v0/deploy/test_replay_diag.py
Normal file
@@ -0,0 +1,136 @@
|
||||
#!/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...")
|
||||
Reference in New Issue
Block a user