# Requirements - Amélioration GUI et Logs

## Introduction

GeniusIA v2 nécessite une interface utilisateur claire et des logs lisibles pour permettre à l'utilisateur de comprendre ce qui se passe et faciliter le debugging. L'interface actuelle manque de visibilité et les logs sont trop techniques.

## Glossary

- **GUI**: Interface graphique utilisateur (Graphical User Interface)
- **System Tray**: Zone de notification dans la barre des tâches (Ubuntu)
- **Popup**: Fenêtre modale temporaire pour dialogues
- **Human Logs**: Messages simples destinés à l'utilisateur
- **Technical Logs**: Logs détaillés pour debugging
- **Mode**: État opérationnel (Shadow/Suggestions/Copilote/Autonome)
- **Fine-tuning**: Processus d'amélioration du modèle d'embeddings

## Requirements

### Requirement 1: Interface Minimaliste

**User Story:** En tant qu'utilisateur, je veux une interface discrète qui ne me dérange pas, pour pouvoir travailler normalement tout en gardant un œil sur l'IA.

#### Acceptance Criteria

1. WHEN l'application démarre THEN la GUI SHALL créer une fenêtre de 300x400 pixels maximum
2. WHEN l'utilisateur clique sur minimiser THEN la GUI SHALL se réduire dans la barre des tâches Ubuntu
3. WHEN l'application tourne THEN la GUI SHALL afficher une icône dans le system tray
4. WHEN l'utilisateur clique sur l'icône system tray THEN la GUI SHALL afficher un menu avec options (Afficher/Masquer/Quitter)
5. WHEN la fenêtre est fermée THEN l'application SHALL continuer à tourner en arrière-plan

### Requirement 2: Logs Humains Lisibles

**User Story:** En tant qu'utilisateur, je veux voir ce que l'IA fait en langage simple, pour comprendre son comportement sans jargon technique.

#### Acceptance Criteria

1. WHEN une action est observée THEN la GUI SHALL afficher un message simple comme "👀 J'observe vos actions..."
2. WHEN un pattern est détecté THEN la GUI SHALL afficher "🎯 Tiens ! Vous avez fait 3 fois la même chose"
3. WHEN un workflow est appris THEN la GUI SHALL afficher "📚 J'apprends: [nom du workflow]"
4. WHEN le mode change THEN la GUI SHALL afficher "✅ Mode [nouveau mode] activé"
5. WHEN une erreur survient THEN la GUI SHALL afficher un message compréhensible sans stack trace

### Requirement 3: Historique des Logs

**User Story:** En tant qu'utilisateur, je veux voir les dernières actions pour comprendre ce qui s'est passé récemment.

#### Acceptance Criteria

1. WHEN des logs sont affichés THEN la GUI SHALL montrer les 5 dernières actions visibles
2. WHEN l'utilisateur scrolle THEN la GUI SHALL permettre de voir jusqu'à 30 actions
3. WHEN l'historique dépasse 30 actions THEN le système SHALL supprimer les plus anciennes
4. WHEN un nouveau log arrive THEN la GUI SHALL auto-scroller vers le bas si déjà en bas
5. WHEN l'utilisateur scrolle manuellement THEN la GUI SHALL ne pas auto-scroller

### Requirement 4: Dialogues Interactifs

**User Story:** En tant qu'utilisateur, je veux que l'IA me demande mon avis avant de changer de comportement, pour garder le contrôle.

#### Acceptance Criteria

1. WHEN un pattern est détecté THEN la GUI SHALL afficher un popup "Est-ce que je peux essayer ?"
2. WHEN un popup est affiché THEN l'application SHALL continuer à fonctionner (non-bloquant)
3. WHEN 10 secondes passent sans réponse THEN le popup SHALL se fermer automatiquement
4. WHEN l'utilisateur clique "Oui" THEN le système SHALL basculer en mode Suggestions
5. WHEN l'utilisateur clique "Non" THEN le système SHALL rester en mode Shadow

### Requirement 5: Indicateurs de Statut

**User Story:** En tant qu'utilisateur, je veux voir l'état actuel de l'IA en un coup d'œil, pour savoir ce qu'elle fait.

