3.5 KiB
✅ Corrections des Erreurs GUI
🐛 Erreurs Corrigées
1. 'NoneType' object has no attribute 'isoformat'
Fichier: geniusia2/core/learning_manager.py
Problème: task.last_execution peut être None mais le code essayait d'appeler .isoformat() sans vérifier.
Solution:
# AVANT
"last_execution": task.last_execution.isoformat()
# APRÈS
"last_execution": task.last_execution.isoformat() if task.last_execution else None
2. 'ImprovedGUI' object has no attribute 'show_notification'
Fichier: geniusia2/main.py et geniusia2/core/orchestrator.py
Problème: Le code appelait self.gui.show_notification() mais cette méthode n'existe pas dans ImprovedGUI. Elle existe dans MinimalGUI mais pas dans la nouvelle GUI.
Solution: Remplacer tous les appels à show_notification par log_to_gui.
Corrections dans main.py
# AVANT
if self.gui:
self.gui.show_notification(
f"Erreur: {error}",
"error"
)
# APRÈS
if self.orchestrator and hasattr(self.orchestrator, 'log_to_gui'):
self.orchestrator.log_to_gui("❌", f"Erreur: {error}", "error")
Corrections dans orchestrator.py
Tous les appels à self.gui.show_notification() ont été remplacés par :
if hasattr(self, 'log_to_gui'):
self.log_to_gui("emoji", "message", "level")
Liste des remplacements :
- ✅ Tâche apprise
- 🎯 Workflow détecté
- ⚠️ Élément introuvable
- 👀 Observation d'action
- ⚠️ Action bloquée (whitelist)
- ✔️ Action exécutée
- ⚠️ Échec d'exécution - Rollback
- ❌ Erreur d'exécution
- 🔄 Rollback effectué
- 🎓 Mode Progressif activé
- ✅ Mode Assist activé
- 👀 Mode Shadow maintenu
🎯 Avantages de la Solution
Uniformité
- Tous les messages passent maintenant par le même système de logging
- Cohérence dans l'affichage des messages
Compatibilité
- Utilisation de
hasattr()pour vérifier l'existence des méthodes - Fonctionne en mode headless (sans GUI)
- Pas de crash si la GUI n'est pas initialisée
Meilleure Expérience
- Messages plus concis et clairs
- Emojis pour identification rapide
- Niveaux de log appropriés (info, success, warning, error)
🧪 Test
Pour tester les corrections :
./geniusia2/run.sh
Effectuez des actions répétitives (3 fois la même action) pour déclencher la détection de pattern.
Vous devriez voir :
- ✅ Pas d'erreur
'NoneType' object has no attribute 'isoformat' - ✅ Pas d'erreur
'ImprovedGUI' object has no attribute 'show_notification' - ✅ Les logs s'affichent correctement dans la GUI
- ✅ Les patterns sont détectés et affichés
- ✅ Les tâches sont créées et comptabilisées
📊 Statistiques Affichées
La GUI affiche maintenant correctement :
- Actions : Nombre d'événements capturés
- Patterns : Nombre de workflows détectés
- Workflows : Nombre de tâches apprises
🔍 Vérification
Pour vérifier que tout fonctionne :
- Démarrage : Vous devez voir "🚀 Démarrage de l'observation..."
- Actions : Effectuez des clics → compteur d'actions augmente
- Pattern : Répétez 3 fois la même action → "🎯 Pattern détecté !"
- Tâche : Après le pattern → "📚 Tâche apprise : [nom]"
- Stats : Les compteurs se mettent à jour automatiquement
🎉 Résultat
L'application fonctionne maintenant sans erreur et affiche correctement toutes les informations dans la GUI !
Toutes les erreurs sont corrigées ! 🚀