llm_ticket3/test_tableaux_echanges.py
2025-04-11 17:05:45 +02:00

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! ✅")