espace-paie-odentas/EMAIL_TEMPLATE_SYSTEM.md
2025-10-12 17:05:46 +02:00

228 lines
No EOL
6.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Système d'Email Universel
## Vue d'ensemble
Le système d'email universel permet de gérer tous les emails de l'application avec un template unique qui s'adapte automatiquement selon le type de notification.
## Architecture
### Fichiers principaux
- `lib/emailTemplateService.ts` - Service principal du système universel
- `lib/emailMigrationHelpers.ts` - Utilitaires de migration
- `lib/emailService.ts` - Service existant mis à jour pour les contrats
- `templates-mails/` - Templates individuels existants (legacy)
## Types d'emails supportés
Le système supporte 14 types d'emails différents, chacun avec sa propre couleur et configuration :
| Type | Couleur | Usage |
|------|---------|-------|
| `contract-created` | Vert | Création de nouveaux contrats |
| `contract-updated` | Bleu | Modification de contrats |
| `contract-cancelled` | Rouge | Annulation de contrats |
| `invitation` | Violet | Invitation d'utilisateurs |
| `invoice` | Orange | Envoi de factures |
| `signature-request` | Indigo | Demande de signature électronique |
| `signature-reminder` | Ambre | Rappel de signature |
| `password-reset` | Cyan | Réinitialisation de mot de passe |
| `otp` | Lime | Codes de vérification |
| `access-granted` | Émeraude | Accès accordés |
| `access-revoked` | Rose | Accès révoqués |
| `account-activation` | Jaune | Invitation/activation de compte |
| `access-updated` | Orange | Modification dhabilitation (rôle) |
| `notification` | Gris | Notifications générales |
| `reminder` | Jaune | Rappels |
| `welcome` | Teal | Messages de bienvenue |
## Utilisation
### Envoi d'un email
```typescript
import { sendUniversalEmail } from '../lib/emailTemplateService';
// Email de nouveau contrat
await sendUniversalEmail({
to: 'artiste@example.com',
type: 'contract-created',
data: {
nomSalarie: 'Jean Dupont',
nomProducteur: 'Théâtre National',
nomSpectacle: 'Le Mariage de Figaro',
dateDebut: '15 janvier 2025',
dateFin: '30 mars 2025',
cachet: '450€',
signatureLink: 'https://example.com/sign/abc123'
}
});
// Email d'invitation
await sendUniversalEmail({
to: 'nouveau@example.com',
type: 'invitation',
data: {
invitedUserName: 'Marie Martin',
inviterName: 'Admin Système',
organizationName: 'Compagnie Théâtrale',
activationLink: 'https://example.com/activate/def456'
}
});
```
### Fonctions de migration
Pour faciliter la transition, des fonctions spécialisées sont disponibles :
```typescript
import {
sendInvitationEmail,
sendInvoiceEmail,
sendSignatureRequestEmail,
sendPasswordResetEmail,
sendOTPEmail
} from '../lib/emailMigrationHelpers';
// Utilisation simplifiée
await sendInvitationEmail({
to: 'user@example.com',
invitedUserName: 'Jean Dupont',
inviterName: 'Admin',
organizationName: 'Ma Compagnie',
activationLink: 'https://...'
});
```
### Exemples accès / habilitations
```typescript
import {
sendAccountActivationEmail,
sendAccessUpdatedEmail,
sendAccessRevokedEmail
} from '../lib/emailMigrationHelpers';
// Activation de compte
await sendAccountActivationEmail('user@example.com', {
firstName: 'Marie',
organizationName: 'Compagnie Théâtrale',
activationUrl: 'https://paie.odentas.fr/activate?token=abc'
});
// Modification dhabilitation
await sendAccessUpdatedEmail('user@example.com', {
firstName: 'Jean',
organizationName: 'Odentas',
oldRole: 'AGENT',
newRole: 'ADMIN',
updatedBy: 'admin@odentas.fr',
updateDate: new Date().toLocaleString('fr-FR')
});
// Révocation daccès
await sendAccessRevokedEmail('user@example.com', {
firstName: 'Lucie',
organizationName: 'Odentas',
reason: 'Accès obsolète',
revokedBy: 'admin@odentas.fr',
revocationDate: new Date().toLocaleString('fr-FR')
});
```
## Avantages du système universel
### 1. Cohérence visuelle
- Un seul template garantit une apparence uniforme
- Design responsive automatique
- Couleurs cohérentes selon le type d'email
### 2. Maintenance simplifiée
- Un seul fichier à maintenir au lieu de 13+ templates
- Modifications centralisées
- Configuration type par type
### 3. Flexibilité
- Ajout facile de nouveaux types d'emails
- Variables dynamiques par type
- Système d'actions configurables
### 4. Compatibilité
- Fonctionne avec AWS SES
- HTML compatible avec tous les clients email
- Fallback texte automatique
## Migration depuis l'ancien système
### Étapes recommandées
1. **Phase 1** ✅ - Système de contrats migré
- `sendContractNotifications`
- `sendContractUpdateNotifications`
- `sendContractCancellationNotifications`
2. **Phase 2** - Autres types d'emails
- Remplacer les appels directs aux templates individuels
- Utiliser les fonctions de migration disponibles
3. **Phase 3** - Nettoyage (optionnel)
- Supprimer les anciens templates après validation complète
- Simplifier les imports
### Remplacement des appels existants
```typescript
// AVANT (ancien système)
await ses.sendEmail({
Destination: { ToAddresses: [email] },
Message: {
Subject: { Data: subject },
Body: { Html: { Data: htmlTemplate } }
},
Source: fromEmail
});
// APRÈS (système universel)
await sendUniversalEmail({
to: email,
type: 'contract-created',
data: contractData
});
```
## Configuration des types d'emails
Chaque type d'email peut être configuré dans `emailTemplateService.ts` :
```typescript
'contract-created': {
subject: 'Nouveau contrat CDDU créé',
colors: {
primary: '#059669', // Vert
primaryDark: '#047857',
primaryLight: '#d1fae5'
},
title: 'Nouveau contrat',
// ... autres configurations
}
```
## Tests et validation
Le système a été testé avec :
- ✅ Build Next.js réussi
- ✅ Types TypeScript validés
- ✅ Configuration AWS SES compatible
- ✅ Templates HTML responsive
## Support technique
Pour toute question ou problème avec le système d'email universel :
1. Vérifier la configuration du type d'email
2. Valider les données fournies
3. Contrôler les logs AWS SES
4. Tester avec un email de développement
---
*Système créé pour unifier et simplifier la gestion des emails dans l'application de paie spectacle.*