mirror of
https://github.com/Ladebeze66/llm_ticket3.git
synced 2025-12-16 00:36:52 +01:00
94 lines
3.9 KiB
Python
Executable File
94 lines
3.9 KiB
Python
Executable File
#!/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) |