ujusum:1-implantation:6-contrats-esignatures
Table des matières
Sprint 5 — Contrats & Signature Électronique
Objectif du Sprint
Transformer une réservation en contrat juridiquement opposable.
À l'issue du Sprint 5 :
- Un contrat est généré automatiquement à partir d'une réservation
- Les modèles de contrat sont administrables
- Un PDF est produit automatiquement
- Le contrat est envoyé en signature électronique
- Le client peut signer à distance
- Le contrat signé est archivé
- Le contrat est téléchargeable à tout moment
Ce sprint clôture le cycle :
Recherche ↓ Réservation ↓ Contractualisation
Périmètre
Modules concernés
ContractsModule ContractTemplateModule ContractGenerationModule SignatureModule DocumentModule PdfModule
Workflow métier
Réservation ↓ Génération contrat ↓ Production PDF ↓ Envoi signature ↓ Signature client ↓ Archivage ↓ Contrat actif
User Stories
US-501 : Générer un contrat
En tant que gestionnaire
Je souhaite générer un contrat
Afin de formaliser la réservation.
Endpoint
POST /contracts/generate
Données utilisées
Client Bien Propriétaire Réservation Tarifs Conditions
Résultat
Contrat PDF généré Version 1 Statut GENERATED
US-502 : Consulter un contrat
Endpoint
GET /contracts/{id}
Données
Numéro Version Date génération Date signature Statut Documents
US-503 : Télécharger un contrat
Endpoint
GET /contracts/{id}/download
Formats
Gestion des modèles
US-504 : Créer un modèle
Endpoint
POST /contract-templates
Données
Nom Version Contenu Variables
US-505 : Modifier un modèle
Endpoint
PUT /contract-templates/{id}
US-506 : Versionner un modèle
Objectif
Conserver les versions historiques.
Exemple
V1 ↓ V2 ↓ V3
Génération PDF
US-507 : Produire un PDF
Étapes
Template ↓ Fusion données ↓ HTML ↓ PDF ↓ Archivage
Bibliothèque
Puppeteer ou PDFKit
Nommage
CONTRACT-2027-000001.pdf
Signature électronique
US-508 : Envoyer en signature
Endpoint
POST /contracts/{id}/send-signature
Fournisseurs compatibles
Yousign DocuSign Universign
État
GENERATED ↓ SENT
US-509 : Suivre une signature
Endpoint
GET /contracts/{id}/signature-status
Statuts
PENDING OPENED SIGNED REFUSED EXPIRED
US-510 : Réception contrat signé
Workflow
Signature validée ↓ Webhook fournisseur ↓ Téléchargement PDF signé ↓ Archivage ↓ Mise à jour contrat
État final
SIGNED
Archivage documentaire
US-511 : Archiver un document
Types
CONTRACT SIGNED_CONTRACT ANNEX INVOICE IDENTITY_DOCUMENT
Stockage
S3 MinIO
US-512 : Historique documentaire
Endpoint
GET /documents
Filtres
Type Client Réservation Date
Cycle de vie du contrat
DRAFT ↓ GENERATED ↓ SENT ↓ SIGNED ↓ ARCHIVED └── REFUSED └── EXPIRED
Modèle Prisma
Contract
model Contract {
id String @id @default(uuid())
reservationId String @unique
contractNumber String @unique
version Int
status String
generatedAt DateTime?
signedAt DateTime?
createdAt DateTime @default(now())
}
ContractTemplate
model ContractTemplate {
id String @id @default(uuid())
name String
version Int
content String
active Boolean
}
ContractSignature
model ContractSignature {
id String @id @default(uuid())
contractId String
provider String
externalId String
status String
signedAt DateTime?
}
Document
model Document {
id String @id @default(uuid())
entityType String
entityId String
documentType String
fileName String
storagePath String
uploadedAt DateTime
}
Architecture Backend
src/modules/contracts ├── contracts │ ├── templates │ ├── generation │ ├── signatures │ ├── documents │ └── pdf
Domain Services
ContractGenerationService PdfGenerationService TemplateRenderingService SignatureService DocumentStorageService
Événements métier
ContractGenerated
ContractGenerated
ContractSent
ContractSent
ContractSigned
ContractSigned
ContractRefused
ContractRefused
Swagger
Tags
Contracts ContractTemplates ContractGeneration Signatures Documents
Volume API
Environ :
20 endpoints
Frontend
Espace Client
Pages :
/contracts /contracts/[id] /documents
Back Office
Pages :
/contracts /contracts/[id] /contract-templates /documents
Composants
ContractViewer ContractTimeline DocumentLibrary TemplateEditor SignatureStatusCard
Tests
Unitaires
ContractGenerationService PdfGenerationService SignatureService DocumentStorageService
Intégration
Reservation ↓ Generate Contract ↓ Generate PDF ↓ Archive
E2E
Réservation ↓ Génération contrat ↓ Envoi signature ↓ Signature ↓ Téléchargement contrat signé
Définition de terminé
Le Sprint 5 est terminé lorsque :
- Contrat généré automatiquement
- PDF généré automatiquement
- Signature électronique fonctionnelle
- Archivage fonctionnel
- Téléchargement fonctionnel
- Historique fonctionnel
- Swagger à jour
- Tests verts
- CI verte
Livrables
- ContractsModule
- ContractTemplateModule
- ContractGenerationModule
- SignatureModule
- DocumentModule
- PdfModule
- DTO
- Swagger
- Tests
- Migrations Prisma
Démonstration Sprint
Scénario métier :
1. Réservation créée 2. Génération du contrat 3. Génération PDF 4. Envoi signature 5. Signature client 6. Réception document signé 7. Archivage 8. Téléchargement contrat
Sprint suivant
Sprint 6 — Paiements & Facturation
Objectif :
Permettre l'encaissement et la facturation.
Modules concernés :
PaymentsModule InvoicesModule RefundsModule PaymentGatewayModule AccountingModule
Fonctionnalités :
- Paiement CB
- Paiement acompte
- Paiement solde
- Factures automatiques
- Avoirs
- Remboursements
- Historique financier
- Export comptable
À l'issue du Sprint 6, une réservation pourra être intégralement payée et facturée.
ujusum/1-implantation/6-contrats-esignatures.txt · Dernière modification : 2026/06/06 03:15 de 91.170.108.99