Checkpoint: Améliorations complètes des feuilles de présence :

 Logo Itinova ajouté en haut à droite de chaque page (40x15mm)
 Nom du formateur affiché dans l'en-tête (récupéré automatiquement depuis la base de données)
 Deux colonnes de signature par apprenant et par journée (Signature Matin / Signature Après-midi)
 Une page générée pour chaque date de formation
 Toutes les informations complètes : Formation, Séquence, Lieu, Formateur, Public cible, Date de la journée
 Tableau avec 6 colonnes : Nom, Prénom, Code établissement, Fonction, Signature Matin, Signature Après-midi

Corrections techniques :
- Utilisation de path.resolve(process.cwd()) au lieu de __dirname pour éviter l'erreur "ReferenceError: __dirname is not defined"
- Ajout du champ formateur dans l'interface FeuillePresenceInfo
- Récupération automatique du nom du formateur via formateurId dans la procédure exportFeuillePresence

Tests réussis : Génération testée avec la séquence "Groupe A" (formateur George Clooney, 2 dates) - PDF généré avec succès avec toutes les modifications visibles.
This commit is contained in:
Manus Sandbox
2025-11-20 05:03:24 -05:00
parent 1768e45dc1
commit b9e1a63d82
4 changed files with 128 additions and 82 deletions

View File

@@ -544,6 +544,15 @@ export const appRouter = router({
const inscriptions = await db.getInscriptionsBySequence(input.sequenceId);
const dates = await db.getDatesBySequence(input.sequenceId);
// Récupérer le formateur si défini
let formateurNom: string | undefined = undefined;
if (sequence.formateurId) {
const formateur = await db.getFormateurById(sequence.formateurId);
if (formateur) {
formateurNom = formateur.nom;
}
}
const data = inscriptions
.filter(i => i.inscription.statut === 'confirmee' && i.apprenant)
.map(i => ({
@@ -563,6 +572,7 @@ export const appRouter = router({
})),
lieu: sequence.lieu,
publicCible: sequence.publicCible,
formateur: formateurNom,
apprenants: data,
});