# Lambda PDF Converter pour Odentas Sign

## Description

Cette Lambda est déclenchée automatiquement par S3 quand un PDF est uploadé dans le bucket `odentas-sign` (prefix `source/`).

Elle convertit le PDF en images JPEG via Cloudinary et stocke les images dans `odentas-docs` pour être utilisées sur les pages de signature.

## Déploiement

### 1. Installation des dépendances

```bash
cd lambda-pdf-converter
npm install
```

### 2. Créer le ZIP de déploiement

```bash
zip -r lambda-pdf-converter.zip . -x "*.git*" -x "README.md"
```

### 3. Créer la Lambda dans AWS

1. Allez dans AWS Lambda Console
2. Créer une nouvelle fonction :
   - **Nom** : `odentas-sign-pdf-converter`
   - **Runtime** : Node.js 20.x
   - **Architecture** : x86_64
   - **Rôle d'exécution** : Créer un nouveau rôle avec les permissions de base

3. Uploader le ZIP `lambda-pdf-converter.zip`

### 4. Configuration de la Lambda

#### Variables d'environnement

```
CLOUDINARY_CLOUD_NAME=duecox5va
CLOUDINARY_API_KEY=265234555873541
CLOUDINARY_API_SECRET=DS5k0Zo2LxDkE5KmA3nFsT3bL1M
AWS_REGION=eu-west-3
SOURCE_BUCKET=odentas-sign
DEST_BUCKET=odentas-docs
```

#### Configuration générale

- **Mémoire** : 512 MB (ou plus selon la taille des PDF)
- **Timeout** : 5 minutes (300 secondes)
- **Retry** : 0 (pas de retry automatique)

#### Permissions IAM

Ajouter ces permissions au rôle de la Lambda :

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": "arn:aws:s3:::odentas-sign/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::odentas-docs/odentas-sign-images/*"
    }
  ]
}
```

### 5. Configurer le trigger S3

1. Dans la Lambda, ajouter un trigger "S3"
2. Configuration :
   - **Bucket** : `odentas-sign`
   - **Event type** : `PUT` (ObjectCreated:Put)
   - **Prefix** : `source/`
   - **Suffix** : `.pdf`

### 6. Tester

1. Uploadez un PDF de test dans `s3://odentas-sign/source/test/TEST-123456789.pdf`
2. Vérifiez les logs CloudWatch de la Lambda
3. Vérifiez que les images sont créées dans `s3://odentas-docs/odentas-sign-images/TEST/page-*.jpg`

## Architecture

```
Upload PDF
   ↓
s3://odentas-sign/source/{folder}/{requestId}-{timestamp}.pdf
   ↓
Event S3 ObjectCreated
   ↓
Lambda odentas-sign-pdf-converter
   ↓
Cloudinary (conversion PDF → JPEG)
   ↓
s3://odentas-docs/odentas-sign-images/{requestId}/page-{num}.jpg
```

## Notes

- La Lambda extrait le `requestId` depuis le nom du fichier (partie avant le premier tiret)
- Format attendu : `{requestId}-{timestamp}.pdf`
- Exemple : `4fc9bdf9-eacc-4eed-b713-da40a095c5e7-1234567890.pdf` → requestId = `4fc9bdf9`
- Les images sont stockées avec metadata pour traçabilité
