From fc6bf5ddcc09871cbef5720fd638faaeb839b646 Mon Sep 17 00:00:00 2001 From: Manus Sandbox Date: Sun, 30 Nov 2025 12:56:38 -0500 Subject: [PATCH] Checkpoint: Correction du bug de remplacement des tags dans les emails de teaser et rappel : MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problème corrigé : - Les tags {{nomFormation}}, {{nomSequence}}, etc. n'étaient pas remplacés dans les emails de teaser et rappel - Les fonctions sendTeaserEmail et sendRappelJ7Email ne passaient pas les variables au générateur de template Solution appliquée : - Ajout de l'objet variables dans sendTeaserEmail avec : nomApprenant, prenomApprenant, nomFormation, nomSequence, dateDebut, dateFin - Ajout de l'objet variables dans sendRappelJ7Email avec les mêmes variables plus le lieu - Les variables sont maintenant correctement transmises à getEmailTemplate() pour le remplacement Variables disponibles dans les templates : - {{nomApprenant}} - Nom de l'apprenant - {{prenomApprenant}} - Prénom de l'apprenant - {{nomFormation}} - Nom de la formation - {{nomSequence}} - Nom de la séquence - {{dateDebut}} - Date de début formatée - {{dateFin}} - Date de fin formatée - {{lieu}} - Lieu de la formation (rappel uniquement) --- server/emailService.ts | 23 +++++++++++++++++++++-- todo.md | 7 +++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/server/emailService.ts b/server/emailService.ts index 480e8a5..05c98c6 100644 --- a/server/emailService.ts +++ b/server/emailService.ts @@ -187,10 +187,19 @@ export async function sendTeaserEmail(params: {

À très bientôt !

`; + const variables = { + nomApprenant: params.apprenantNom, + prenomApprenant: params.apprenantPrenom, + nomFormation: params.formationNom, + nomSequence: params.sequenceNom, + dateDebut: params.dates[0]?.dateDebut.toLocaleDateString('fr-FR') || '', + dateFin: params.dates[params.dates.length - 1]?.dateFin.toLocaleDateString('fr-FR') || '', + }; + return sendEmail({ to: params.apprenantEmail, subject: `Votre formation ${params.formationNom} approche !`, - html: await getEmailTemplate(content, 'teaser'), + html: await getEmailTemplate(content, 'teaser', variables), }); } @@ -246,10 +255,20 @@ export async function sendRappelJ7Email(params: {

À très bientôt !

`; + const variables = { + nomApprenant: params.apprenantNom, + prenomApprenant: params.apprenantPrenom, + nomFormation: params.formationNom, + nomSequence: params.sequenceNom, + dateDebut: params.dates[0]?.dateDebut.toLocaleDateString('fr-FR') || '', + dateFin: params.dates[params.dates.length - 1]?.dateFin.toLocaleDateString('fr-FR') || '', + lieu: params.lieu, + }; + return sendEmail({ to: params.apprenantEmail, subject: `Rappel J-7 : ${params.formationNom}`, - html: await getEmailTemplate(content, 'rappel'), + html: await getEmailTemplate(content, 'rappel', variables), }); } diff --git a/todo.md b/todo.md index 7f251ff..8359cad 100644 --- a/todo.md +++ b/todo.md @@ -786,3 +786,10 @@ - [x] Ajouter des logs pour diagnostiquer l'envoi (console.log dans routers.ts) - [x] Ajouter un message de retour avec le nombre d'emails envoyés - [x] Tester l'envoi de rappel et vérifier les logs (fonctionne correctement) + +## Bug tag {nom de la formation} non remplacé dans email teaser + +- [x] Trouver où le template d'email est généré (emailTemplateGenerator.ts) +- [x] Vérifier le système de remplacement des tags ({{nomFormation}}) +- [x] Corriger le remplacement du tag (ajout des variables dans sendTeaserEmail et sendRappelJ7Email) +- [x] Corriger et préparer pour test en production