#### Acceptance Criteria

1. WHEN la GUI est affichée THEN elle SHALL montrer le mode actuel avec icône (👀/💡/🤖/⚡)
2. WHEN des actions sont observées THEN la GUI SHALL afficher le compteur d'actions
3. WHEN le fine-tuning est en cours THEN la GUI SHALL afficher "🧠 Apprentissage en cours..."
4. WHEN le fine-tuning est terminé THEN la GUI SHALL afficher "✅ Modèle amélioré"
5. WHEN aucune activité THEN la GUI SHALL afficher "💤 En attente..."

### Requirement 6: Logs Techniques pour Debugging

**User Story:** En tant que développeur, je veux des logs détaillés dans un fichier, pour pouvoir debugger les problèmes.

#### Acceptance Criteria

1. WHEN l'application tourne THEN le système SHALL écrire les logs techniques dans `geniusia2/logs/debug.log`
2. WHEN un événement survient THEN le log SHALL inclure timestamp, niveau, composant et message
3. WHEN une erreur survient THEN le log SHALL inclure la stack trace complète
4. WHEN le fichier dépasse 10MB THEN le système SHALL créer un nouveau fichier avec rotation
5. WHEN les logs sont écrits THEN ils SHALL être flushés immédiatement pour éviter les pertes

### Requirement 7: Communication GUI-Orchestrator

**User Story:** En tant que système, je dois pouvoir envoyer des messages de l'Orchestrator vers la GUI, pour tenir l'utilisateur informé.

#### Acceptance Criteria

1. WHEN l'Orchestrator détecte un événement THEN il SHALL envoyer un message à la GUI via signal Qt
2. WHEN un message est envoyé THEN il SHALL inclure type, contenu et timestamp
3. WHEN la GUI reçoit un message THEN elle SHALL l'afficher dans les 100ms
4. WHEN un dialogue est nécessaire THEN l'Orchestrator SHALL déclencher un popup via la GUI
5. WHEN l'utilisateur répond THEN la GUI SHALL notifier l'Orchestrator via callback

### Requirement 8: Statistiques Visibles

**User Story:** En tant qu'utilisateur, je veux voir ce que l'IA a appris, pour comprendre sa progression.

#### Acceptance Criteria

1. WHEN la GUI est affichée THEN elle SHALL montrer le nombre d'actions observées aujourd'hui
2. WHEN des workflows sont détectés THEN la GUI SHALL afficher le nombre de workflows
3. WHEN le fine-tuning collecte des exemples THEN la GUI SHALL afficher "X exemples collectés"
4. WHEN le fine-tuning est déclenché THEN la GUI SHALL afficher une barre de progression
5. WHEN les stats sont affichées THEN elles SHALL se mettre à jour en temps réel

### Requirement 9: Compatibilité Ubuntu

**User Story:** En tant qu'utilisateur Ubuntu, je veux que l'interface fonctionne nativement, sans problèmes d'affichage.

#### Acceptance Criteria

1. WHEN l'application démarre sur Ubuntu THEN la GUI SHALL utiliser le thème système
2. WHEN l'icône system tray est créée THEN elle SHALL être visible dans la barre supérieure
3. WHEN des popups sont affichés THEN ils SHALL respecter le window manager Ubuntu
4. WHEN la fenêtre est redimensionnée THEN elle SHALL respecter les contraintes de taille
5. WHEN l'application se ferme THEN elle SHALL libérer proprement les ressources système

### Requirement 10: Messages Contextuels

**User Story:** En tant qu'utilisateur, je veux que les messages soient adaptés au contexte, pour mieux comprendre ce qui se passe.

#### Acceptance Criteria

1. WHEN un workflow est détecté pour la première fois THEN le message SHALL expliquer ce qu'est un workflow
2. WHEN le mode progressif propose de basculer THEN le message SHALL expliquer ce que ça change
3. WHEN une erreur survient THEN le message SHALL suggérer une action corrective
4. WHEN le fine-tuning démarre THEN le message SHALL expliquer pourquoi
5. WHEN l'utilisateur n'a pas d'activité depuis 5 min THEN la GUI SHALL afficher un message d'encouragement
