# Tests de Construction de Workflow Ce dossier contient des scripts pour tester la construction de workflows avec GraphBuilder. ## Scripts Disponibles ### 1. `test_workflow_synthetic.py` - Test Rapide Test avec une session synthétique (pas besoin de GUI). ```bash python examples/test_workflow_synthetic.py ``` **Utilité:** Valider rapidement que GraphBuilder fonctionne. ### 2. `test_workflow_construction.py` - Test avec Session Réelle Test avec une session capturée via l'interface GUI. ```bash # Utilise automatiquement la session la plus récente dans data/sessions/ python examples/test_workflow_construction.py # Ou spécifier un fichier python examples/test_workflow_construction.py data/sessions/ma_session.json ``` ## Workflow de Test Complet ### Étape 1: Lancer l'Interface GUI L'interface de test est disponible à: **http://127.0.0.1:5000** Pour la lancer (si pas déjà fait): ```bash # Depuis le terminal google-chrome http://127.0.0.1:5000 ``` ### Étape 2: Capturer une Session Dans l'interface GUI: 1. Cliquer sur "Démarrer Capture" 2. Effectuer plusieurs actions répétées (ex: cliquer 3-4 fois sur différents boutons) 3. Cliquer sur "Arrêter Capture" 4. Sauvegarder la session dans `data/sessions/` ### Étape 3: Tester la Construction ```bash python examples/test_workflow_construction.py ``` Le script va: - ✅ Charger la session la plus récente - ✅ Construire le workflow avec GraphBuilder - ✅ Détecter les patterns répétés - ✅ Créer les nodes et edges - ✅ Afficher un rapport détaillé ## Sortie Attendue ``` [1/5] Chargement de la session: data/sessions/session_001.json ✓ Session chargée: session_001 - Screenshots: 15 - Événements: 45 [2/5] Initialisation du GraphBuilder ✓ GraphBuilder initialisé [3/5] Construction du workflow ✓ Workflow construit: workflow_session_001 - Nodes: 3 - Edges: 2 [4/5] Analyse des nodes Node node_000: - Name: State Pattern 0 - Observations: 5 - Similarity threshold: 0.85 [5/5] Analyse des edges Edge edge_000: - From: node_000 → To: node_001 - Action: mouse_click - Target: primary_action - Observations: 3 ✓ TEST RÉUSSI Workflow: 3 nodes, 2 edges FAISS index: 15 vectors ``` ## Dépannage ### Erreur: "Aucune session trouvée" **Solution:** Capturer une session via l'interface GUI d'abord. ### Erreur: "Session has no screenshots" **Solution:** La session est vide. Capturer une nouvelle session avec des actions. ### Erreur: "Not enough states for pattern detection" **Solution:** Capturer plus d'actions (minimum 3 répétitions du même pattern). ## Structure des Données ### Session JSON ```json { "session_id": "session_001", "agent_version": "v3.0", "screenshots": [ { "screenshot_id": "screen_000", "relative_path": "data/screenshots/screen_000.png", "captured_at": "2024-11-23T10:00:00" } ], "events": [...] } ``` ### Workflow Construit ``` Workflow ├── Nodes (patterns détectés) │ ├── node_000: "State Pattern 0" (5 observations) │ ├── node_001: "State Pattern 1" (4 observations) │ └── node_002: "State Pattern 2" (3 observations) └── Edges (transitions) ├── edge_000: node_000 → node_001 (mouse_click) └── edge_001: node_001 → node_002 (mouse_click) ``` ## Paramètres de Configuration Dans `GraphBuilder`: ```python builder = GraphBuilder( min_pattern_repetitions=3, # Répétitions min pour un pattern clustering_eps=0.15, # Distance max DBSCAN clustering_min_samples=2 # Échantillons min par cluster ) ``` **Ajuster si:** - Trop de patterns détectés → Augmenter `min_pattern_repetitions` - Pas assez de patterns → Diminuer `min_pattern_repetitions` ou augmenter `clustering_eps` ## Prochaines Étapes Après validation des tests: 1. Implémenter extraction d'actions réelles depuis events 2. Enrichir les contraintes des ScreenTemplates 3. Ajouter tests property-based 4. Optimiser la détection de patterns