6.8 KiB
6.8 KiB
GUI Améliorée - Prête pour les Tests ! 🎉
✅ Tâches Complétées
Tâche 1 : HumanLogger ✅
- Classe complète pour messages lisibles
- Support des emojis et contexte
- Tests unitaires passent
Tâche 2 : LogsPanel ✅
- Widget Qt avec scroll intelligent
- Limite de 30 messages
- Auto-scroll conditionnel
- Formatage avec timestamp et emoji
Tâche 4 : Modèles de données ✅
GUIState: État de la GUILogMessage: Messages de log (déjà dans logs_panel.py)- Sérialisation to_dict/from_dict
Tâche 5 : Système de signaux Qt ✅
GUISignals: Communication thread-safe- Signaux : log_message, update_stats, show_dialog, mode_changed, status_changed
- Tests de connexion passent
Tâche 6 : ImprovedGUI ✅
- Fenêtre principale 300x500px
- Panneau de statut avec mode et icône
- LogsPanel intégré
- Statistiques en temps réel
- Boutons Pause/Arrêter
- System tray avec menu contextuel
📁 Fichiers Créés
geniusia2/gui/
├── models.py # Modèles de données (GUIState)
├── signals.py # Système de signaux Qt
├── improved_gui.py # Interface principale améliorée
├── logs_panel.py # Panneau de logs (déjà fait)
└── human_logger.py # Logger lisible (déjà fait)
Tests:
├── test_improved_gui.py # Test complet de la GUI
├── test_logs_panel_simple.py # Tests unitaires LogsPanel
└── test_logs_panel_visual.py # Test visuel LogsPanel
🚀 Comment Tester
Test Rapide
source geniusia2/venv/bin/activate
python3 test_improved_gui.py
Ce test va :
- Afficher la GUI améliorée
- Simuler un workflow complet (14 étapes)
- Tester tous les composants
Ce que vous verrez :
- ✅ Démarrage du système
- 👀 Observation d'actions
- 🎯 Détection de patterns
- 📚 Apprentissage de workflows
- 💡 Changements de mode (Shadow → Assist → Copilot → Auto)
- 🧠 Fine-tuning (collecte, training, terminé)
- ⚠️ Messages d'erreur et warnings
- 📝 Test de la limite de 30 logs
🎨 Fonctionnalités de la GUI
Panneau de Statut
- Mode actuel avec icône et couleur
- 👀 Observation (bleu)
- 💡 Suggestions (orange)
- 🤝 Copilote (violet)
- 🤖 Autonome (vert)
- Statut : En attente / En cours / En pause
Statistiques
- Actions observées
- Patterns détectés
- Workflows appris
- Fine-tuning (quand actif)
Journal d'Activité (LogsPanel)
- Affiche les 5 derniers messages
- Scrollable jusqu'à 30 messages
- Auto-scroll intelligent
- Formatage avec timestamp (HH:MM) et emoji
- Couleurs par niveau (info, success, warning, error)
Boutons de Contrôle
- Pause : Met en pause / Reprend
- Arrêter : Arrête le système
System Tray
- Icône dans la barre des tâches Ubuntu
- Menu contextuel :
- Afficher
- Masquer
- Quitter
- Clic simple : Afficher/Masquer
- Minimisation vers le tray au lieu de fermer
🔧 Intégration avec l'Orchestrator
Pour intégrer la GUI avec l'Orchestrator :
from geniusia2.gui import ImprovedGUI, GUISignals
# Dans l'Orchestrator
class Orchestrator:
def __init__(self):
# ...
self.gui_signals = GUISignals()
def on_action_observed(self, action):
# Envoyer un log
self.gui_signals.emit_log(
"👀",
f"Action dans {action.window}",
"info"
)
# Mettre à jour les stats
self.gui_signals.emit_stats_update({
'actions_count': self.actions_count,
'patterns_count': self.patterns_count,
'workflows_count': self.workflows_count
})
def on_mode_change(self, new_mode):
self.gui_signals.emit_mode_change(new_mode)
self.gui_signals.emit_log(
"✅",
f"Mode {new_mode} activé",
"success"
)
# Dans main.py
gui = ImprovedGUI(orchestrator)
orchestrator.gui_signals = gui.signals
# Connecter les signaux de contrôle
gui.start_requested.connect(orchestrator.start)
gui.stop_requested.connect(orchestrator.stop)
gui.pause_requested.connect(orchestrator.pause)
📊 Tests à Effectuer
Tests Visuels
- Fenêtre s'affiche correctement (300x500px)
- Panneau de statut affiche le mode
- Statistiques se mettent à jour
- Logs s'affichent avec timestamp et emoji
- Scroll fonctionne correctement
- Auto-scroll uniquement si en bas
- Limite de 30 logs respectée
- Boutons Pause/Arrêter fonctionnent
- System tray visible dans la barre Ubuntu
- Menu contextuel du tray fonctionne
- Minimisation vers le tray
Tests Fonctionnels
- Changements de mode (Shadow → Assist → Copilot → Auto)
- Mise à jour des statistiques en temps réel
- Messages de différents niveaux (info, success, warning, error)
- Fine-tuning (collecte, training, terminé)
- Gestion de la pause
- Arrêt propre du système
🎯 Prochaines Étapes (Optionnelles)
Tâche 3 : InteractiveDialog
Pour les dialogues avec timeout (ex: "Est-ce que je peux essayer ?")
Tâche 9 : Intégration HumanLogger dans Orchestrator
Connecter les événements de l'Orchestrator aux messages de la GUI
Tâche 11 : Système de logs techniques
Logs détaillés dans geniusia2/logs/debug.log pour debugging
💡 Utilisation
Lancer la GUI de test
source geniusia2/venv/bin/activate
python3 test_improved_gui.py
Tester avec l'application réelle
# Modifier main.py pour utiliser ImprovedGUI au lieu de MinimalGUI
# Puis lancer normalement
./geniusia2/run.sh
✨ Points Forts
- Interface minimaliste - 300x500px, discrète
- Logs lisibles - Messages simples avec emojis
- Auto-scroll intelligent - Ne dérange pas l'utilisateur
- System tray - Continue en arrière-plan
- Statistiques en temps réel - Visibilité sur l'activité
- Gestion mémoire - Limite de 30 logs
- Thread-safe - Communication via signaux Qt
- Extensible - Facile d'ajouter de nouvelles fonctionnalités
🐛 Debugging
Si vous rencontrez des problèmes :
-
Vérifier PyQt5 :
source geniusia2/venv/bin/activate python3 -c "from PyQt5.QtWidgets import QApplication; print('OK')" -
Vérifier les imports :
python3 -c "from geniusia2.gui import ImprovedGUI; print('OK')" -
Logs de debug : Les logs Python sont dans la console
📝 Notes
- La GUI est non-bloquante : l'Orchestrator continue de fonctionner
- Les signaux Qt sont thread-safe : pas de problèmes de concurrence
- Le system tray permet de continuer en arrière-plan
- La limite de 30 logs évite les problèmes de mémoire
Statut : ✅ PRÊT POUR LES TESTS
La GUI améliorée est fonctionnelle et prête à être testée ! 🚀