# Migration de PDFMonkey vers Gotenberg

## Résumé des changements

Le bouton "Créer PDF" sur la page `staff/contrats/[id]` utilise désormais **Gotenberg** (auto-hébergé sur le VPS) au lieu de PDFMonkey.

## Fichiers modifiés

### 1. API Route
- **Fichier**: `app/api/contrats/[id]/generate-pdf/route.ts`
- **Changements**:
  - Remplacement de l'appel à PDFMonkey par Gotenberg
  - Utilisation de templates Handlebars au lieu de Liquid
  - Suppression de la fonction de polling
  - Génération PDF instantanée

### 2. Nouveaux fichiers créés

#### Template Handlebars
- **Fichier**: `lib/templates/contract.hbs`
- **Description**: Template HTML/CSS pour générer les contrats de travail
- **Format**: Handlebars (conversion depuis Liquid)

#### Helpers Handlebars
- **Fichier**: `lib/handlebars-helpers.ts` (déjà existant, mis à jour)
- **Description**: Helpers personnalisés pour les conditions et transformations

#### Formateur de données
- **Fichier**: `lib/contract-data-formatter.ts`
- **Description**: Prépare et formate les données du contrat avant génération

#### Scripts
- **Fichier**: `tunnel-gotenberg.sh`
- **Description**: Script pour créer un tunnel SSH vers Gotenberg (dev local)

## Dépendances ajoutées

```bash
npm install handlebars
npm install --save-dev @types/handlebars
```

## Configuration

### Variables d'environnement

#### Développement local (.env.local)
```bash
GOTENBERG_URL=http://localhost:3001
```

#### Production (Coolify / VPS)
```bash
GOTENBERG_URL=http://gotenberg:3000
```

> **Note**: En production, l'app Next.js et Gotenberg sont sur le même réseau Docker `coolify`, donc `gotenberg:3000` fonctionne directement.

## Utilisation en développement

1. **Créer un tunnel SSH vers Gotenberg**:
   ```bash
   ./tunnel-gotenberg.sh
   ```
   Ou manuellement :
   ```bash
   ssh -L 3001:gotenberg:3000 renaud@144.91.113.70 -N
   ```

2. **Lancer le serveur Next.js**:
   ```bash
   npm run dev
   ```

3. **Tester la génération**:
   - Aller sur `staff/contrats/[id]`
   - Cliquer sur "Créer PDF"
   - Le PDF est généré via Gotenberg et uploadé sur S3

## Flux de génération

1. **Frontend** : Clic sur "Créer PDF"
2. **API Route** : Récupère les données du contrat depuis Supabase
3. **Formatter** : Formate les données pour le template
4. **Template** : Compile le template Handlebars avec les données
5. **Gotenberg** : Convertit le HTML en PDF
6. **S3** : Upload du PDF généré
7. **Supabase** : Mise à jour du contrat avec l'URL du PDF

## Avantages

- **Souveraineté des données** : Aucune donnée ne sort du VPS
- **Performance** : Génération locale, pas de latence réseau
- **Coût** : 0€ (vs abonnement PDFMonkey)
- **Sécurité** : Gotenberg n'est pas exposé publiquement

## Déploiement

Le code s'auto-déploie sur Coolify lors d'un push. En production :
- `GOTENBERG_URL=http://gotenberg:3000` est déjà configuré
- Pas besoin de tunnel, tout communique via le réseau Docker interne

## Rollback (si nécessaire)

Pour revenir à PDFMonkey en cas de problème :
1. Restaurer `app/api/contrats/[id]/generate-pdf/route.ts` depuis le commit précédent
2. Remettre `PDFMONKEY_URL` et `PDFMONKEY_API_KEY` dans les variables d'environnement

## Support

- **Guide complet** : Voir `gotenberg-integration-guide.md`
- **Documentation Gotenberg** : https://gotenberg.dev/
- **Logs Gotenberg** : `sudo docker logs gotenberg` (sur le VPS)

---

Date de migration : 27 décembre 2025
