245 lines
6.8 KiB
Markdown
245 lines
6.8 KiB
Markdown
# 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 GUI
|
|
- `LogMessage` : 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
|
|
```bash
|
|
source geniusia2/venv/bin/activate
|
|
python3 test_improved_gui.py
|
|
```
|
|
|
|
Ce test va :
|
|
1. Afficher la GUI améliorée
|
|
2. Simuler un workflow complet (14 étapes)
|
|
3. 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 :
|
|
|
|
```python
|
|
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
|
|
```bash
|
|
source geniusia2/venv/bin/activate
|
|
python3 test_improved_gui.py
|
|
```
|
|
|
|
### Tester avec l'application réelle
|
|
```bash
|
|
# Modifier main.py pour utiliser ImprovedGUI au lieu de MinimalGUI
|
|
# Puis lancer normalement
|
|
./geniusia2/run.sh
|
|
```
|
|
|
|
## ✨ Points Forts
|
|
|
|
1. **Interface minimaliste** - 300x500px, discrète
|
|
2. **Logs lisibles** - Messages simples avec emojis
|
|
3. **Auto-scroll intelligent** - Ne dérange pas l'utilisateur
|
|
4. **System tray** - Continue en arrière-plan
|
|
5. **Statistiques en temps réel** - Visibilité sur l'activité
|
|
6. **Gestion mémoire** - Limite de 30 logs
|
|
7. **Thread-safe** - Communication via signaux Qt
|
|
8. **Extensible** - Facile d'ajouter de nouvelles fonctionnalités
|
|
|
|
## 🐛 Debugging
|
|
|
|
Si vous rencontrez des problèmes :
|
|
|
|
1. **Vérifier PyQt5** :
|
|
```bash
|
|
source geniusia2/venv/bin/activate
|
|
python3 -c "from PyQt5.QtWidgets import QApplication; print('OK')"
|
|
```
|
|
|
|
2. **Vérifier les imports** :
|
|
```bash
|
|
python3 -c "from geniusia2.gui import ImprovedGUI; print('OK')"
|
|
```
|
|
|
|
3. **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 ! 🚀
|