espace-paie-odentas/signature-templates/README.md
odentas b790faf12c feat: Implémentation complète du système Odentas Sign
- Remplacement de DocuSeal par solution souveraine Odentas Sign
- Système d'authentification OTP pour signataires (bcryptjs + JWT)
- 8 routes API: send-otp, verify-otp, sign, pdf-url, positions, status, webhook, signers
- Interface moderne avec canvas de signature et animations (framer-motion, confetti)
- Système de templates pour auto-détection des positions de signature (CDDU, RG, avenants)
- PDF viewer avec @react-pdf-viewer (compatible Next.js)
- Stockage S3: source/, signatures/, evidence/, signed/, certs/
- Tables Supabase: sign_requests, signers, sign_positions, sign_events, sign_assets
- Evidence bundle automatique (JSON metadata + timestamps)
- Templates emails: OTP et completion
- Scripts Lambda prêts: pades-sign (KMS seal) et tsaStamp (RFC3161)
- Mode test détecté automatiquement (emails whitelist)
- Tests complets avec PDF CDDU réel (2 signataires)
2025-10-27 19:03:07 +01:00

3 KiB

Templates de positions de signature

Ce dossier contient les positions pré-configurées des signatures pour chaque type de document.

Format

{
  "templateName": "contrat_cddu",
  "description": "Contrat CDDU mono/multi-mois",
  "pdfPattern": "contrat_cddu_.*\\.pdf",
  "positions": [
    {
      "role": "Employeur",
      "page": 3,
      "x": 50,
      "y": 150,
      "width": 200,
      "height": 80
    },
    {
      "role": "Salarié",
      "page": 3,
      "x": 350,
      "y": 150,
      "width": 200,
      "height": 80
    }
  ]
}

Système de coordonnées PDF

  • Origine (0,0) : Coin INFÉRIEUR GAUCHE de la page
  • X : De gauche à droite (0 → largeur page)
  • Y : De bas en haut (0 → hauteur page)
  • Page A4 : 595x842 points

Exemples de positions courantes

Haut de page : y = 750-800
Milieu de page : y = 400-450
Bas de page : y = 50-150

Gauche : x = 50-100
Centre : x = 250-300
Droite : x = 400-500

Création d'un nouveau template

Méthode 1 : Mesure manuelle

  1. Ouvrir le PDF dans Adobe Acrobat ou un éditeur
  2. Activer l'outil de mesure
  3. Noter les coordonnées X,Y du coin inférieur gauche de la zone de signature
  4. Noter la largeur et hauteur souhaitées
  5. Créer le fichier JSON

Méthode 2 : Test et ajustement

  1. Créer un template avec des positions estimées
  2. Tester avec create-real-signature.js
  3. Signer le document
  4. Ajuster les positions si nécessaire
  5. Re-tester jusqu'à satisfaction

Méthode 3 : Depuis DocuSeal

Si vous avez déjà un document configuré dans DocuSeal:

  1. Noter où les zones de signature sont placées visuellement
  2. Convertir en coordonnées PDF (attention: DocuSeal utilise une origine en haut-gauche)
  3. Formule de conversion: y_pdf = hauteur_page - y_docuseal - hauteur_signature

Templates disponibles

contrat_cddu.json

Contrat CDDU standard (3 pages)

  • Employeur: Page 3, bas gauche
  • Salarié: Page 3, bas droite

contrat_rg.json

Contrat Régime Général

  • Employeur: Page 2, bas gauche
  • Salarié: Page 2, bas droite

avenant.json

Avenant de contrat

  • Employeur: Page 1, bas gauche
  • Salarié: Page 1, bas droite

Utilisation dans le code

const fs = require('fs');

// Charger un template
const template = JSON.parse(
  fs.readFileSync('./signature-templates/contrat_cddu.json', 'utf-8')
);

// Utiliser les positions
const positions = {};
template.positions.forEach(p => {
  positions[p.role] = {
    page: p.page,
    x: p.x,
    y: p.y,
    width: p.width,
    height: p.height,
  };
});

Auto-détection

Le script create-real-signature.js peut auto-détecter le template à utiliser basé sur:

  • Le nom du fichier (regex pattern matching)
  • Le type de document (détecté dans les métadonnées)
  • Le nombre de pages

Maintenance

Quand créer un nouveau template:

  • Nouveau type de contrat
  • Changement de mise en page
  • Ajout de nouveaux rôles de signataires

Quand mettre à jour un template existant:

  • Les signatures sont mal positionnées
  • Changement de format de document
  • Feedback utilisateurs