From 3f16cd8a48ebe50ab5994a05e564456cdec959eb Mon Sep 17 00:00:00 2001 From: Manus Sandbox Date: Mon, 17 Nov 2025 06:06:23 -0500 Subject: [PATCH] =?UTF-8?q?Checkpoint:=20Ajout=20du=20champ=20"Public=20ci?= =?UTF-8?q?ble"=20dans=20tous=20les=20exports=20(Excel,=20PDF=20liste=20d'?= =?UTF-8?q?inscrits,=20PDF=20feuille=20de=20pr=C3=A9sence)=20pour=20une=20?= =?UTF-8?q?meilleure=20tra=C3=A7abilit=C3=A9=20des=20s=C3=A9quences?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/exportService.ts | 7 +++++++ server/routers.ts | 3 +++ todo.md | 8 ++++++++ 3 files changed, 18 insertions(+) diff --git a/server/exportService.ts b/server/exportService.ts index cf55d3a..bc373b1 100644 --- a/server/exportService.ts +++ b/server/exportService.ts @@ -21,6 +21,7 @@ interface SequenceInfo { sequenceNom: string; dates: Array<{ dateDebut: Date; dateFin: Date; ordre: number }>; lieu: string; + publicCible: string; inscriptions: InscriptionExport[]; } @@ -36,6 +37,7 @@ interface FeuillePresenceInfo { sequenceNom: string; dates: Array<{ dateDebut: Date; dateFin: Date; ordre: number }>; lieu: string; + publicCible: string; apprenants: ApprenantPresence[]; } @@ -62,6 +64,7 @@ export function generateExcelExport(sequenceInfo: SequenceInfo): Buffer { ['Formation', sequenceInfo.formationNom], ['Séquence', sequenceInfo.sequenceNom], ['Lieu', sequenceInfo.lieu], + ['Public cible', sequenceInfo.publicCible === 'directeur' ? 'Directeurs' : sequenceInfo.publicCible === 'chef_service' ? 'Chefs de service' : 'Autre'], ['Nombre de dates', sequenceInfo.dates.length.toString()], [], ['DATES DE FORMATION'], @@ -127,6 +130,8 @@ export function generatePDFExport(sequenceInfo: SequenceInfo): Buffer { yPos += 6; doc.text(`Lieu : ${sequenceInfo.lieu}`, 14, yPos); yPos += 6; + doc.text(`Public cible : ${sequenceInfo.publicCible === 'directeur' ? 'Directeurs' : sequenceInfo.publicCible === 'chef_service' ? 'Chefs de service' : 'Autre'}`, 14, yPos); + yPos += 6; doc.text(`Nombre de dates : ${sequenceInfo.dates.length}`, 14, yPos); yPos += 8; @@ -187,6 +192,8 @@ export function generateFeuillePresence(feuilleInfo: FeuillePresenceInfo): Buffe doc.text(`Séquence : ${feuilleInfo.sequenceNom}`, 14, yPos); yPos += 6; doc.text(`Lieu : ${feuilleInfo.lieu}`, 14, yPos); + yPos += 6; + doc.text(`Public cible : ${feuilleInfo.publicCible === 'directeur' ? 'Directeurs' : feuilleInfo.publicCible === 'chef_service' ? 'Chefs de service' : 'Autre'}`, 14, yPos); yPos += 8; // Dates de formation diff --git a/server/routers.ts b/server/routers.ts index 0acdc40..44e45bb 100644 --- a/server/routers.ts +++ b/server/routers.ts @@ -444,6 +444,7 @@ export const appRouter = router({ ordre: d.ordre, })), lieu: sequence.lieu, + publicCible: sequence.publicCible, inscriptions: data, }); @@ -484,6 +485,7 @@ export const appRouter = router({ ordre: d.ordre, })), lieu: sequence.lieu, + publicCible: sequence.publicCible, inscriptions: data, }); @@ -521,6 +523,7 @@ export const appRouter = router({ ordre: d.ordre, })), lieu: sequence.lieu, + publicCible: sequence.publicCible, apprenants: data, }); diff --git a/todo.md b/todo.md index 0fcc5c7..a80c659 100644 --- a/todo.md +++ b/todo.md @@ -144,3 +144,11 @@ - [x] Implémenter la logique de vérification du public cible dans le formulaire d'inscription - [x] Afficher une alerte d'information (non bloquante) si le public cible ne correspond pas - [x] Tester l'alerte avec différents scénarios (correspondance, non-correspondance) + +## Inclusion du public cible dans les exports + +- [x] Analyser le code des exports Excel et PDF +- [x] Ajouter le public cible dans l'export Excel des listes d'inscrits +- [x] Ajouter le public cible dans l'export PDF des listes d'inscrits +- [x] Ajouter le public cible dans l'export PDF des feuilles de présence +- [x] Tester tous les exports pour vérifier l'affichage correct