# Guide de Test - Mode Assisté avec Suggestions

**Date**: 2025-11-19  
**Objectif**: Valider le fonctionnement du Mode Assisté en conditions réelles  
**Durée estimée**: 30-45 minutes

---

## 📋 Pré-requis

### Vérifications avant de commencer

```bash
# 1. Vérifier que toutes les dépendances sont OK
python3 diagnostic_complet_systeme.py

# 2. Vérifier que les tâches critiques sont complétées
python3 verifier_tasks_mode_assiste.py

# 3. Activer l'environnement virtuel
source geniusia2/venv/bin/activate
```

**Résultat attendu**: 
- ✓ Système à 100%
- ✓ 4/6 tâches complétées (dont les 3 critiques)

---

## 🎯 Scénarios de Test

### Test 1: Détection de Workflow Simple

**Objectif**: Vérifier que le système détecte un workflow en cours

**Étapes**:
1. Lancer l'application en mode Assist
   ```bash
   python3 geniusia2/main.py --mode assist
   ```

2. Ouvrir la Calculatrice
   ```bash
   gnome-calculator &
   ```

3. Effectuer une séquence d'actions connue:
   - Cliquer sur "7"
   - Cliquer sur "+"
   - Cliquer sur "3"

4. **Observer**: Une suggestion devrait apparaître après 2-3 actions

**Résultats attendus**:
- ✓ Le système détecte le workflow
- ✓ Une suggestion apparaît dans les 2 secondes
- ✓ La suggestion affiche le nom du workflow
- ✓ La confiance est > 80%

**Logs à vérifier**:
```bash
tail -f geniusia2/data/logs/logs_2025-11-19.json | grep workflow_match
```

---

### Test 2: Acceptation de Suggestion

**Objectif**: Vérifier que l'acceptation complète le workflow

**Étapes**:
1. Reprendre le Test 1 jusqu'à l'apparition de la suggestion
2. Appuyer sur **Enter** pour accepter
3. Observer l'exécution automatique

**Résultats attendus**:
- ✓ Le workflow se complète automatiquement
- ✓ Les actions restantes sont exécutées
- ✓ Le compteur de rejets ne change pas
- ✓ Le workflow est marqué comme accepté

**Vérification**:
```python
# Dans les logs, chercher:
# - "suggestion_accepted"
# - "workflow_acceptance_tracked"
```

---

### Test 3: Rejet de Suggestion

**Objectif**: Vérifier que le rejet incrémente le compteur

**Étapes**:
1. Reprendre le Test 1 jusqu'à l'apparition de la suggestion
2. Appuyer sur **Escape** pour rejeter
3. Continuer manuellement
4. Répéter 3 fois pour tester l'ajustement de priorité

**Résultats attendus**:
- ✓ La suggestion disparaît immédiatement
- ✓ Le compteur de rejets s'incrémente
- ✓ Après 3 rejets, la confiance est ajustée (× 0.9)
- ✓ Les suggestions futures ont une confiance réduite

**Vérification**:
```python
# Dans les logs, chercher:
# - "suggestion_rejected"
# - "workflow_rejection_tracked"
# - "workflow_priority_adjusted" (après 3 rejets)
```

---

### Test 4: Timeout Automatique

**Objectif**: Vérifier que la suggestion disparaît après 10 secondes

**Étapes**:
1. Reprendre le Test 1 jusqu'à l'apparition de la suggestion
2. **Ne rien faire** pendant 10 secondes
3. Observer la disparition automatique

**Résultats attendus**:
- ✓ La suggestion disparaît après ~10 secondes
- ✓ Aucun impact sur le compteur de rejets
- ✓ Le callback `on_suggestion_timeout` est appelé

**Vérification**:
```python
# Dans les logs, chercher:
# - "suggestion_timeout"
```

---

### Test 5: Workflows Multiples

**Objectif**: Vérifier la sélection du meilleur match

**Étapes**:
1. Créer 2 workflows similaires mais différents
2. Commencer une séquence qui matche les deux
3. Observer quelle suggestion apparaît

**Résultats attendus**:
- ✓ Le workflow avec la meilleure confiance est suggéré
- ✓ Un seul workflow est suggéré à la fois
- ✓ La priorité ajustée est prise en compte

---

### Test 6: Tolérance de Position

**Objectif**: Vérifier que la tolérance de 50px fonctionne

**Étapes**:
1. Enregistrer un workflow avec des clics précis
2. Rejouer en cliquant légèrement à côté (< 50px)
3. Observer si le match fonctionne

**Résultats attendus**:
- ✓ Le workflow est détecté malgré le décalage
- ✓ La confiance reste élevée (> 80%)
- ✓ Au-delà de 50px, le match échoue

---

### Test 7: Fenêtre Différente

**Objectif**: Vérifier le filtrage par fenêtre

**Étapes**:
1. Enregistrer un workflow dans la Calculatrice
2. Ouvrir une autre application (ex: gedit)
3. Effectuer des actions similaires
4. Observer qu'aucune suggestion n'apparaît

