6.3 KiB
Implementation Plan - Amélioration GUI et Logs
-
1. Créer le composant HumanLogger
- Implémenter la classe HumanLogger avec méthodes de formatage
- Créer des méthodes pour chaque type de message (observation, pattern, workflow, mode, fine-tuning)
- Ajouter support pour emojis et messages contextuels
- Requirements: 2.1, 2.2, 2.3, 2.4, 10.1, 10.2, 10.3, 10.4
-
1.1 Écrire des tests unitaires pour HumanLogger
- Tester le formatage des messages
- Vérifier les emojis corrects
- Tester les messages contextuels
- Requirements: 2.1, 2.2, 2.3, 2.4
-
2. Créer le composant LogsPanel
- Implémenter le widget Qt pour affichage des logs
- Ajouter système de scroll avec limite à 30 messages
- Implémenter auto-scroll conditionnel (seulement si déjà en bas)
- Ajouter formatage avec timestamp et emoji
- Requirements: 3.1, 3.2, 3.3, 3.4, 3.5
-
* 2.1 Écrire un test de propriété pour la limite de logs
- Property 1: Log History Bounds
- Validates: Requirements 3.3
-
* 2.2 Écrire des tests unitaires pour LogsPanel
- Tester l'ajout de logs
- Tester le scroll automatique
- Tester la limite de 30 messages
- Requirements: 3.1, 3.2, 3.3, 3.4, 3.5
-
3. Créer le composant InteractiveDialog
- Implémenter le dialogue Qt avec timeout de 10 secondes
- Ajouter callbacks pour réponses utilisateur (accept/reject)
- Implémenter fermeture automatique après timeout
- Rendre le dialogue non-bloquant
- Requirements: 4.1, 4.2, 4.3, 4.4, 4.5
-
* 3.1 Écrire un test de propriété pour le timeout
- Property 2: Timeout Consistency
- Validates: Requirements 4.3
-
* 3.2 Écrire des tests unitaires pour InteractiveDialog
- Tester le timeout automatique
- Tester les callbacks
- Tester le comportement non-bloquant
- Requirements: 4.1, 4.2, 4.3, 4.4, 4.5
-
4. Créer les modèles de données
- Implémenter LogMessage dataclass
- Implémenter GUIState dataclass
- Ajouter méthodes de sérialisation si nécessaire
- Requirements: 5.1, 5.2, 5.3, 5.4, 5.5, 8.1, 8.2, 8.3, 8.4, 8.5
-
5. Créer le système de signaux Qt
- Implémenter GUISignals avec pyqtSignal
- Ajouter signaux pour log_message, update_stats, show_dialog, mode_changed
- Documenter l'utilisation des signaux
- Requirements: 7.1, 7.2, 7.3, 7.4, 7.5
-
6. Créer la nouvelle ImprovedGUI
- Implémenter la fenêtre principale (300x400px)
- Ajouter le panneau de statut avec mode et icône
- Intégrer LogsPanel dans la fenêtre
- Ajouter les boutons Pause/Arrêter
- Requirements: 1.1, 5.1, 5.2, 5.3, 5.4, 5.5
-
7. Implémenter le System Tray
- Créer l'icône dans la barre des tâches Ubuntu
- Implémenter le menu contextuel (Afficher/Masquer/Quitter)
- Gérer la minimisation vers le tray
- Ajouter fallback si system tray non disponible
- Requirements: 1.2, 1.3, 1.4, 1.5, 9.1, 9.2, 9.3
-
* 7.1 Tester le system tray sur Ubuntu
- Vérifier l'icône dans la barre supérieure
- Tester le menu contextuel
- Tester la minimisation
- Requirements: 1.3, 1.4, 9.2
-
8. Implémenter l'affichage des statistiques
- Ajouter widget pour afficher actions observées
- Ajouter widget pour patterns détectés
- Ajouter widget pour workflows appris
- Ajouter indicateur de fine-tuning avec progression
- Implémenter mise à jour en temps réel
- Requirements: 8.1, 8.2, 8.3, 8.4, 8.5
-
* 8.1 Écrire un test de propriété pour l'affichage du mode
- Property 3: Mode Display Consistency
- Validates: Requirements 5.1
-
9. Intégrer HumanLogger dans l'Orchestrator
- Ajouter instance de HumanLogger dans Orchestrator
- Remplacer les logs techniques par des messages humains pour la GUI
- Envoyer les messages via les signaux Qt
- Garder les logs techniques dans le fichier debug.log
- Requirements: 2.1, 2.2, 2.3, 2.4, 7.1, 7.2, 7.3
-
* 9.1 Écrire un test de propriété pour l'ordre des messages
- Property 4: Message Ordering
- Validates: Requirements 2.1, 2.2, 2.3, 2.4
-
10. Connecter les dialogues interactifs
- Modifier Orchestrator pour déclencher des dialogues via signaux
- Implémenter callbacks pour réponses utilisateur
- Gérer le changement de mode basé sur les réponses
- Requirements: 4.1, 4.4, 4.5, 7.4, 7.5, 10.2
-
* 10.1 Écrire un test de propriété pour les dialogues non-bloquants
- Property 5: Non-blocking Dialogs
- Validates: Requirements 4.2
-
11. Implémenter le système de logs techniques
- Créer le répertoire geniusia2/logs si nécessaire
- Implémenter l'écriture dans debug.log avec format structuré
- Ajouter rotation des logs à 10MB
- Implémenter flush immédiat pour éviter pertes
- Gérer les erreurs (disque plein, permissions)
- Requirements: 6.1, 6.2, 6.3, 6.4, 6.5
-
* 11.1 Écrire des tests unitaires pour le système de logs
- Tester l'écriture dans le fichier
- Tester la rotation à 10MB
- Tester le flush immédiat
- Tester les fallbacks en cas d'erreur
- Requirements: 6.1, 6.2, 6.3, 6.4, 6.5
-
12. Implémenter les messages contextuels
- Ajouter logique pour détecter première fois (workflow, mode change)
- Créer messages explicatifs pour première utilisation
- Ajouter suggestions d'actions correctives pour erreurs
- Implémenter message d'encouragement après inactivité
- Requirements: 10.1, 10.2, 10.3, 10.4, 10.5
-
13. Tester la compatibilité Ubuntu
- Vérifier le thème système
- Tester le system tray dans la barre supérieure
- Vérifier les popups avec le window manager
- Tester le redimensionnement de fenêtre
- Vérifier la libération des ressources à la fermeture
- Requirements: 9.1, 9.2, 9.3, 9.4, 9.5
-
14. Migration et intégration finale
- Renommer minimal_gui.py → minimal_gui_old.py
- Renommer improved_gui.py → minimal_gui.py
- Mettre à jour main.py pour utiliser la nouvelle GUI
- Supprimer les anciens boutons (liste blanche, etc.)
- Nettoyer le code inutilisé
- Requirements: 1.1, 1.2, 1.3, 1.4, 1.5
-
* 14.1 Écrire des tests d'intégration
- Tester Orchestrator → GUI
- Tester Popup → Orchestrator
- Tester System Tray
- Requirements: 7.1, 7.2, 7.3, 7.4, 7.5
-
15. Checkpoint final - Vérifier que tout fonctionne
- Ensure all tests pass, ask the user if questions arise.