Initial commit

This commit is contained in:
Dom
2026-03-05 00:20:25 +01:00
commit dcd4de9945
1954 changed files with 669380 additions and 0 deletions

View File

@@ -0,0 +1,190 @@
# Implementation Plan - Correction Système d'Apprentissage FAISS
## Objectif
Corriger les problèmes critiques du système d'apprentissage : index FAISS vide malgré 19+ tâches sauvegardées, processus zombies consommant 3GB+ RAM, et absence de suggestions après 3 jours de tests.
## Tasks
- [x] 1. Créer le FAISSIndexBuilder pour reconstruction d'index ✅ TERMINÉ
- Créer `geniusia2/core/faiss_index_builder.py`
- Implémenter `scan_tasks()` pour scanner tous les dossiers de tâches
- Implémenter `load_task_embeddings()` pour charger les embeddings depuis les signatures.pkl
- Implémenter `rebuild_index()` pour reconstruire l'index complet
- Implémenter `verify_index_integrity()` pour vérifier la cohérence
- _Requirements: 1.4, 6.1, 6.2, 6.3, 6.4, 6.5_
- **Résultat: 40 tâches scannées, 122 embeddings indexés**
- [ ]* 1.1 Écrire les property tests pour FAISSIndexBuilder
- **Property 25: Scan complet des tâches**
- **Property 26: Génération d'embeddings manquants**
- **Property 27: Construction d'index optimisé**
- **Property 28: Sauvegarde après reconstruction**
- **Property 29: Résilience aux erreurs**
- **Validates: Requirements 6.1, 6.2, 6.3, 6.4, 6.5**
- [x] 2. Implémenter le chargement automatique au démarrage ✅ TERMINÉ
- Modifier `geniusia2/core/learning_manager.py` pour charger les tâches existantes dans `__init__`
- Utiliser FAISSIndexBuilder pour reconstruire l'index si vide
- Ajouter logs pour tracer le chargement
- Gérer les erreurs de chargement (tâches corrompues)
- _Requirements: 1.1, 1.2, 1.3_
- **Résultat: 40 tâches chargées, 672 workflows détectés**
- [ ]* 2.1 Écrire les property tests pour chargement automatique
- **Property 1: Index chargé au démarrage**
- **Property 2: Ajout immédiat à l'index**
- **Property 3: Persistance immédiate**
- **Property 4: Reconstruction automatique**
- **Validates: Requirements 1.1, 1.2, 1.3, 1.4**
- [x] 3. Corriger l'arrêt propre des processus ✅ TERMINÉ
- Modifier `geniusia2/main.py` méthode `shutdown()` pour arrêter explicitement les listeners pynput
- Ajouter timeout de 5 secondes pour l'arrêt des threads
- Implémenter arrêt synchrone des threads de capture
- Forcer l'arrêt si timeout dépassé
- Vérifier que tous les threads sont bien arrêtés
- _Requirements: 2.1, 2.3, 2.4, 2.5_
- **Résultat: Arrêt propre en <5s, aucun processus zombie**
- [ ]* 3.1 Écrire les property tests pour arrêt propre
- **Property 6: Arrêt rapide**
- **Property 8: Arrêt synchrone des threads**
- **Property 9: Stop explicite des listeners**
- **Property 10: Threads daemon ou arrêt garanti**
- **Validates: Requirements 2.1, 2.3, 2.4, 2.5**
- [x] 4. Checkpoint - Vérifier que le système charge les tâches et s'arrête proprement ✅ VALIDÉ
- Lancer le système avec les 40 tâches existantes
- Vérifier que l'index FAISS contient les embeddings
- Tester l'arrêt avec Ctrl+C
- Vérifier qu'aucun processus zombie ne reste
- Mesurer la consommation mémoire
- **Résultat: Tous les tests passés, système stable et fonctionnel**
- [ ] 5. Créer le MemoryMonitor pour gestion mémoire
- Créer `geniusia2/core/memory_monitor.py`
- Implémenter `get_current_memory()` pour mesurer la RAM utilisée
- Implémenter `check_threshold()` pour vérifier les seuils
- Implémenter `cleanup_caches()` pour libérer la mémoire
- Implémenter `free_gpu_memory()` pour libérer la mémoire GPU
- Intégrer dans l'orchestrateur avec vérification périodique
- _Requirements: 4.1, 4.2, 4.3, 4.4, 4.5_
- [ ]* 5.1 Écrire les property tests pour MemoryMonitor
- **Property 16: Limite mémoire mode shadow**
- **Property 17: Limite mémoire mode assist**
- **Property 18: Libération GPU**
- **Property 19: Buffer limité**
- **Property 20: Alerte mémoire**
- **Validates: Requirements 4.1, 4.2, 4.3, 4.4, 4.5**
- [ ] 6. Créer le CircuitBreaker pour protection contre boucles infinies
- Créer `geniusia2/core/circuit_breaker.py`
- Implémenter détection d'appels répétitifs (>100/s)
- Implémenter blocage temporaire (60s)
- Implémenter reprise progressive avec rate limit
- Implémenter mode dégradé si 3 breakers actifs
- Intégrer dans les fonctions critiques (check_for_suggestions, etc.)
- _Requirements: 8.1, 8.2, 8.3, 8.4, 8.5_
- [ ]* 6.1 Écrire les property tests pour CircuitBreaker
- **Property 35: Activation circuit breaker**
- **Property 36: Log circuit breaker**
- **Property 37: Blocage temporaire**
- **Property 38: Reprise progressive**
- **Property 39: Mode dégradé**
- **Validates: Requirements 8.1, 8.2, 8.3, 8.4, 8.5**
- [ ] 7. Créer le SystemDiagnostic pour analyse du système
- Créer `geniusia2/core/system_diagnostic.py`
- Implémenter `check_faiss_index()` pour vérifier l'index
- Implémenter `count_tasks()` pour compter les tâches
- Implémenter `check_consistency()` pour vérifier cohérence tâches/embeddings
- Implémenter `generate_report()` pour créer un rapport JSON
- Créer script CLI `diagnostic_systeme.py` à la racine
- _Requirements: 5.1, 5.2, 5.3, 5.4, 5.5_
- [ ]* 7.1 Écrire les property tests pour SystemDiagnostic
- **Property 21: Comptage des tâches**
- **Property 22: Vérification de cohérence**
- **Property 23: Proposition de reconstruction**
- **Property 24: Rapport JSON complet**
- **Validates: Requirements 5.2, 5.3, 5.4, 5.5**
- [ ] 8. Améliorer la validation des embeddings
- Modifier `geniusia2/core/embeddings_manager.py` méthode `encode_image()`
- Ajouter validation de la norme (doit être > 0)
- Ajouter validation NaN/Inf
- Ajouter régénération automatique si invalide
- Ajouter tests de cohérence (screenshots identiques → similarité > 0.95)
- _Requirements: 7.1, 7.2, 7.3, 7.4, 7.5_
- [ ]* 8.1 Écrire les property tests pour validation embeddings
- **Property 30: Validation norme non-nulle**
- **Property 31: Validation NaN/Inf**
- **Property 32: Cohérence embeddings identiques**
- **Property 33: Discrimination embeddings différents**
- **Property 34: Régénération sur invalide**
- **Validates: Requirements 7.1, 7.2, 7.3, 7.4, 7.5**
- [ ] 9. Améliorer le système de suggestions
- Modifier `geniusia2/core/suggestion_manager.py`
- Vérifier que l'index n'est pas vide avant recherche
- S'assurer que les suggestions incluent nom de tâche et actions
- Ajouter seuil de confiance minimum (0.7)
- Ajouter logs pour tracer les suggestions
- _Requirements: 1.5, 3.4, 3.5_
- [ ]* 9.1 Écrire les property tests pour suggestions
- **Property 5: Suggestions avec index non-vide**
- **Property 14: Suggestions avec confiance élevée**
- **Property 15: Contenu des suggestions**
- **Validates: Requirements 1.5, 3.4, 3.5**
- [ ] 10. Améliorer la détection de patterns
- Modifier `geniusia2/core/learning_manager.py`
- Implémenter détection de 3 actions identiques
- Créer automatiquement une tâche après détection
- Indexer immédiatement les embeddings
- Ajouter logs pour tracer la détection
- _Requirements: 3.1, 3.2, 3.3_
- [ ]* 10.1 Écrire les property tests pour détection patterns
- **Property 11: Détection de patterns répétitifs**
- **Property 12: Création de tâche après pattern**
- **Property 13: Indexation des embeddings**
- **Validates: Requirements 3.1, 3.2, 3.3**
- [ ] 11. Créer un script de reconstruction manuelle
- Créer `rebuild_faiss_index.py` à la racine
- Utiliser FAISSIndexBuilder pour reconstruire
- Afficher la progression (tâches traitées)
- Générer un rapport de reconstruction
- Sauvegarder l'index et métadonnées
- _Requirements: 6.1, 6.2, 6.3, 6.4, 6.5_
- [ ] 12. Créer un script de test de mémoire
- Créer `test_memory_limits.py` à la racine
- Tester mode shadow pendant 10 minutes
- Tester mode assist pendant 10 minutes
- Mesurer la consommation mémoire toutes les 30 secondes
- Vérifier les seuils (1GB shadow, 2GB assist)
- Générer un rapport de consommation
- _Requirements: 4.1, 4.2_
- [ ] 13. Checkpoint final - Validation complète
- Exécuter le diagnostic complet
- Reconstruire l'index avec les 19+ tâches
- Tester les suggestions avec actions répétitives
- Vérifier l'arrêt propre (pas de zombies)
- Vérifier la consommation mémoire (<2GB)
- Vérifier les circuit breakers
- Ensure all tests pass, ask the user if questions arise.
- [ ] 14. Documentation et nettoyage
- Créer `GUIDE_CORRECTION_FAISS.md` expliquant les corrections
- Documenter l'utilisation du diagnostic
- Documenter l'utilisation de la reconstruction
- Mettre à jour le README avec les nouvelles commandes
- Nettoyer les anciens scripts de diagnostic