**Résultats attendus**:
- ✓ Pas de suggestion dans une fenêtre différente
- ✓ Le filtrage par fenêtre fonctionne
- ✓ Les workflows sont spécifiques à l'application

---

## 🔍 Vérifications Techniques

### Vérifier les Workflows Disponibles

```bash
# Lister les workflows
ls -la geniusia2/data/user_profiles/workflows/

# Afficher le contenu d'un workflow
cat geniusia2/data/user_profiles/workflows/workflow_*.json | jq .
```

### Vérifier les Logs en Temps Réel

```bash
# Tous les événements
tail -f geniusia2/data/logs/logs_2025-11-19.json

# Seulement les workflows
tail -f geniusia2/data/logs/logs_2025-11-19.json | grep workflow

# Seulement les suggestions
tail -f geniusia2/data/logs/logs_2025-11-19.json | grep suggestion
```

### Vérifier l'État du SuggestionManager

```python
# Dans une console Python avec l'app en cours
from geniusia2.core.orchestrator import Orchestrator

# Accéder au SuggestionManager
stats = orchestrator.suggestion_manager.get_stats()
print(stats)

# Vérifier les rejets
print(orchestrator.suggestion_manager.workflow_rejections)

# Vérifier les ajustements
print(orchestrator.suggestion_manager.workflow_priority_adjustments)
```

---

## 📊 Métriques à Collecter

### Pendant les Tests

| Métrique | Valeur Attendue | Valeur Réelle |
|----------|-----------------|---------------|
| Temps de détection | < 2s | |
| Confiance moyenne | > 80% | |
| Taux de faux positifs | < 10% | |
| Taux de faux négatifs | < 5% | |
| Temps d'exécution | ~500ms/action | |

### Après les Tests

```bash
# Analyser les logs
python3 analyser_logs_tests.py
```

---

## 🐛 Problèmes Courants

### Problème 1: Aucune Suggestion n'Apparaît

**Causes possibles**:
- Pas de workflows enregistrés
- Confiance < 80%
- Fenêtre différente
- Vérification périodique désactivée

**Solutions**:
```bash
# Vérifier les workflows
ls geniusia2/data/user_profiles/workflows/

# Vérifier les logs
tail -f geniusia2/data/logs/logs_*.json | grep workflow_match

# Réduire le seuil temporairement (pour debug)
# Dans config: "min_confidence": 0.60
```

### Problème 2: Suggestions Trop Fréquentes

**Causes possibles**:
- Seuil de confiance trop bas
- Tolérance de position trop large
- Workflows trop génériques

**Solutions**:
- Augmenter `min_confidence` à 0.85
- Réduire `position_tolerance` à 30px
- Affiner les workflows enregistrés

### Problème 3: Exécution Échoue

**Causes possibles**:
- Élément UI introuvable
- Timing trop rapide
- Fenêtre changée

**Solutions**:
- Vérifier les logs de TaskReplayEngine
- Augmenter les délais entre actions
- Vérifier que la fenêtre est au premier plan

---

## ✅ Checklist de Validation

### Fonctionnalités Core

- [ ] Détection de workflow fonctionne
- [ ] Suggestions apparaissent dans les 2s
- [ ] Confiance > 80% pour les bons matchs
- [ ] Acceptation complète le workflow
- [ ] Rejet incrémente le compteur
- [ ] Timeout après 10 secondes
- [ ] Ajustement après 3 rejets

### Performance

- [ ] Latence de détection < 2s
- [ ] Pas de lag pendant l'utilisation
- [ ] Mémoire stable
- [ ] CPU raisonnable

### Robustesse

- [ ] Tolérance de position fonctionne
- [ ] Filtrage par fenêtre fonctionne
- [ ] Gestion des erreurs correcte
- [ ] Pas de crash

---

## 📝 Rapport de Test

### Template à Remplir

```markdown
# Rapport de Test - Mode Assisté

**Date**: 2025-11-19
**Testeur**: [Nom]
**Durée**: [XX minutes]

## Résultats Globaux

- Tests réussis: X/7
- Bugs trouvés: X
- Améliorations suggérées: X

## Détails par Test

### Test 1: Détection de Workflow
- Statut: ✓ / ✗
- Notes: ...

### Test 2: Acceptation
- Statut: ✓ / ✗
- Notes: ...

[etc.]

## Bugs Identifiés

1. [Description du bug]
   - Sévérité: Critique / Importante / Mineure
   - Reproduction: [Étapes]
   - Logs: [Extraits]

## Recommandations

1. [Recommandation 1]
2. [Recommandation 2]

## Conclusion

[Résumé global]
```

---

## 🚀 Prochaines Étapes

Après les tests:

1. **Si tout fonctionne** ✓
   - Passer à Task 8 (ajustement des seuils)
   - Ou améliorer l'UI (Tasks 4 & 5)

2. **Si des bugs sont trouvés** ✗
   - Documenter dans le rapport
   - Prioriser les corrections
   - Re-tester après correction

3. **Si des améliorations sont identifiées** ⚠️
   - Ajouter dans le backlog
   - Évaluer la priorité
   - Planifier l'implémentation

---

**Bon test ! 🧪**
