- 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>
165 lines
4.0 KiB
Markdown
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
|