Files
Geniusia_v2/docs/archive/old-summaries/LOGS_GUI_CONNECTES.md
2026-03-05 00:20:25 +01:00

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 :

  1. L'application démarre sans erreur
  2. La GUI s'affiche
  3. Les logs apparaissent dans le panneau de logs :
    • "🚀 Démarrage de l'observation..."
    • "👀 Observation active - En attente d'actions..."
  4. Quand vous effectuez des actions (clics, touches), elles sont comptées
  5. Les statistiques se mettent à jour toutes les 10 itérations
  6. Si vous répétez une action 3 fois, un pattern est détecté

🎯 Prochaines Étapes

Pour améliorer encore plus :

  1. Ajouter plus de logs :

    • Changements de mode
    • Suggestions en mode assisté
    • Erreurs détaillées
    • Fine-tuning
  2. Optimiser la fréquence :

    • Actuellement : mise à jour toutes les 10 itérations
    • Peut être ajusté selon les besoins
  3. 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 ! 🎉