#!/usr/bin/env python3 """ Test manuel du Mode Assisté - Workflow complet """ import sys import time from pathlib import Path sys.path.insert(0, str(Path(__file__).parent / "geniusia2")) from core.orchestrator import Orchestrator from core.learning_manager import LearningManager from core.embeddings_manager import EmbeddingsManager from core.llm_manager import LLMManager from core.utils.vision_utils import VisionUtils from core.utils.input_utils import InputUtils from core.logger import Logger from core.config import get_config def main(): """Test manuel du Mode Assisté.""" print("\n" + "="*60) print(" 🧪 TEST MANUEL DU MODE ASSISTÉ") print("="*60 + "\n") # Initialiser les composants print("📋 Initialisation des composants...") config = get_config() logger = Logger() embeddings_manager = EmbeddingsManager(logger=logger) learning_manager = LearningManager( embeddings_manager, logger, config, profiles_path="geniusia2/data/user_profiles" ) vision_utils = VisionUtils(config) input_utils = InputUtils(logger, config) llm_manager = LLMManager(config, logger) orchestrator = Orchestrator( learning_manager=learning_manager, vision_utils=vision_utils, llm_manager=llm_manager, input_utils=input_utils, logger=logger, config=config ) print("✅ Orchestrator créé\n") # Vérifier les tâches existantes print("📊 Vérification des tâches apprises...") # Utiliser get_all_tasks() qui retourne une liste de dicts avec métriques task_metrics = learning_manager.get_all_tasks() if not task_metrics: print("❌ Aucune tâche apprise trouvée !\n") print("💡 Pour tester le Mode Assisté, tu dois d'abord :") print(" 1. Lancer l'application : cd geniusia2 && ./run.sh") print(" 2. Cliquer sur 'Start'") print(" 3. Effectuer 3 fois la même action (ex: 3 clics)") print(" 4. Attendre la notification 'Tâche apprise'") print(" 5. Relancer ce script\n") return print(f"✅ {len(task_metrics)} tâche(s) trouvée(s) :\n") for i, task_info in enumerate(task_metrics, 1): print(f" {i}. {task_info['task_name']}") print(f" ID: {task_info['task_id']}") print(f" Observations: {task_info['observation_count']}") print(f" Confiance: {task_info['confidence_score']:.2%}") print() # Tester la vérification de suggestions print("🔍 Test de vérification de suggestions...") print(" (Ceci simule ce qui se passerait après une action utilisateur)\n") # Appeler check_for_suggestions orchestrator.check_for_suggestions() # Vérifier s'il y a une suggestion current = orchestrator.suggestion_manager.get_current_suggestion() if current: print("✅ Suggestion créée !") print(f" Tâche: {current['task_name']}") print(f" Confiance: {current['confidence']:.2%}") print(f" Similarité: {current['similarity']:.2%}\n") print("💡 Dans l'application, un overlay apparaîtrait maintenant") print(" avec les options : [Entrée] Accepter | [Échap] Refuser\n") else: print("ℹ️ Aucune suggestion créée") print(" Raisons possibles :") print(" - Le contexte actuel ne correspond à aucune tâche") print(" - La similarité est < 75%") print(" - Pas d'action utilisateur récente\n") print("="*60) print(" 📝 RÉSUMÉ") print("="*60 + "\n") print("Le Mode Assisté fonctionne en 2 phases :\n") print("1️⃣ APPRENTISSAGE (Mode Shadow)") print(" - Effectue 3x la même action") print(" - Le système crée une tâche\n") print("2️⃣ SUGGESTIONS (Mode Assisté)") print(" - Refais une action similaire") print(" - Le système suggère la tâche apprise") print(" - Un overlay apparaît avec [Entrée] / [Échap]\n") print("⚠️ IMPORTANT :") print(" Le Mode Assisté n'est PAS automatique dans la version actuelle.") print(" Il faut que l'Orchestrator appelle check_for_suggestions()") print(" après chaque action utilisateur.\n") print("🔧 SOLUTION :") print(" Ajouter un appel périodique à check_for_suggestions()") print(" dans la boucle principale de l'Orchestrator.\n") if __name__ == "__main__": main()