Aller au contenu principal

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 #90caf9 avec texte "Synchronisation..."

2. Endpoint de Synchronisation (Backend)

Route : POST /api/privee/mail/templates/sync

Service : MailTemplateSyncService

Processus :

  1. Lit tous les fichiers .hbs dans backend/email_templates/
  2. Parse les métadonnées YAML de chaque fichier
  3. Compare avec les templates existants en base
  4. 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 :

{{!
subject: "Sujet du mail"
category: "Catégorie"
dynamicFields:
champPersonnalise: "string"
autreChamp: "string"
}}

<html>
<body>
<p>Bonjour {{nom}} {{prenom}},</p>
<p>{{champPersonnalise}}</p>
</body>
</html>

Champs obligatoires :

  • subject : Sujet du mail
  • category : Catégorie du template
  • dynamicFields : Objet définissant les champs personnalisés

Variables client de base :

  • nom, prenom, civilite
  • pointsFidelite, niveauFidelisation, idClient
  • email (pour l'adresse mail)

Aperçu des Templates

Interface de Prévisualisation

Lors de la visualisation d'un template, la modale affiche :

  1. Données Client : Formulaire pour personnaliser les valeurs de test
  2. 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 syncing et syncMessage : Feedback utilisateur
    • Suppression de la section "Contenu" dans la preview
  • 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 synchronisation
  • backend/src/mail/mail-template-private.controller.ts : Endpoint /sync

Utilisation

Pour ajouter/modifier un template :

  1. Créer/modifier un fichier .hbs dans backend/email_templates/
  2. Ajouter les métadonnées YAML en en-tête
  3. Cliquer sur "Synchroniser" dans l'interface web
  4. Vérifier le message de confirmation

Pour tester un template :

  1. Sélectionner un template dans la liste
  2. Cliquer sur l'icône "Aperçu" (œil)
  3. Modifier les données client si nécessaire
  4. 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