# Configuration des Signatures Électroniques DocuSeal

## Date: 14 octobre 2025 (Mise à jour)

## Fonctionnalités

### 1. Restriction des méthodes de signature

L'API DocuSeal a été configurée pour **désactiver la saisie de signature au clavier**.

Selon la documentation DocuSeal :
- `data-allow-typed-signature`: Set `false` to disallow users to type their signature (Default: true)

Les méthodes disponibles sont :
- ✅ **Dessin de signature** (activé par défaut)
- ✅ **Chargement de photo** (activé par défaut)
- ❌ **Saisie au clavier** (`data-allow-typed-signature=false`)

**⚠️ Important** : Le paramètre `data-allow-typed-signature` doit être passé dans l'URL de l'embed DocuSeal, pas dans l'API de création de soumission.

### 2. Mémorisation des signatures

La mémorisation des signatures est **activée par défaut** dans DocuSeal.
Les utilisateurs peuvent réutiliser automatiquement leur signature lors de signatures ultérieures.

### 3. Pré-remplissage de la signature employeur (✨ NOUVEAU)

La signature de l'employeur peut être **pré-remplie automatiquement** depuis la base de données :
- Signature stockée en base64 dans `organization_details.signature_b64`
- Pré-remplissage automatique via le paramètre `data-signature` dans l'URL
- L'employeur peut valider directement ou remplacer la signature

📖 **Voir documentation complète** : [DOCUSEAL_SIGNATURE_PREFILL.md](./DOCUSEAL_SIGNATURE_PREFILL.md)

## Fichiers modifiés

### `/app/api/docuseal-signature/route.ts`

**1. Configuration des submitters avec metadata** pour désactiver la saisie au clavier :

```typescript
submitters: [
  { 
    role: 'Employeur', 
    email: employerEmail,
    metadata: {
      'allow-typed-signature': false,  // Désactiver signature par saisie
      // Pré-remplir la signature si disponible (depuis organization_details)
      ...(employerSignatureB64 && {
        'signature': employerSignatureB64
      })
    }
  },
  { 
    role: 'Salarié', 
    email: employeeEmail,
    metadata: {
      'allow-typed-signature': false  // Désactiver signature par saisie
    }
  }
]
```

**2. Récupération de la signature depuis la base de données** :

```typescript
// Récupérer la signature base64 de l'organisation si disponible
let employerSignatureB64 = null;
if (orgId) {
  const { data: orgDetails } = await supabase
    .from('organization_details')
    .select('signature_b64')
    .eq('org_id', orgId)
    .maybeSingle();
  
  if (orgDetails?.signature_b64) {
    employerSignatureB64 = orgDetails.signature_b64;
  }
}
```

Ces préférences sont appliquées :
- Au niveau global de la soumission
- Au niveau de chaque signataire (Employeur et Salarié)

## Points d'application

Les configurations s'appliquent automatiquement à :

1. **Signature individuelle depuis la page de détail d'un contrat**
   - Route: `/staff/contrats/[id]`
   - Composant: `ContractEditor.tsx`
   - API: Appelle `/api/docuseal-signature`

2. **Signature groupée depuis la liste des contrats**
   - Route: `/staff/contrats`
   - Composant: `ContractsGrid.tsx`
   - API: Appelle `/api/staff/contracts/bulk-esign` → qui appelle `/api/docuseal-signature`

## Comportement utilisateur

### Pour l'employeur et le salarié :

1. **Lors de la première signature** :
   - Options disponibles : Dessiner ou Charger une image
   - Option indisponible : Saisir au clavier
   - La signature est automatiquement sauvegardée

2. **Lors des signatures suivantes** :
   - L'utilisateur peut réutiliser sa signature mémorisée
   - Ou créer une nouvelle signature (dessin/upload)
   - Pas besoin de redessiner à chaque fois

## Avantages

✅ **Sécurité renforcée** : Évite les signatures trop simplistes par saisie au clavier
✅ **Expérience utilisateur** : Dessin et upload disponibles par défaut
✅ **Conformité légale** : Signatures plus authentiques (dessin/scan)
✅ **Mémorisation native** : DocuSeal sauvegarde automatiquement les signatures
✅ **Configuration correcte** : Utilisation des bons paramètres API selon la documentation

## Test

Pour tester les modifications :

1. Créer un nouveau contrat et générer le PDF
2. Lancer la signature électronique
3. Vérifier dans l'interface DocuSeal que :
   - ❌ L'option "Saisir" n'est pas disponible
   - ✅ Les options "Dessiner" et "Charger" sont disponibles
4. Signer le document avec l'une des méthodes autorisées
5. Pour un deuxième contrat, vérifier que la signature précédente est proposée

## Références API DocuSeal

- Documentation des préférences de signature : https://docs.docuseal.co/api
- Paramètre utilisé : `metadata` dans les submitters
- Options configurées :
  - `allow-typed-signature: false` - Désactive la saisie au clavier (Default: true)
- Options par défaut (pas besoin de les configurer) :
  - Signature par dessin : activée
  - Upload de signature : activé
  - Mémorisation : activée
