From 97b8af438c1818cd691e8a80534ec94fa629961f Mon Sep 17 00:00:00 2001 From: Manus Sandbox Date: Wed, 10 Dec 2025 10:46:32 -0500 Subject: [PATCH] =?UTF-8?q?Checkpoint:=20Correction=20du=20bug=20o=C3=B9?= =?UTF-8?q?=20le=20nom=20du=20formateur=20n'=C3=A9tait=20pas=20affich?= =?UTF-8?q?=C3=A9=20dans=20les=20emails=20de=20rappel=20J-7=20et=20J-1=20a?= =?UTF-8?q?lors=20que=20la=20pr=C3=A9visualisation=20fonctionnait=20correc?= =?UTF-8?q?tement.=20Modifications=20:=201)=20Ajout=20du=20param=C3=A8tre?= =?UTF-8?q?=20formateur=3F=20dans=20la=20signature=20de=20sendRappelJ7Emai?= =?UTF-8?q?l=20(server/emailService.ts=20ligne=20231),=202)=20Ajout=20de?= =?UTF-8?q?=20l'affichage=20du=20formateur=20dans=20le=20template=20HTML?= =?UTF-8?q?=20de=20rappel=20J-7=20(ligne=20261),=203)=20Passage=20du=20par?= =?UTF-8?q?am=C3=A8tre=20formateur=20dans=20sendGroupEmail=20pour=20le=20t?= =?UTF-8?q?ype=20rappel=20(ligne=20406),=204)=20Passage=20du=20param=C3=A8?= =?UTF-8?q?tre=20formateur=20dans=20rappelScheduler=20pour=20J-7=20et=20J-?= =?UTF-8?q?1=20(lignes=20160=20et=20178),=205)=20R=C3=A9cup=C3=A9ration=20?= =?UTF-8?q?et=20passage=20du=20formateur=20dans=20testerRappel=20(routers.?= =?UTF-8?q?ts=20lignes=20913-917,=20955,=20971).=20Le=20nom=20du=20formate?= =?UTF-8?q?ur=20s'affiche=20maintenant=20correctement=20dans=20tous=20les?= =?UTF-8?q?=20emails=20de=20rappel=20envoy=C3=A9s.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/emailService.ts | 3 +++ server/rappelScheduler.ts | 2 ++ server/routers.ts | 9 +++++++++ todo.md | 7 +++++++ 4 files changed, 21 insertions(+) diff --git a/server/emailService.ts b/server/emailService.ts index 65ca75f..012cfad 100644 --- a/server/emailService.ts +++ b/server/emailService.ts @@ -228,6 +228,7 @@ export async function sendRappelJ7Email(params: { sequenceNom: string; dates: Array<{ dateDebut: Date; dateFin: Date; ordre: number }>; lieu: string; + formateur?: string; }): Promise { const fonctionLabel = params.apprenantFonction === 'directeur' ? 'Directeur' : params.apprenantFonction === 'chef_service' ? 'Chef de service' : ''; @@ -257,6 +258,7 @@ export async function sendRappelJ7Email(params: {

Informations pratiques

Séquence : ${params.sequenceNom}

Lieu : ${params.lieu}

+ ${params.formateur ? `

Formateur : ${params.formateur}

` : ''}

Dates :

${datesHTML} @@ -401,6 +403,7 @@ export async function sendGroupEmail(params: { sequenceNom: params.sequenceNom, dates: params.dates, lieu: params.lieu || '', + formateur: params.formateur, }); } else { // rappel_j1 diff --git a/server/rappelScheduler.ts b/server/rappelScheduler.ts index 55c2b90..81b8514 100644 --- a/server/rappelScheduler.ts +++ b/server/rappelScheduler.ts @@ -157,6 +157,7 @@ async function processRappel(rappel: any) { ordre: d.ordre })), lieu: sequence.lieu || "", + formateur: formateurNom, }); console.log(`[Rappels] Email J-7 envoyé à ${apprenant.email} pour la séquence ${sequence.nom}`); } else if (rappel.templateType === "rappelJ1") { @@ -174,6 +175,7 @@ async function processRappel(rappel: any) { ordre: d.ordre })), lieu: sequence.lieu || "", + formateur: formateurNom, }); console.log(`[Rappels] Email J-1 envoyé à ${apprenant.email} pour la séquence ${sequence.nom}`); } diff --git a/server/routers.ts b/server/routers.ts index 2db0881..d9c1a80 100644 --- a/server/routers.ts +++ b/server/routers.ts @@ -909,6 +909,13 @@ export const appRouter = router({ throw new TRPCError({ code: 'NOT_FOUND', message: 'Formation introuvable' }); } + // Récupérer le formateur si présent + let formateurNom: string | undefined; + if (sequence.formateurId) { + const formateur = await db.getFormateurById(sequence.formateurId); + formateurNom = formateur?.nom; + } + // Récupérer les dates de la séquence const dates = await db.getDatesBySequence(input.sequenceId); @@ -945,6 +952,7 @@ export const appRouter = router({ ordre: d.ordre })), lieu: sequence.lieu || '', + formateur: formateurNom, }); } else { await sendRappelJ1Email({ @@ -960,6 +968,7 @@ export const appRouter = router({ ordre: d.ordre })), lieu: sequence.lieu || '', + formateur: formateurNom, }); } diff --git a/todo.md b/todo.md index b6f79d7..b4601f3 100644 --- a/todo.md +++ b/todo.md @@ -418,3 +418,10 @@ - [x] Identifier pourquoi le compteur ne se met pas à jour - [x] Corriger le bug de rafraîchissement du compteur - [x] Tester la suppression d'un apprenant et vérifier le compteur + +## Bug nom formateur dans email rappel J-7 +- [x] Analyser le code d'envoi des emails de rappel +- [x] Comparer avec le code de prévisualisation +- [x] Identifier pourquoi le nom du formateur n'est pas remplacé +- [x] Corriger le bug de remplacement du nom du formateur +- [x] Tester l'envoi réel et vérifier le remplacement