4.7 KiB
4.7 KiB
✅ Mode Assisté - Intégration dans l'Orchestrator
🎉 Ce qui vient d'être fait
Modifications de orchestrator.py
1. Imports Ajoutés
from .suggestion_manager import SuggestionManager
from .task_replay import TaskReplayEngine
2. Initialisation dans __init__
# Gestionnaire de suggestions (Mode Assisté)
self.suggestion_manager = SuggestionManager(
learning_manager=learning_manager,
embeddings_manager=learning_manager.embeddings_manager,
logger=logger,
config=self.config
)
# Moteur de rejeu pour exécution des suggestions
self.replay_engine = TaskReplayEngine(
learning_manager=learning_manager,
embeddings_manager=learning_manager.embeddings_manager,
vision_utils=vision_utils,
input_utils=self.input_utils,
logger=logger,
config=self.config
)
# Connecter les callbacks
self.suggestion_manager.on_suggestion_created = self._on_suggestion_created
self.suggestion_manager.on_suggestion_accepted = self._on_suggestion_accepted
self.suggestion_manager.on_suggestion_rejected = self._on_suggestion_rejected
self.suggestion_manager.on_suggestion_timeout = self._on_suggestion_timeout
3. Nouvelles Méthodes Ajoutées
Capture de Contexte :
_capture_context_for_suggestion()- Capture screenshot + embedding
Callbacks :
_on_suggestion_created()- Affiche la suggestion dans la GUI_on_suggestion_accepted()- Exécute la suggestion_on_suggestion_rejected()- Masque la suggestion_on_suggestion_timeout()- Gère l'expiration
Exécution :
_execute_suggestion()- Exécute via TaskReplayEngine
API Publique :
check_for_suggestions()- Vérifie et crée des suggestionsaccept_current_suggestion()- Accepte (appelé par GUI sur Entrée)reject_current_suggestion()- Rejette (appelé par GUI sur Échap)
🔄 Flux Complet
1. Utilisateur effectue une action
↓
2. Orchestrator.check_for_suggestions()
↓
3. _capture_context_for_suggestion()
├─ Capture screenshot
├─ Génère embedding CLIP
└─ Retourne contexte
↓
4. suggestion_manager.create_suggestion(context)
├─ Recherche dans FAISS
├─ Calcule confiance
└─ Si confiance >= 0.75 → Crée suggestion
↓
5. _on_suggestion_created(suggestion)
├─ Log l'événement
└─ gui.show_suggestion(suggestion)
↓
6. Utilisateur appuie sur une touche
├─ Entrée → accept_current_suggestion()
│ ├─ _on_suggestion_accepted()
│ └─ _execute_suggestion()
│ └─ replay_engine.replay_task()
│
├─ Échap → reject_current_suggestion()
│ └─ _on_suggestion_rejected()
│
└─ Timeout (10s) → _on_suggestion_timeout()
📊 État Actuel
✅ Fait
- SuggestionManager - Complet (300 lignes)
- Intégration Orchestrator - Complet (200 lignes ajoutées)
- Callbacks - Tous implémentés
- Exécution - Via TaskReplayEngine
- API publique - Prête pour la GUI
🔄 Reste à Faire
- Overlay GUI - Affichage visuel des suggestions
- Gestion des touches - Entrée/Échap/Alt+C dans la GUI
- Tests - Tester le flux complet
🎯 Prochaine Étape
Modifier la GUI pour :
- Afficher l'overlay de suggestion
- Gérer les touches clavier
- Appeler
orchestrator.accept_current_suggestion()sur Entrée - Appeler
orchestrator.reject_current_suggestion()sur Échap
📝 Utilisation
Dans le Code
# Créer l'orchestrator (déjà fait dans main.py)
orchestrator = Orchestrator(...)
# Vérifier les suggestions périodiquement
orchestrator.check_for_suggestions()
# Ou après une action utilisateur
def on_user_action(action):
# ... traiter l'action ...
# Vérifier si on peut suggérer quelque chose
orchestrator.check_for_suggestions()
Dans la GUI
# Afficher une suggestion
def show_suggestion(self, suggestion):
# Créer overlay
# Afficher task_name, confidence, description
pass
# Gérer les touches
def keyPressEvent(self, event):
if event.key() == Qt.Key_Return:
self.orchestrator.accept_current_suggestion()
elif event.key() == Qt.Key_Escape:
self.orchestrator.reject_current_suggestion()
✅ Vérification
# Vérifier que tout compile
geniusia2/venv/bin/python -c "
from geniusia2.core.orchestrator import Orchestrator
from geniusia2.core.suggestion_manager import SuggestionManager
print('✅ Imports OK')
"
🎉 Résumé
L'intégration du Mode Assisté dans l'Orchestrator est COMPLÈTE !
Il reste maintenant à :
- Modifier la GUI pour afficher les suggestions
- Gérer les touches clavier
- Tester le tout
Temps estimé restant : ~1h (GUI + tests)
On continue avec la GUI ? 🚀