mirror of
https://github.com/Ladebeze66/llm_ticket3.git
synced 2025-12-15 19:16:52 +01:00
110 lines
5.3 KiB
Python
110 lines
5.3 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
Test pour vérifier la reconstruction des tableaux d'échanges avec extraction de la question initiale.
|
|
Ce script teste spécifiquement le cas du rapport T5409.
|
|
"""
|
|
|
|
import json
|
|
import os
|
|
from agents.utils.report_utils import extraire_et_traiter_json, extraire_question_initiale
|
|
|
|
# Exemple d'échanges du rapport T5409
|
|
T5409_ECHANGES = [
|
|
{
|
|
"date": "01/08/2022 12:11:03",
|
|
"emetteur": "SUPPORT",
|
|
"type": "Réponse",
|
|
"contenu": "Bonjour Frédéric, Je te contacte pour donner suite à ta demande concernant : Bonjour Guillaume Lucas ne parvient jamais à enregistrer un échantillon, j'ai l'impression que c'est un problème d'attribution ou autre chose de ce genre et je ne le vois pas sur la liste des utilisateurs je vous remercie d'avance cordialement Je viens de corriger ton problème en lui affectant un laboratoire principal : Restant à votre disposition pour tout renseignement complémentaire. Cordialement, Youness BENDEQ Support technique - Chargé de clientèle"
|
|
},
|
|
{
|
|
"date": "01/08/2022 14:33:18",
|
|
"emetteur": "CLIENT",
|
|
"type": "Question",
|
|
"contenu": "Bonjour Effectivement je sentais un problème de ce genre, mais je ne savais pas où le dénicher, je te remercie vivement Bonne fin d'après-midi Frédéric Moralès Conseil Départemental de Vaucluse Responsable du laboratoire routier"
|
|
},
|
|
{
|
|
"date": "02/08/2022",
|
|
"emetteur": "SUPPORT",
|
|
"type": "Complément visuel",
|
|
"contenu": "L'analyse des captures d'écran confirme visuellement le processus: (1) L'affectation de Guillaume Lucas à un laboratoire principal (LABO CD 84) a été effectuée, comme le montre la première image. (2) Cependant, la deuxième image révèle que cette affectation n'est pas encore visible dans la liste des utilisateurs, indiquant que l'action n'a pas été validée ou synchronisée. Ces interfaces complémentaires illustrent le processus complet d'affectation et la nécessité de valider les modifications pour qu'elles soient effectives."
|
|
}
|
|
]
|
|
|
|
def test_extraction_question_t5409():
|
|
"""Test d'extraction de la question initiale à partir du premier message de T5409"""
|
|
|
|
# Extraire la question
|
|
question = extraire_question_initiale(T5409_ECHANGES)
|
|
|
|
print("Question extraite:", json.dumps(question, indent=2, ensure_ascii=False))
|
|
assert question is not None, "La question initiale doit être extraite"
|
|
assert question["emetteur"] == "CLIENT", "L'émetteur de la question doit être CLIENT"
|
|
assert "Guillaume Lucas" in question["contenu"], "Le contenu doit contenir la demande initiale"
|
|
assert question["date"] == "01/08/2022 12:00", "La date doit être 30 minutes avant la réponse"
|
|
|
|
# Ajouter la question aux échanges
|
|
echanges_corriges = [question] + T5409_ECHANGES
|
|
|
|
# Vérifier la séquence
|
|
assert len(echanges_corriges) == 4, "Les échanges corrigés devraient avoir 4 entrées"
|
|
assert echanges_corriges[0]["type"] == "Question", "Le premier échange doit être une question"
|
|
assert echanges_corriges[1]["type"] == "Réponse", "Le deuxième échange doit être une réponse"
|
|
|
|
print(f"Test réussi! Les échanges ont été correctement restructurés avec {len(echanges_corriges)} entrées")
|
|
|
|
# Afficher les échanges corrigés
|
|
print("\nÉchanges restructurés:")
|
|
for i, echange in enumerate(echanges_corriges, 1):
|
|
print(f"{i}. [{echange['date']}] {echange['emetteur']} ({echange['type']}): {echange['contenu'][:100]}...")
|
|
|
|
def test_traitement_rapport_complet():
|
|
"""Test de traitement d'un rapport complet avec extraction de question initiale"""
|
|
|
|
# Créer un rapport JSON similaire à celui de T5409
|
|
rapport_json = json.dumps({
|
|
"chronologie_echanges": T5409_ECHANGES
|
|
})
|
|
|
|
# Intégrer le JSON dans un texte de rapport
|
|
rapport_texte = f"""# Rapport d'analyse
|
|
|
|
## Description du problème
|
|
|
|
Le problème concerne Guillaume Lucas qui ne parvient pas à enregistrer un échantillon.
|
|
|
|
## Tableau des échanges
|
|
|
|
```json
|
|
{rapport_json}
|
|
```
|
|
|
|
## Conclusion
|
|
|
|
Le problème a été résolu en attribuant un laboratoire principal.
|
|
"""
|
|
|
|
# Traiter le rapport
|
|
rapport_traite, echanges_json, _ = extraire_et_traiter_json(rapport_texte)
|
|
|
|
# Vérifier que echanges_json n'est pas None
|
|
assert echanges_json is not None, "Le JSON n'a pas été correctement extrait"
|
|
|
|
# Vérifier que la question a été ajoutée
|
|
print(f"\nÉchanges après traitement: {len(echanges_json['chronologie_echanges'])} entrées")
|
|
assert len(echanges_json["chronologie_echanges"]) == 4, "Une question initiale aurait dû être ajoutée"
|
|
assert echanges_json["chronologie_echanges"][0]["emetteur"] == "CLIENT", "Le premier émetteur devrait être CLIENT"
|
|
assert echanges_json["chronologie_echanges"][0]["type"] == "Question", "Le premier type devrait être Question"
|
|
|
|
print("Test de traitement complet réussi!")
|
|
print(f"Texte du rapport traité: {len(rapport_traite)} caractères")
|
|
|
|
if __name__ == "__main__":
|
|
print("=== Test d'extraction de question du T5409 ===")
|
|
test_extraction_question_t5409()
|
|
|
|
print("\n=== Test de traitement de rapport complet ===")
|
|
test_traitement_rapport_complet()
|
|
|
|
print("\nTous les tests ont réussi! ✅") |