# 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.
