Checkpoint: Intégration complète des signatures tactiles (matin et après-midi) dans les feuilles de présence PDF. Correction du bug apres-midi vs apres_midi. Logs de debug retirés. Déployé sur VPS.
This commit is contained in:
9
.manus/db/db-query-1769608551319.json
Normal file
9
.manus/db/db-query-1769608551319.json
Normal file
@@ -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
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
}));
|
||||
|
||||
|
||||
20
todo.md
20
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
|
||||
|
||||
Reference in New Issue
Block a user