Files
2026-03-05 00:20:25 +01:00

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.