#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Script de test pour les fonctions d'extraction de JSON et d'extraction de questions initiales. """ import json import sys from agents.utils.report_utils import extraire_et_traiter_json, extraire_question_initiale def test_extraction_json(): """Teste la fonction d'extraction de JSON depuis un texte de rapport.""" # Texte de rapport avec JSON rapport = """# Rapport d'analyse Voici le rapport. ## Tableau questions/réponses ```json { "chronologie_echanges": [ {"date": "01/08/2022 12:00:00", "emetteur": "SUPPORT", "type": "Réponse", "contenu": "Bonjour, je te contacte concernant : Mon problème technique. Je l'ai résolu."}, {"date": "01/08/2022 13:00:00", "emetteur": "CLIENT", "type": "Question", "contenu": "Merci beaucoup!"} ] } ``` ## Conclusion Fin du rapport. """ # Extraire le JSON rapport_traite, echanges_json, _ = extraire_et_traiter_json(rapport) print("JSON extrait:", json.dumps(echanges_json, indent=2, ensure_ascii=False)) # Vérifier assert echanges_json is not None, "Le JSON n'a pas été extrait" assert "chronologie_echanges" in echanges_json, "Structure JSON incorrecte" assert len(echanges_json["chronologie_echanges"]) >= 2, "Nombre d'échanges incorrect" # Vérifier si une question initiale a été ajoutée if len(echanges_json["chronologie_echanges"]) > 2: print("Question initiale ajoutée:", json.dumps(echanges_json["chronologie_echanges"][0], indent=2, ensure_ascii=False)) return True def test_extraire_question_initiale(): """Teste la fonction d'extraction de questions initiales.""" # Cas 1: Premier message est déjà une question du client echanges1 = [ {"date": "01/08/2022 11:30:00", "emetteur": "CLIENT", "type": "Question", "contenu": "J'ai un problème"} ] question1 = extraire_question_initiale(echanges1) print("Test 1 - Premier message est une question:", question1) assert question1 is None, "Ne devrait pas extraire une question si déjà présente" # Cas 2: Premier message est une réponse du support qui cite la question echanges2 = [ {"date": "01/08/2022 12:11:03", "emetteur": "SUPPORT", "type": "Réponse", "contenu": "Bonjour, Je te contacte pour donner suite à ta demande concernant : \nGuillaume Lucas ne parvient jamais à enregistrer un échantillon\n\nJe viens de corriger ton problème."} ] question2 = extraire_question_initiale(echanges2) print("Test 2 - Question extraite:", question2) assert question2 is not None, "Devrait extraire une question" assert question2["emetteur"] == "CLIENT", "L'émetteur devrait être CLIENT" assert question2["type"] == "Question", "Le type devrait être Question" assert "Guillaume Lucas" in question2["contenu"], "Le contenu devrait contenir la question extraite" # Cas 3: Format différent de citation echanges3 = [ {"date": "01/08/2022 14:00:00", "emetteur": "SUPPORT", "type": "Réponse", "contenu": "Bonjour\nJe réponds à votre ticket: Problème de connexion à l'application\n\nVoici la solution."} ] question3 = extraire_question_initiale(echanges3) print("Test 3 - Autre format:", question3) assert question3 is not None, "Devrait extraire une question" assert "Problème de connexion" in question3["contenu"], "Le contenu devrait contenir la question extraite" return True if __name__ == "__main__": print("=== Test d'extraction JSON ===") json_test_success = test_extraction_json() print("\n=== Test d'extraction de questions initiales ===") question_test_success = test_extraire_question_initiale() if json_test_success and question_test_success: print("\nTous les tests sont réussis! ✅") sys.exit(0) else: print("\nCertains tests ont échoué ❌") sys.exit(1)