# Liens Pré-signés S3 pour les Factures

## Vue d'ensemble

Ce système permet de générer des liens de téléchargement direct pour les PDFs de factures stockés sur S3, éliminant le besoin de proxifier les fichiers via le serveur Next.js.

## Durée des liens pré-signés

- **Maximum AWS S3** : 7 jours (604 800 secondes)
- **Emails clients** : 24 heures (86 400 secondes) - durée recommandée pour la sécurité
- **Interface staff** : 48 heures (172 800 secondes) - durée plus longue pour les tests
- **Liens temporaires** : 1 heure (3600 secondes) - pour les téléchargements immédiats

## Endpoints

### 1. `/api/staff/facturation/[id]/download-link` (Staff seulement)

**Méthode** : GET  
**Authentification** : Requise (utilisateur staff)  
**Description** : Génère un lien pré-signé pour téléchargement par l'équipe

**Réponse** :
```json
{
  "success": true,
  "downloadUrl": "https://s3.amazonaws.com/bucket/file.pdf?X-Amz-...",
  "filename": "facture-001.pdf",
  "expiresIn": 172800
}
```

### 2. `/api/facturation/[id]/download` (Clients)

**Méthode** : GET  
**Authentification** : Requise (client de l'organisation)  
**Description** : Redirection directe vers le PDF pour téléchargement client

**Comportement** : Redirige (302) vers l'URL S3 pré-signée

## Intégration Email

Les emails de facture incluent maintenant un lien direct de téléchargement :

```typescript
const downloadUrl = `${process.env.NEXT_PUBLIC_SITE_URL}/api/facturation/${invoice.id}/download`;

// Template email
{
  ctaUrl: downloadUrl, // Pointe vers le téléchargement direct
  ctaText: 'Télécharger la facture PDF'
}
```

## Sécurité

1. **Authentification** : Tous les endpoints nécessitent une session valide
2. **Autorisation** : 
   - Staff : accès à toutes les factures
   - Clients : accès uniquement aux factures de leur organisation
3. **Expiration** : Les liens expirent automatiquement
4. **Logs** : Toutes les générations de liens sont loggées

## Avantages

1. **Performance** : Pas de proxification via Next.js
2. **Bande passante** : Téléchargement direct depuis S3
3. **Scalabilité** : S3 gère automatiquement la charge
4. **Expérience utilisateur** : Téléchargement immédiat via le bouton email
5. **Sécurité** : Liens temporaires et authentifiés

## Tests

### Interface Staff
- Bouton "Test téléchargement" dans `/staff/facturation/[id]`
- Lien vert à côté du bouton "Ouvrir le PDF"

### Email Client
- Le bouton "Télécharger la facture PDF" dans l'email redirige vers le téléchargement

## Configuration

Variables d'environnement requises :
```bash
AWS_REGION=eu-west-3
AWS_S3_BUCKET=odentas-docs
AWS_ACCESS_KEY_ID=xxx
AWS_SECRET_ACCESS_KEY=xxx
NEXT_PUBLIC_SITE_URL=https://yoursite.com
```

## Monitoring

Surveillez les logs pour :
- Échecs de génération de liens : `pdf_not_accessible`
- Factures sans PDF : `pdf_not_found`
- Tentatives d'accès non autorisées : `unauthorized`/`forbidden`