Files
rpa_vision_v3/examples/TEST_WORKFLOW_README.md
Dom a27b74cf22 v1.0 - Version stable: multi-PC, détection UI-DETR-1, 3 modes exécution
- Frontend v4 accessible sur réseau local (192.168.1.40)
- Ports ouverts: 3002 (frontend), 5001 (backend), 5004 (dashboard)
- Ollama GPU fonctionnel
- Self-healing interactif
- Dashboard confiance

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:23:51 +01:00

165 lines
4.0 KiB
Markdown

# 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