8.0 KiB
Améliorations du SuggestionManager - Implémentation Complète
Vue d'ensemble
Les améliorations du SuggestionManager pour le Mode Assisté ont été implémentées avec succès. Le système peut maintenant détecter les workflows en cours, créer des suggestions détaillées, et ajuster intelligemment les priorités basées sur les rejets/acceptations de l'utilisateur.
Fonctionnalités implémentées
1. check_workflow_match()
Requirement: 1.4
Méthode pour vérification périodique des correspondances de workflows.
Fonctionnalités:
- Compare les actions de session courante avec les workflows connus
- Utilise le WorkflowMatcher pour calculer les scores de correspondance
- Applique les ajustements de priorité basés sur l'historique de rejets
- Retourne le meilleur match si confiance > 80%
- Thread-safe avec lock pour éviter les suggestions multiples
Usage:
match = suggestion_manager.check_workflow_match(session_actions, workflows)
if match:
print(f"Match trouvé: {match.workflow_name} ({match.confidence:.2%})")
2. create_workflow_suggestion()
Requirement: 1.5
Crée une suggestion de workflow avec tous les détails nécessaires.
Fonctionnalités:
- Vérifie le seuil de confiance (80% par défaut)
- Crée une suggestion complète avec:
- Nom et ID du workflow
- Confiance et étapes matchées
- Liste complète des étapes restantes
- Aperçu des 3 prochaines étapes
- Timeout de 10 secondes
- Thread-safe
- Déclenche le callback on_suggestion_created
Structure de la suggestion:
{
"type": "workflow",
"workflow_id": "calc_001",
"workflow_name": "Calcul simple",
"confidence": 0.85,
"current_step": 2,
"total_steps": 5,
"matched_steps": 2,
"remaining_steps": [...], # Toutes les étapes restantes
"next_steps_preview": [...], # 3 prochaines étapes
"created_at": datetime.now(),
"timeout": 10.0
}
3. Tracking des rejets
Requirement: 3.3
Système de tracking des rejets par workflow avec ajustement automatique de priorité.
Fonctionnalités:
- Compteur de rejets par workflow_id
- Ajustement automatique après 3 rejets
- Formule:
confiance * (0.9 ^ (rejets // 3)) - Exemples:
- 3 rejets: confiance * 0.9 (90%)
- 6 rejets: confiance * 0.81 (81%)
- 9 rejets: confiance * 0.729 (72.9%)
Méthodes:
_track_workflow_rejection(workflow_id): Enregistre un rejet_apply_priority_adjustment(match): Applique l'ajustement au score
4. Tracking des acceptations
Requirement: 3.3
Système de récompense pour les workflows acceptés.
Fonctionnalités:
- Réduit le compteur de rejets de 2 à chaque acceptation
- Supprime l'ajustement de priorité si rejets < 3
- Encourage les workflows utiles
Méthode:
_track_workflow_acceptance(workflow_id): Enregistre une acceptation
5. Intégration dans accept/reject_suggestion
Requirements: 1.4, 3.3
Les méthodes existantes ont été améliorées pour supporter les workflows.
Modifications:
- Détection du type de suggestion (workflow vs action)
- Appel automatique du tracking pour les workflows
- Logging amélioré avec type et IDs
- Compatibilité maintenue avec les suggestions d'action existantes
Architecture
┌─────────────────────────────────────────────────────────┐
│ SuggestionManager │
├─────────────────────────────────────────────────────────┤
│ │
│ check_workflow_match() │
│ ↓ │
│ WorkflowMatcher.match_current_session() │
│ ↓ │
│ _apply_priority_adjustment() │
│ ↓ │
│ create_workflow_suggestion() │
│ ↓ │
│ [User accepts/rejects] │
│ ↓ │
│ _track_workflow_acceptance/rejection() │
│ │
├─────────────────────────────────────────────────────────┤
│ État: │
│ - workflow_rejections: Dict[str, int] │
│ - workflow_priority_adjustments: Dict[str, float] │
│ - current_suggestion: Optional[Dict] │
└─────────────────────────────────────────────────────────┘
Tests
Tous les tests passent avec succès:
- ✓ Test de syntaxe
- ✓ Test de présence des méthodes
- ✓ Test des imports
- ✓ Test des paramètres init
- ✓ Test de la logique de tracking
- ✓ Test de la logique d'acceptation
- ✓ Test de l'intégration accept/reject
- ✓ Test de couverture des requirements
Utilisation
Exemple complet
# 1. Initialiser le SuggestionManager
suggestion_manager = SuggestionManager(
learning_manager,
embeddings_manager,
logger,
config
)
# 2. Vérifier périodiquement les matchs (ex: toutes les 2s)
match = suggestion_manager.check_workflow_match(
session_actions,
workflows
)
# 3. Si match trouvé, créer la suggestion
if match:
suggestion = suggestion_manager.create_workflow_suggestion(match)
# 4. Afficher la suggestion à l'utilisateur
if suggestion:
print(f"Workflow détecté: {suggestion['workflow_name']}")
print(f"Confiance: {suggestion['confidence']:.2%}")
print(f"Étapes restantes: {len(suggestion['remaining_steps'])}")
# 5. L'utilisateur accepte ou rejette
if user_accepts:
suggestion_manager.accept_suggestion()
else:
suggestion_manager.reject_suggestion()
Configuration
config = {
"assist": {
"similarity_threshold": 0.75,
"suggestion_timeout": 10.0
},
"workflow": {
"position_tolerance": 50,
"min_confidence": 0.80
}
}
Prochaines étapes
Les améliorations suivantes sont prêtes pour l'intégration:
-
Task 3: Intégrer dans Orchestrator
- Appeler check_workflow_match() toutes les 2s en mode Assist
- Gérer les callbacks de suggestion
-
Task 4: Améliorer GUI Overlay
- Afficher les 3 prochaines étapes
- Ajouter barre de progression
-
Task 5: Améliorer TaskReplayEngine
- Feedback visuel par étape
- Arrêt sur échec
Compatibilité
- ✓ Compatible avec le code existant
- ✓ Pas de breaking changes
- ✓ Les suggestions d'action existantes continuent de fonctionner
- ✓ Thread-safe avec locks appropriés
Logs
Le système génère des logs détaillés pour le debugging:
workflow_match_found: Match détectéworkflow_suggestion_created: Suggestion crééeworkflow_suggestion_rejected_low_confidence: Rejet pour confiance basseworkflow_rejection_tracked: Rejet enregistréworkflow_priority_adjusted: Priorité ajustéeworkflow_acceptance_tracked: Acceptation enregistréepriority_adjustment_applied: Ajustement appliqué
Conclusion
✓ Task 2 complétée avec succès!
Toutes les fonctionnalités requises ont été implémentées:
- ✓ check_workflow_match() pour vérification périodique
- ✓ create_workflow_suggestion() avec détails des étapes
- ✓ Tracking des rejets (compteur par workflow)
- ✓ Ajustement de priorité après 3 rejets
- ✓ Requirements 1.4, 1.5, 3.3, 3.5 couverts