# Traitement des bons PDF — environnement Python

Le job Laravel `App\Jobs\ProcessPdfFileJob` appelle `scripts/traitement.py` via le binaire
Python défini par `PYTHON_PATH` dans le `.env` (par défaut `scripts/venv/bin/python3`).

## ⚠️ Le venv n'est PAS versionné

Le dossier `scripts/venv/` est ignoré par git (`.gitignore`). Il **doit être recréé sur
chaque machine / serveur** — ne jamais le copier depuis un autre poste (les binaires et
extensions `.so` sont spécifiques à l'OS/l'architecture et cassent au déploiement).

## Installation / réparation du venv

```bash
cd /chemin/vers/flash

# (ré)initialiser l'environnement
rm -rf scripts/venv
python3 -m venv scripts/venv
scripts/venv/bin/python3 -m pip install --upgrade pip
scripts/venv/bin/python3 -m pip install -r scripts/requirements.txt

# vérifier que les imports passent
scripts/venv/bin/python3 -c "import pdfplumber, openai, mysql.connector, dotenv; print('imports OK')"
```

Vérifier ensuite que `PYTHON_PATH` dans `.env` pointe bien vers ce binaire :

```
PYTHON_PATH="/chemin/absolu/vers/flash/scripts/venv/bin/python3"
```

## Configuration requise dans .env

- `OPENAI_API_KEY` : clé OpenAI **valide** (le script utilise le modèle `gpt-3.5-turbo`).
  Une clé expirée/révoquée renvoie une 401 et **aucun bon n'est traité** (statut `error`,
  rien ne bascule dans Codial).
- `DB_HOST`, `DB_PORT`, `DB_DATABASE`, `DB_USERNAME`, `DB_PASSWORD` : accès MySQL.

## Tester un bon manuellement

```bash
scripts/venv/bin/python3 scripts/traitement.py "/chemin/absolu/vers/public/pdfs/<fichier>.pdf"
```

Sortie attendue en cas de succès : un JSON `{"code": 0, "intervention_id": <id>, ...}`.
En cas d'échec, le champ `error` et les `logs` indiquent l'étape fautive (extraction PDF,
détection bailleur, appel OpenAI, insertion BDD).

## Diagnostic rapide « ça ne bascule pas sur Codial »

1. `OPENAI_API_KEY` valide ? (tester un bon → chercher une 401 dans les logs)
2. venv fonctionnel ? (`imports OK` ci-dessus)
3. `PYTHON_PATH` correct dans `.env` ?
4. Le fichier XML/PDF est-il généré dans `public/pdfs/codial/import/` (ou un sous-dossier
   quand la référence contient un `/`, ex. `LOG02_FIM/`) ?
