4.6 KiB
4.6 KiB
✅ Logs GUI Connectés
🎯 Problème Résolu
Les informations (actions observées, patterns, workflows) ne remontaient pas dans la GUI car l'orchestrateur n'appelait pas les méthodes de logging GUI.
🔧 Corrections Apportées
1. Correction de l'erreur start_button
Fichier: geniusia2/gui/improved_gui.py
Supprimé les références à start_button qui n'existe pas (l'application démarre automatiquement).
# AVANT (causait une erreur)
self.start_button.setEnabled(False)
# APRÈS (corrigé)
# Pas de référence à start_button
2. Ajout des Logs dans l'Orchestrateur
Fichier: geniusia2/core/orchestrator.py
a) Log au démarrage
def run(self):
# ...
# LOG GUI: Démarrage de l'observation
if hasattr(self, 'log_to_gui'):
self.log_to_gui("🚀", "Démarrage de l'observation...", "info")
self.log_to_gui("👀", "Observation active - En attente d'actions...", "success")
b) Mise à jour périodique des statistiques
# Mettre à jour les stats GUI périodiquement (toutes les 10 itérations)
gui_update_counter += 1
if gui_update_counter >= 10 and hasattr(self, 'update_gui_stats'):
current_event_count = len(self.event_capture.events)
if current_event_count != last_event_count:
# Nouvelles actions détectées
workflows_count = len(self.learning_manager.get_all_tasks())
patterns_count = len(self.workflow_detector.detected_workflows) if hasattr(self.workflow_detector, 'detected_workflows') else 0
self.update_gui_stats(
actions_count=current_event_count,
patterns_count=patterns_count,
workflows_count=workflows_count
)
# Log seulement si de nouvelles actions
if current_event_count > last_event_count and hasattr(self, 'log_to_gui'):
new_actions = current_event_count - last_event_count
if new_actions > 0:
window = self.current_window or "Application"
self.log_to_gui("👀", f"{new_actions} action(s) observée(s) dans {window}", "info")
c) Log quand un pattern est détecté
def _on_pattern_detected(self, pattern: Dict[str, Any]):
# ...
# LOG GUI: Pattern détecté
if hasattr(self, 'log_to_gui'):
self.log_to_gui("🎯", f"Pattern détecté ! ({pattern['repetitions']} répétitions)", "success")
d) Log quand une tâche est créée
# LOG GUI: Tâche créée
if hasattr(self, 'log_to_gui'):
self.log_to_gui("📚", f"Tâche apprise : {task.task_name}", "info")
# Mettre à jour les stats (on compte les tâches comme workflows)
if hasattr(self, 'update_gui_stats'):
workflows_count = len(self.learning_manager.get_all_tasks())
self.update_gui_stats(workflows_count=workflows_count)
📊 Informations Affichées
La GUI affiche maintenant :
Logs en Temps Réel
- 🚀 Démarrage de l'observation
- 👀 Actions observées (avec nom de la fenêtre)
- 🎯 Patterns détectés (avec nombre de répétitions)
- 📚 Tâches apprises (avec description)
Statistiques
- Actions : Nombre d'actions utilisateur capturées
- Patterns : Nombre de patterns répétitifs détectés
- Workflows : Nombre de tâches apprises
🧪 Test
Pour tester :
./geniusia2/run.sh
Vous devriez voir :
- ✅ L'application démarre sans erreur
- ✅ La GUI s'affiche
- ✅ Les logs apparaissent dans le panneau de logs :
- "🚀 Démarrage de l'observation..."
- "👀 Observation active - En attente d'actions..."
- ✅ Quand vous effectuez des actions (clics, touches), elles sont comptées
- ✅ Les statistiques se mettent à jour toutes les 10 itérations
- ✅ Si vous répétez une action 3 fois, un pattern est détecté
🎯 Prochaines Étapes
Pour améliorer encore plus :
-
Ajouter plus de logs :
- Changements de mode
- Suggestions en mode assisté
- Erreurs détaillées
- Fine-tuning
-
Optimiser la fréquence :
- Actuellement : mise à jour toutes les 10 itérations
- Peut être ajusté selon les besoins
-
Ajouter des filtres :
- Filtrer les logs par niveau (info, success, warning, error)
- Filtrer par type d'événement
📝 Notes Techniques
- Tous les appels utilisent
hasattr()pour vérifier que les méthodes existent - Cela permet de garder la compatibilité avec le mode headless
- Les logs sont thread-safe grâce aux signaux Qt
- Les statistiques sont mises à jour de manière asynchrone
La GUI est maintenant pleinement fonctionnelle et connectée ! 🎉