# Système d'extraction de tickets Odoo

Ce projet permet d'extraire les informations des tickets Odoo (tâches, tickets de support) avec leurs messages et pièces jointes, et de les sauvegarder dans une structure organisée.

## Installation

1. Clonez le dépôt
2. Créez un environnement virtuel :
   ```bash
   python3 -m venv venv
   source venv/bin/activate  # Sur Linux/Mac
   # ou
   venv\Scripts\activate  # Sur Windows
   ```
3. Installez les dépendances :
   ```bash
   pip install -r requirements.txt
   ```

## Configuration

Créez un fichier `config.json` basé sur le modèle `config.template.json` :

```json
{
    "odoo_url": "https://votre-instance.odoo.com",
    "odoo_db": "nom_de_la_base",
    "odoo_username": "votre_email@exemple.com",
    "odoo_api_key": "votre_clé_api_odoo",
    "output_dir": "ticket_structure"
}
```

## Utilisation

Pour extraire un ticket, utilisez la commande :

```bash
python -m utils.retrieve_ticket CODE_TICKET
```

Options disponibles :
- `--output`, `-o` : Répertoire de sortie (défaut: "ticket_structure")
- `--config`, `-c` : Chemin vers le fichier de configuration (défaut: "config.json")
- `--verbose`, `-v` : Activer le mode verbeux

Exemple :
```bash
python -m utils.retrieve_ticket T1234 --output mes_tickets --verbose
```

## Structure des fichiers générés

Pour chaque ticket extrait, un répertoire est créé avec la structure suivante :

```
CODE_TICKET_DATE/
├── all_messages.json       # Messages traités au format JSON
├── all_messages.txt        # Messages au format texte 
├── attachments/            # Répertoire contenant les pièces jointes
├── attachments_info.json   # Métadonnées des pièces jointes
├── extraction_summary.json # Résumé de l'extraction
├── messages_raw.json       # Messages bruts
├── structure.json          # Structure du répertoire
├── ticket_info.json        # Données complètes du ticket
└── ticket_summary.json     # Résumé du ticket
```

## Gestionnaires disponibles

Le système est divisé en plusieurs gestionnaires :

- `AuthManager` : Gère l'authentification et les appels à l'API Odoo
- `TicketManager` : Gère la récupération des tickets et organise leur extraction
- `MessageManager` : Gère le traitement des messages (filtrage, nettoyage)
- `AttachmentManager` : Gère le téléchargement des pièces jointes

## Licence

Ce projet est sous licence MIT.

## Nouvelles fonctionnalités pour Qwen et DeepSeek

### Génération de rapports optimisée

Pour améliorer la qualité des rapports générés par Qwen et DeepSeek, nous avons introduit plusieurs nouvelles fonctionnalités :

1. **Agent de rapport optimisé** (`AgentReportGeneratorBis`)
   - Instructions plus claires et plus directes pour les modèles Qwen et DeepSeek
   - Format strictement défini pour les sections critiques (notamment "Synthèse globale des analyses d'images")
   - Prompt système avec des exemples concrets pour le format JSON

2. **Extraction robuste de données** (`report_utils_bis.py`)
   - Module spécialisé pour extraire le JSON des rapports Qwen/DeepSeek
   - Reconstruction du JSON à partir du contenu textuel si nécessaire
   - Détection d'une plus grande variété de formats de section

3. **Génération de CSV améliorée**
   - Génération de deux formats CSV :
     - Format complet avec toutes les colonnes (Date, Émetteur, Type, Contenu)
     - Format simplifié Q&R (Question, Réponse) pour la compatibilité

4. **Scripts d'orchestration dédiés**
   - `test_orchestrator_qwen_bis.py` : Pour tester avec Qwen/Ollama
   - `test_orchestrator_deepseek_bis.py` : Pour tester avec DeepSeek

### Outils de diagnostic et correction

1. **Script `test_extraction_json.py`**
   - Permet de tester l'extraction JSON sur des rapports existants
   - Corrige les rapports JSON manquants ou mal formés

2. **Script `generate_csv.py`**
   - Génère des fichiers CSV à partir de rapports JSON
   - Supporte plusieurs formats de sortie

3. **Script `fix_reports.py`**
   - Outil tout-en-un pour analyser et corriger les rapports existants
   - Options pour analyser ou corriger des rapports spécifiques
   - Détection intelligente des sections et fichiers manquants

### Exemples d'utilisation

#### Corriger un rapport existant

```bash
# Analyser un rapport spécifique sans le modifier
./fix_reports.py --analyze --ticket T9656

# Corriger automatiquement un rapport problématique
./fix_reports.py --fix --ticket T9656

# Analyser tous les rapports du répertoire
./fix_reports.py --analyze --dir output/

# Corriger tous les rapports problématiques
./fix_reports.py --fix --dir output/
```

#### Générer un CSV à partir d'un rapport JSON

```bash
./generate_csv.py output/ticket_T0101/T0101_rapports/T0101/T0101_rapport_final.json qwen
```

#### Tester l'extraction JSON d'un rapport

```bash
./test_extraction_json.py output/ticket_T0101/T0101_rapports/T0101/T0101_rapport_final.json
```

#### Générer un nouveau rapport avec l'agent optimisé

```bash
python test_orchestrator_qwen_bis.py T0101
python test_orchestrator_deepseek_bis.py T0101
```

Ces améliorations permettent d'obtenir des rapports de meilleure qualité avec les modèles Qwen et DeepSeek, tout en maintenant la compatibilité avec les rapports existants générés par Mistral. 