# Documentation Odoo - Gestion des tickets

Ce document décrit les fonctionnalités disponibles dans le module Odoo pour la gestion des tickets et leur extraction.

## Modules disponibles

Le package Odoo contient plusieurs modules qui travaillent ensemble :

- `auth_manager.py` : Gestion de l'authentification Odoo
- `ticket_manager.py` : Extraction des informations d'un ticket unique
- `batch_ticket_manager.py` : Gestion des extractions par lots de tickets
- `message_manager.py` : Traitement des messages associés aux tickets
- `attachment_manager.py` : Gestion des pièces jointes
- `retrieve_ticket.py` : Script pour extraire un ticket unique
- `retrieve_tickets_batch.py` : Script pour extraire des lots de tickets

## Configuration

Toutes les fonctionnalités nécessitent un fichier de configuration `config.json` qui contient les informations de connexion à l'API Odoo :

```json
{
  "odoo": {
    "url": "https://votre-instance-odoo.com",
    "db": "nom_de_la_base",
    "username": "utilisateur@exemple.com",
    "api_key": "votre_clé_api_ou_mot_de_passe"
  },
  "output_dir": "output"
}
```

## Commandes disponibles

### Extraction d'un ticket unique

Pour extraire un ticket par son code unique :

```bash
python -m odoo.retrieve_ticket CODE_DU_TICKET [--output DOSSIER] [--config FICHIER_CONFIG] [--verbose]
```

Options :
- `CODE_DU_TICKET` : Code unique du ticket à extraire (obligatoire)
- `--output`, `-o` : Répertoire de sortie (optionnel)
- `--config`, `-c` : Chemin vers le fichier de configuration (par défaut: config.json)
- `--verbose`, `-v` : Active le mode verbeux avec plus de détails

### Extraction par lots

Pour extraire plusieurs tickets qui correspondent à des critères spécifiques :

```bash
python -m odoo.retrieve_tickets_batch batch [options]
```

Options pour la commande `batch` :
- `--domain`, `-d` : Critères de recherche au format spécial (format: field1:op1:value1;field2:op2:value2)
- `--project`, `-p` : ID du projet (raccourci pour "project_id:=:ID")
- `--stage`, `-s` : ID de l'étape/statut (raccourci pour "stage_id:=:ID")
- `--limit`, `-l` : Nombre maximum de tickets à extraire (par défaut: 50)
- `--offset`, `-o` : Index de départ pour la pagination (par défaut: 0)
- `--output` : Répertoire de sortie
- `--include-existing` : Inclure les tickets déjà extraits (par défaut: les tickets déjà extraits sont ignorés)
- `--config`, `-c` : Chemin vers le fichier de configuration (par défaut: config.json)
- `--verbose`, `-v` : Active le mode verbeux

### Lister les projets disponibles

Pour afficher la liste des projets disponibles :

```bash
python -m odoo.retrieve_tickets_batch projects [--config FICHIER_CONFIG]
```

### Lister les étapes/statuts disponibles

Pour afficher la liste des étapes (statuts) disponibles :

```bash
python -m odoo.retrieve_tickets_batch stages [--config FICHIER_CONFIG]
```

## Exemples d'utilisation

### Extraire un ticket spécifique

```bash
# Extraire le ticket avec le code "TS-1234"
python -m odoo.retrieve_ticket TS-1234 --verbose
```

### Extraire des tickets d'un projet spécifique

```bash
# Extraire jusqu'à 20 tickets du projet avec ID 42
python -m odoo.retrieve_tickets_batch batch --project 42 --limit 20
```

### Extraire des tickets avec des critères avancés

```bash
# Extraire les tickets du projet 42 à l'étape 5
python -m odoo.retrieve_tickets_batch batch --domain "project_id:=:42;stage_id:=:5"

# Extraire les tickets ayant une priorité élevée (3)
python -m odoo.retrieve_tickets_batch batch --domain "priority:=:3"
```

## Structure des données extraites

Les données extraites sont organisées dans une structure de répertoires contenant :

- `ticket_info.json` : Informations complètes sur le ticket
- `ticket_summary.json` : Résumé des informations principales
- `all_messages.json` : Messages associés au ticket (format JSON)
- `all_messages.txt` : Messages associés au ticket (format texte)
- `attachments_info.json` : Informations sur les pièces jointes
- Dossier `attachments/` : Contient les pièces jointes téléchargées
- `structure.json` : Description de la structure des fichiers
- `extraction_summary.json` : Résumé de l'opération d'extraction

Pour les extractions par lots, un fichier `batch_summary.json` est également créé à la racine du répertoire, contenant les informations sur les tickets traités, ignorés et en échec.

## Gestion des erreurs

Le système gère plusieurs types d'erreurs :
- Tickets déjà extraits (ignorés si `--include-existing` n'est pas spécifié)
- Tickets sans code unique (ignorés avec un message d'avertissement)
- Erreurs d'extraction (enregistrées dans le journal et dans `batch_summary.json`)
- Erreurs d'authentification (tentatives de reconnexion automatiques)

Les logs détaillés sont disponibles dans les fichiers `retrieve_ticket.log` ou `retrieve_tickets_batch.log`. 