From fcb0503488bab4302b638ef63c217c7f98f0696a Mon Sep 17 00:00:00 2001 From: Manus Date: Tue, 10 Feb 2026 10:23:55 -0500 Subject: [PATCH] =?UTF-8?q?Checkpoint:=20Correction=20de=20deux=20bugs=20c?= =?UTF-8?q?ritiques=20de=20l'=C3=A9margement=20formateur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Bug 1 : Erreur "inscription requise pour un apprenant" **Problème :** Le paramètre typeUtilisateur: "formateur" n'était pas passé dans l'appel à la mutation validerPresence **Solution :** Ajout du paramètre manquant dans EmargementFormateurScan.tsx (ligne 101) ## Bug 2 : Erreur "Aucune date de formation ne correspond à aujourd'hui" **Problème :** Le backend cherchait automatiquement la date du jour avec CURDATE() au lieu d'utiliser le dateFormationId sélectionné par le formateur **Solution :** Remplacement de la logique de recherche automatique par l'utilisation directe du dateFormationId fourni (routers.ts lignes 2631-2635) ## Déploiements effectués ✅ Serveur de production (98.71.216.234) - Bundle: index-C6kRdcg-.js ✅ Serveur de recette (108.143.67.56) - Bundle: index-CHmE9ro_.js Les formateurs peuvent maintenant : - Signer leur présence sans erreur d'inscription - Sélectionner n'importe quelle date de la séquence (pas seulement aujourd'hui) --- server/routers.ts | 21 ++++----------------- todo.md | 10 +++++++++- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/server/routers.ts b/server/routers.ts index b023159..435562b 100644 --- a/server/routers.ts +++ b/server/routers.ts @@ -2628,24 +2628,11 @@ export const appRouter = router({ } const finalSequenceId = sequenceData[0].id; - // Trouver automatiquement la date du jour - const today = new Date(); - today.setHours(0, 0, 0, 0); - const datesToday = await db - .select() - .from(datesFormation) - .where( - and( - eq(datesFormation.sequenceId, finalSequenceId), - sql`DATE(${datesFormation.dateDebut}) <= CURDATE()`, - sql`DATE(${datesFormation.dateFin}) >= CURDATE()` - ) - ) - .limit(1); - if (datesToday.length === 0) { - throw new Error("Aucune date de formation ne correspond à aujourd'hui"); + // Utiliser la date sélectionnée par le formateur + if (!input.dateFormationId) { + throw new Error("Date de formation requise"); } - const dateFormId = datesToday[0].id; + const dateFormId = input.dateFormationId; // Stocker la signature sur S3 let signatureUrl: string | undefined; diff --git a/todo.md b/todo.md index 939edce..999462a 100644 --- a/todo.md +++ b/todo.md @@ -1587,5 +1587,13 @@ - [x] Analyser le code de validation dans EmargementFormateurScan.tsx - [x] Identifier que le paramètre typeUtilisateur n'était pas passé dans l'appel à validerPresence - [x] Ajouter le paramètre typeUtilisateur: "formateur" dans l'appel à la mutation -- [ ] Déployer sur recette et production (nécessite accès SSH aux VPS) +- [x] Déployer sur recette et production - [ ] Tester avec l'email marianne.tarrieu@gmail.com sur la séquence 1 du 03/02/26 + +## Correction bug "Aucune date de formation ne correspond à aujourd'hui" - Émargement formateur + +- [x] Analyser le code de validation de la date dans routers.ts (procédure presences.valider) +- [x] Identifier pourquoi la logique cherche automatiquement la date du jour au lieu d'utiliser dateFormationId +- [x] Corriger la logique pour utiliser la date sélectionnée par le formateur +- [x] Déployer sur le serveur de recette et production +- [ ] Tester avec une date passée ou future