# Implementation Plan - Amélioration GUI et Logs - [x] 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_ - [x] 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_ - [x] 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_ - [x] 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_ - [x] 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_ - [x] 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_ - [x] 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_ - [x] 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** - [x] 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.