""" Test per il sistema di memoria intelligente """ from dotenv import load_dotenv load_dotenv(dotenv_path='data/.env') from core.kernel import JarvisKernel import time print("=" * 80) print("TEST SISTEMA MEMORIA INTELLIGENTE") print("=" * 80) # Inizializza kernel kernel = JarvisKernel(config_path='config/config.yaml', profile_name='aurelio') kernel.start() cognitive = kernel.get_service("CognitiveService") if not cognitive: print("❌ CognitiveService non disponibile") exit(1) # Session ID di test session_id = "test_intelligent_memory" # Pulizia precedente print("\n[STEP 1] Pulizia memoria precedente...") cognitive.clear_memory(session_id) # Test 1: Condividi informazioni personali print("\n[STEP 2] Condivido informazioni personali con Marco Aurelio...") print("-" * 80) info_messages = [ "Ciao, mi chiamo Luigi e vivo a Napoli.", "Mia moglie si chiama Maria e abbiamo due figli: Andrea di 15 anni e Sofia di 12 anni.", "Lavoro come ingegnere presso la Fiat a Torino.", "I miei colleghi si chiamano Paolo, Laura e Giuseppe." ] for msg in info_messages: print(f"\n[USER] {msg}") response = cognitive.ask(msg, session_id) print(f"[MARCO] {response[:150]}...") time.sleep(2) # Pausa per dare tempo al background thread # Aspetta che il background thread completi print("\n[ATTESA] Pausa di 5 secondi per completamento background tasks...") time.sleep(5) # Test 2: Verifica User Profile print("\n[STEP 3] Verifica User Profile generato...") print("-" * 80) profile_summary = cognitive.user_profile.get_profile_summary() print(f"Profilo utente:\n{profile_summary}") # Verifica se le info sono state estratte if "Luigi" in profile_summary: print("\n✅ Nome estratto correttamente") else: print("\n❌ ERRORE: Nome non estratto") if "Maria" in profile_summary or "moglie" in profile_summary.lower(): print("✅ Info famiglia estratte") else: print("❌ ERRORE: Info famiglia non estratte") if "Fiat" in profile_summary: print("✅ Info lavoro estratte") else: print("❌ ERRORE: Info lavoro non estratte") # Test 3: Verifica memoria a lungo termine print("\n[STEP 4] Aggiungo altri 30+ messaggi per triggerare summarization...") print("-" * 80) for i in range(35): query = f"Cosa ne pensi della virtù numero {i}?" response = cognitive.ask(query, session_id) print(f" Messaggio {i+1}/35 inviato", end="\r") time.sleep(0.5) print("\n\n[ATTESA] Pausa di 10 secondi per summarization...") time.sleep(10) # Test 4: Verifica summaries creati print("\n[STEP 5] Verifica summaries creati...") print("-" * 80) summaries = cognitive.memory.get_summaries(session_id, limit=5) if summaries: print(f"✅ Trovati {len(summaries)} summaries") for i, summary in enumerate(summaries, 1): print(f"\nSummary {i}:") print(f" Range messaggi: {summary['msg_start']} - {summary['msg_end']}") print(f" Token count: {summary['token_count']}") print(f" Testo: {summary['summary_text'][:100]}...") else: print("❌ ERRORE: Nessun summary trovato") # Test 5: Verifica che Marco Aurelio ricordi info iniziali print("\n[STEP 6] Chiedo a Marco Aurelio di ricordare info iniziali...") print("-" * 80) query_test = "Cosa ti ricordi della mia famiglia e del mio lavoro?" print(f"\n[USER] {query_test}") response = cognitive.ask(query_test, session_id) print(f"[MARCO] {response}") # Verifica contenuto risposta if "Luigi" in response or "moglie" in response.lower() or "Maria" in response: print("\n✅ Marco Aurelio ricorda le informazioni sulla famiglia") else: print("\n❌ ERRORE: Marco Aurelio non ricorda le info sulla famiglia") if "Fiat" in response or "ingegnere" in response.lower(): print("✅ Marco Aurelio ricorda le informazioni sul lavoro") else: print("❌ ERRORE: Marco Aurelio non ricorda le info sul lavoro") # Test 6: Verifica database print("\n[STEP 7] Verifica database...") print("-" * 80) total_messages = cognitive.memory.get_session_count(session_id) print(f"Messaggi totali salvati: {total_messages}") # Cleanup kernel.stop() print("\n" + "=" * 80) print("✅ TEST COMPLETATO!") print("=" * 80) print("\nRIEPILOGO:") print(f"- Profilo utente: {'CREATO' if profile_summary != 'Nessuna informazione sul profilo utente disponibile.' else 'NON CREATO'}") print(f"- Summaries creati: {len(summaries)}") print(f"- Messaggi totali: {total_messages}") print(f"- Memoria funzionante: {'SÌ' if ('Luigi' in response or 'Maria' in response) else 'NO'}")