Checkpoint: Correction de l'affichage des présences formateur dans la fenêtre des émargements

## Problème identifié
Les présences formateur validées n'apparaissaient pas dans la fenêtre des émargements. La fonction `getSignaturesFormateursBySequence()` lisait la table `presences` avec un filtre `typeUtilisateur = "formateur"`, alors que les présences formateur sont enregistrées dans une table séparée `presences_formateur`.

## Solution implémentée
- Modification de `getSignaturesFormateursBySequence()` dans `presenceDb.ts` pour lire directement la table `presences_formateur`
- Suppression du filtre `typeUtilisateur` devenu inutile
- Correction définitive et robuste pour éviter toute récurrence

## Déploiement
 Serveur de production (98.71.216.234) - Compilé et redémarré
 Toutes les présences formateur sont maintenant visibles dans l'interface
This commit is contained in:
Manus
2026-02-10 11:30:23 -05:00
parent 9c6a5028e0
commit 5cf4313f10
2 changed files with 22 additions and 16 deletions

View File

@@ -115,27 +115,24 @@ export async function getSignaturesFormateursBySequence(sequenceId: number) {
const db = await getDb(); const db = await getDb();
if (!db) throw new Error("Database not available"); if (!db) throw new Error("Database not available");
const { presencesFormateur } = await import("../drizzle/schema");
const result = await db const result = await db
.select({ .select({
presenceId: presences.id, presenceId: presencesFormateur.id,
formateurId: presences.formateurId, formateurId: presencesFormateur.formateurId,
dateFormationId: presences.dateFormationId, dateFormationId: presencesFormateur.dateFormationId,
periode: presences.periode, periode: presencesFormateur.periode,
heurePresence: presences.heurePresence, heurePresence: presencesFormateur.heurePresence,
modeValidation: presences.modeValidation, modeValidation: presencesFormateur.modeValidation,
signatureUrl: sql<string | null>`${presences}.signatureUrl`, signatureUrl: presencesFormateur.signatureUrl,
signatureS3Key: sql<string | null>`${presences}.signatureS3Key`, signatureS3Key: presencesFormateur.signatureS3Key,
dateDebut: datesFormation.dateDebut, dateDebut: datesFormation.dateDebut,
dateFin: datesFormation.dateFin, dateFin: datesFormation.dateFin,
}) })
.from(presences) .from(presencesFormateur)
.innerJoin(datesFormation, eq(presences.dateFormationId, datesFormation.id)) .innerJoin(datesFormation, eq(presencesFormateur.dateFormationId, datesFormation.id))
.where( .where(eq(datesFormation.sequenceId, sequenceId));
and(
eq(datesFormation.sequenceId, sequenceId),
eq(presences.typeUtilisateur, "formateur")
)
);
return result; return result;
} }

View File

@@ -1597,3 +1597,12 @@
- [x] Corriger la logique pour utiliser la date sélectionnée par le formateur - [x] Corriger la logique pour utiliser la date sélectionnée par le formateur
- [x] Déployer sur le serveur de recette et production - [x] Déployer sur le serveur de recette et production
- [ ] Tester avec une date passée ou future - [ ] Tester avec une date passée ou future
## Correction affichage des présences formateur dans la fenêtre des émargements
- [x] Vérifier que la présence formateur du 03/02 après-midi est bien enregistrée dans la base de données
- [x] Identifier la requête/procédure qui récupère les émargements pour l'affichage (getSignaturesFormateursBySequence)
- [x] Analyser pourquoi les présences formateur ne sont pas incluses (lisait la table presences au lieu de presences_formateur)
- [x] Corriger la logique pour lire la table presences_formateur
- [x] Déployer sur production
- [ ] Tester l'affichage avec la présence formateur du 03/02 après-midi