# Améliorations du système d'analyse de tickets

## Contexte

Le système d'analyse de tickets a été amélioré pour mieux gérer différents formats de données, en particulier les formats JSON et Markdown. Ce document explique les changements apportés et comment utiliser le nouveau système.

## Changements principaux

1. **Remplacement de `AgentJsonAnalyser` par `AgentTicketAnalyser`**
   - Le nouvel agent est plus flexible et peut traiter des données provenant de différentes sources
   - Il utilise un prompt système amélioré qui inclut des instructions spécifiques pour l'analyse des tickets
   - Il intègre une meilleure gestion des métadonnées sur la source des données

2. **Création d'une classe `TicketDataLoader`**
   - Abstraction pour charger les données de tickets depuis différentes sources
   - Implémentations spécifiques pour les formats JSON et Markdown
   - Validation et normalisation des données chargées
   - Gestion unifiée de la recherche de fichiers de tickets

3. **Mise à jour de l'orchestrateur**
   - Adaptation pour utiliser le nouvel agent et le loader de données
   - Simplification des méthodes de traitement des données
   - Suppression du code redondant pour l'extraction des données Markdown

4. **Ajout d'un script de test**
   - `test_ticket_analyse.py` permet de tester le système d'analyse de tickets
   - Possibilité de tester l'analyse d'un fichier spécifique
   - Possibilité de tester la recherche de fichiers de tickets

## Comment utiliser le nouveau système

### Dans les scripts existants

Remplacez les références à `AgentJsonAnalyser` par `AgentTicketAnalyser` :

```python
# Ancien code
from agents.agent_json_analyser import AgentJsonAnalyser
agent = AgentJsonAnalyser(llm)

# Nouveau code
from agents.agent_ticket_analyser import AgentTicketAnalyser
agent = AgentTicketAnalyser(llm)
```

### Analyser un fichier directement

Le nouvel agent peut analyser un fichier directement sans avoir à charger les données au préalable :

```python
from agents.agent_ticket_analyser import AgentTicketAnalyser

agent = AgentTicketAnalyser(llm)
resultat = agent.analyser_depuis_fichier("chemin/vers/ticket.json")
# ou
resultat = agent.analyser_depuis_fichier("chemin/vers/ticket.md")
```

### Charger des données de ticket avec le loader

```python
from utils.ticket_data_loader import TicketDataLoader

loader = TicketDataLoader()

# Charger un fichier JSON
donnees_json = loader.charger("chemin/vers/ticket.json")

# Charger un fichier Markdown
donnees_md = loader.charger("chemin/vers/ticket.md")

# Détecter automatiquement le format
donnees = loader.charger("chemin/vers/ticket.ext")

# Rechercher des fichiers de ticket
resultats = loader.trouver_ticket("dossier/extraction", "T0101")
if resultats.get("json"):
    print(f"Fichier JSON trouvé: {resultats['json']}")
if resultats.get("markdown"):
    print(f"Fichier Markdown trouvé: {resultats['markdown']}")
```

## Exécuter les tests

```bash
# Tester l'analyse d'un fichier
python test_ticket_analyse.py --file chemin/vers/ticket.json

# Rechercher un ticket par ID
python test_ticket_analyse.py --search T0101 --dir dossier/extraction

# Afficher l'aide
python test_ticket_analyse.py --help
```

## Compatibilité avec l'ancien système

Si vous avez encore des scripts qui utilisent l'ancien `AgentJsonAnalyser`, ceux-ci devraient continuer à fonctionner avec le nouvel agent, car l'interface de la méthode `executer()` est restée compatible.

## Structure des métadonnées

Le nouveau système ajoute des métadonnées sur la source des données, ce qui peut être utile pour le débogage et l'analyse :

```json
{
  "metadata": {
    "source_file": "chemin/vers/fichier.ext",
    "format": "json|markdown",
    "autres_metadonnees": "..."
  }
}
```

## Prochaines améliorations possibles

1. Ajouter le support pour d'autres formats de données (CSV, XML, etc.)
2. Améliorer la validation des données chargées
3. Ajouter des tests unitaires pour chaque composant
4. Implémenter une détection plus avancée des formats de date
5. Ajouter une option pour normaliser les noms de champs entre différents formats 