Feature #82
closedAméliorer la génération de PDF pour les contrats avec design professionnel et signatures configurables
100%
ÉPIC découpé (PO : sous-tâche backend éclatée en 3). Génération PDF contrats pro + signatures configurables. Sous-tâches : #90 Backend moteur de rendu (police, logo, marges 2cm, schéma réglages) [socle] ; #91 Backend signatures configurables + mentions [dép. #90] ; #92 Backend numéro unique (séquence Postgres) + enregistrement/téléchargement/email après contre-signature [dép. #90] ; #93 Frontend config modèle (police/logo/emplacement) [partage le schéma #90, design requis] ; #94 Frontend avertissement balises manquantes [indépendant]. Entité Contract : html_template_id, signature_data, internal_signature_id, internal_signed_pdf_url.
Description
### Problème
Actuellement, la génération de PDF des contrats dans l'onglet "Édition de contrat" produit un rendu peu professionnel, basé sur une copie brute de l'HTML. Le design manque de cohérence (polices, marges, alignements) et les signatures ne sont pas intégrées de manière flexible ou esthétique. Cela nuit à l'image professionnelle de l'application et complique le processus de validation des contrats.
### Contexte
- Les utilisateurs sélectionnent un modèle de contrat (créé dans les paramètres avec des balises comme `{{nom_artiste}}`) et remplacent ces balises par les données de l'événement.
- Le PDF généré doit être envoyé via un formulaire sans identification pour validation et signature par le destinataire.
- Les signatures (expéditeur et destinataire) doivent être intégrées automatiquement et positionnées de manière configurable.
- Un numéro de contrat unique doit être généré et affiché dans le PDF pour faciliter le suivi.
### Comportement proposé
1. **Design du PDF** :
- Utiliser la police choisie lors de la création du modèle de contrat.
- Intégrer le logo de la structure (configurable dans les paramètres du modèle) en haut à gauche, avec une ligne de séparation.
- Appliquer des marges de 2 cm et une mise en page soignée (alignements, espacements).
2. **Signatures** :
- Permettre de choisir l'emplacement des signatures (bas à droite, bas à gauche, côte à côte) dans les paramètres du modèle.
- Intégrer automatiquement la signature de l'expéditeur (depuis les paramètres) et celle du destinataire (après signature en ligne) aux emplacements choisis.
- Ajouter des mentions sous les signatures (ex: "Signé par [Nom] le [date]").
3. **Numéro de contrat** :
- Générer un numéro unique (ex: "CONTRAT-2024-001") et l'afficher en pied de page.
- Incrémenter automatiquement ce numéro pour chaque nouveau contrat.
4. **Gestion des erreurs** :
- Afficher un message d'avertissement si une balise est manquante avant génération, avec les options "Ignorer et générer" ou "Corriger".
## Acceptance criteria
- [ ] Le PDF généré respecte la police et la mise en page définies dans le modèle de contrat.
- [ ] Le logo de la structure peut être intégré en haut à gauche du PDF (option configurable dans les paramètres du modèle).
- [ ] Les marges de 2 cm sont appliquées sur tous les côtés du PDF.
- [ ] Les signatures (expéditeur et destinataire) sont intégrées aux emplacements configurables dans les paramètres du modèle.
- [ ] Les mentions "Signé par [Nom] le [date]" sont ajoutées sous chaque signature.
- [ ] Un numéro de contrat unique est généré et affiché en pied de page du PDF.
- [ ] Le numéro de contrat est incrémenté automatiquement pour chaque nouveau contrat.
- [ ] Un message d'avertissement s'affiche si une balise est manquante avant génération, avec les options "Ignorer et générer" ou "Corriger".
- [ ] Le PDF final est enregistré dans l'application et peut être téléchargé après contresignature.
- [ ] Le PDF est envoyé par email au destinataire après contresignature.
## Classification
- feature
## Complexity
- 7/10 — La complexité est modérée en raison de l'intégration de plusieurs fonctionnalités (design PDF, gestion des signatures, numéro de contrat, gestion des erreurs) et de la nécessité de configurer des paramètres flexibles dans les modèles de contrat.
Files