Synchronisation des Templates de Mail
Vue d'ensemble
Le système de gestion des templates de mail permet de synchroniser automatiquement les templates depuis le système de fichiers (backend/email_templates/) vers la base de données.
Fonctionnalités
1. Bouton de Synchronisation (Frontend)
Emplacement : Page "Gestion des Templates de Mail" (/mail-templates)
Fonctionnement :
- Bouton bleu avec icône de synchronisation dans la section filtres
- Appelle l'endpoint
POST /api/privee/mail/templates/sync - Affiche un message de feedback avec :
- Nombre de templates créés
- Nombre de templates mis à jour
- Nombre de templates inchangés
- Liste des erreurs éventuelles
États du bouton :
- Normal : Bleu vif
#1976d2 - Hover : Bleu foncé
#1565c0 - Désactivé (pendant sync) : Bleu clair
#90caf9avec texte "Synchronisation..."
2. Endpoint de Synchronisation (Backend)
Route : POST /api/privee/mail/templates/sync
Service : MailTemplateSyncService
Processus :
- Lit tous les fichiers
.hbsdansbackend/email_templates/ - Parse les métadonnées YAML de chaque fichier
- Compare avec les templates existants en base
- Crée ou met à jour selon les besoins
Réponse :
{
created: string[], // Noms des templates créés
updated: string[], // Noms des templates mis à jour
unchanged: string[], // Noms des templates inchangés
errors: Array<{ // Erreurs rencontrées
file: string,
error: string
}>
}
3. Format des Templates (.hbs)
Les templates doivent commencer par un bloc de métadonnées YAML :
Champs obligatoires :
subject: Sujet du mailcategory: Catégorie du templatedynamicFields: Objet définissant les champs personnalisés
Variables client de base :
nom,prenom,civilitepointsFidelite,niveauFidelisation,idClientemail(pour l'adresse mail)
Aperçu des Templates
Interface de Prévisualisation
Lors de la visualisation d'un template, la modale affiche :
- Données Client : Formulaire pour personnaliser les valeurs de test
- Aperçu du Mail : Rendu HTML du mail avec iframe
- En-tête avec destinataire
- Sujet du mail
- Contenu HTML rendu
Note : La section "Contenu" (HTML brut) a été retirée pour simplifier l'interface.
Fichiers Modifiés
Frontend
-
frontend/src/pages/MailTemplatePage.tsx: Composant principal- Fonction
handleSync(): Gestion de la synchronisation - État
syncingetsyncMessage: Feedback utilisateur - Suppression de la section "Contenu" dans la preview
- Fonction
-
frontend/src/pages/MailTemplatePage.css: Styles.btn-sync: Style du bouton de synchronisation.success-message: Message de succès
Backend
backend/src/mail/mail-template-sync.service.ts: Service de synchronisationbackend/src/mail/mail-template-private.controller.ts: Endpoint/sync
Utilisation
Pour ajouter/modifier un template :
- Créer/modifier un fichier
.hbsdansbackend/email_templates/ - Ajouter les métadonnées YAML en en-tête
- Cliquer sur "Synchroniser" dans l'interface web
- Vérifier le message de confirmation
Pour tester un template :
- Sélectionner un template dans la liste
- Cliquer sur l'icône "Aperçu" (œil)
- Modifier les données client si nécessaire
- Visualiser le rendu dans l'iframe
Sécurité
- Endpoint accessible uniquement via l'API privée (
/api/privee) - Lecture seule depuis le dossier
email_templates/ - Validation des métadonnées YAML obligatoire
- Soft delete des templates (pas de suppression définitive)
Logs
Le service génère des logs pour chaque opération :
Synchronisation de X templates depuis le système de fichiers...
✓ Template créé: nom_template
✓ Template mis à jour: autre_template
Template inchangé: template_existant
Synchronisation terminée: X créés, Y mis à jour, Z inchangés, 0 erreurs