diff --git a/.manus/db/db-query-1769608551319.json b/.manus/db/db-query-1769608551319.json new file mode 100644 index 0000000..f181b1c --- /dev/null +++ b/.manus/db/db-query-1769608551319.json @@ -0,0 +1,9 @@ +{ + "query": "SELECT id, inscriptionId, dateFormationId, periode, heurePresence, signatureUrl FROM presences WHERE inscriptionId = 83 ORDER BY dateFormationId, periode;", + "command": "mysql --batch --raw --column-names --default-character-set=utf8mb4 --host gateway02.us-east-1.prod.aws.tidbcloud.com --port 4000 --user 4CrrYuB5tme73Qo.root --database 7PAT67UmWoxv8vwp8Bbcv6 --execute SELECT id, inscriptionId, dateFormationId, periode, heurePresence, signatureUrl FROM presences WHERE inscriptionId = 83 ORDER BY dateFormationId, periode;", + "rows": [], + "messages": [], + "stdout": "", + "stderr": "", + "execution_time_ms": 708 +} \ No newline at end of file diff --git a/server/exportService.ts b/server/exportService.ts index ef6f95c..6778956 100644 --- a/server/exportService.ts +++ b/server/exportService.ts @@ -34,6 +34,7 @@ interface ApprenantPresence { fonction: string | null; presences?: Array<{ dateFormationId: number; + periode: 'matin' | 'apres_midi'; signatureUrl: string | null; }>; } @@ -225,7 +226,8 @@ export function generateFeuillePresence(feuilleInfo: FeuillePresenceInfo): Buffe // Tableau de présence avec signatures matin et après-midi const tableData = feuilleInfo.apprenants.map(i => { // Trouver les présences pour cette date (utiliser l'ID de la date, pas l'ordre) - const presenceMatin = i.presences?.find(p => p.dateFormationId === dateInfo.id); + const presenceMatin = i.presences?.find(p => p.dateFormationId === dateInfo.id && p.periode === 'matin'); + const presenceApresMidi = i.presences?.find(p => p.dateFormationId === dateInfo.id && p.periode === 'apres_midi'); return [ i.nom, @@ -233,7 +235,7 @@ export function generateFeuillePresence(feuilleInfo: FeuillePresenceInfo): Buffe i.codeEtablissement || '', i.fonction === 'directeur' ? 'Directeur' : i.fonction === 'chef_service' ? 'Chef de service' : 'Autre', presenceMatin?.signatureUrl || '', // Signature matin (sera remplacée par l'image) - '', // Signature après-midi (pour l'instant vide, sera implémenté si nécessaire) + presenceApresMidi?.signatureUrl || '', // Signature après-midi (sera remplacée par l'image) ]; }); @@ -262,6 +264,7 @@ export function generateFeuillePresence(feuilleInfo: FeuillePresenceInfo): Buffe // Insérer les images de signatures dans les colonnes 4 et 5 if (data.section === 'body' && (data.column.index === 4 || data.column.index === 5)) { const signatureUrl = data.cell.raw as string; + if (signatureUrl && signatureUrl.startsWith('/uploads/signatures/')) { try { // Construire le chemin absolu vers le fichier de signature @@ -282,7 +285,7 @@ export function generateFeuillePresence(feuilleInfo: FeuillePresenceInfo): Buffe doc.addImage(signatureBase64, 'PNG', cellX, cellY, cellWidth, cellHeight); } } catch (error) { - console.warn('Erreur lors du chargement de la signature:', error); + console.error('Erreur lors du chargement de la signature:', error); } } } diff --git a/server/routers.ts b/server/routers.ts index b308cc3..d66bf7e 100644 --- a/server/routers.ts +++ b/server/routers.ts @@ -1159,6 +1159,7 @@ export const appRouter = router({ .filter(p => p.inscriptionId === i.inscription.id) .map(p => ({ dateFormationId: p.dateFormationId, + periode: p.periode as 'matin' | 'apres_midi', signatureUrl: p.signatureUrl, })); diff --git a/todo.md b/todo.md index 8d2beb1..00877cc 100644 --- a/todo.md +++ b/todo.md @@ -1374,3 +1374,23 @@ - [x] Corriger la logique de recherche des présences - [x] Déployer sur VPS - [ ] Tester la génération PDF avec signatures (test utilisateur requis) + +## Bug VPS - Signatures toujours manquantes dans PDF + +- [ ] Vérifier l'existence des fichiers de signatures sur le VPS +- [ ] Vérifier les chemins d'accès aux fichiers +- [ ] Ajouter des logs de debug dans exportService.ts +- [ ] Identifier le problème exact (fichiers manquants, chemin incorrect, erreur de lecture) +- [ ] Corriger le problème +- [ ] Redéployer et tester + +## Ajout signatures après-midi dans PDF + +- [x] Modifier exportService.ts pour chercher les présences après-midi +- [x] Afficher les signatures après-midi dans la colonne correspondante +- [x] Corriger le bug apres-midi vs apres_midi (underscore vs tiret) +- [x] Déployer sur VPS +- [x] Tester avec une séquence ayant des signatures matin et après-midi +- [x] Retirer les logs de debug +- [x] Déployer la version finale sur VPS +- [x] Créer un checkpoint final