160 lines
6.3 KiB
Markdown
160 lines
6.3 KiB
Markdown
# 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.
|