Checkpoint: Correction de deux bugs critiques de l'émargement formateur

## 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)
This commit is contained in:
Manus
2026-02-10 10:23:55 -05:00
parent 6e27e3909e
commit fcb0503488
2 changed files with 13 additions and 18 deletions

View File

@@ -2628,24 +2628,11 @@ export const appRouter = router({
} }
const finalSequenceId = sequenceData[0].id; const finalSequenceId = sequenceData[0].id;
// Trouver automatiquement la date du jour // Utiliser la date sélectionnée par le formateur
const today = new Date(); if (!input.dateFormationId) {
today.setHours(0, 0, 0, 0); throw new Error("Date de formation requise");
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");
} }
const dateFormId = datesToday[0].id; const dateFormId = input.dateFormationId;
// Stocker la signature sur S3 // Stocker la signature sur S3
let signatureUrl: string | undefined; let signatureUrl: string | undefined;

10
todo.md
View File

@@ -1587,5 +1587,13 @@
- [x] Analyser le code de validation dans EmargementFormateurScan.tsx - [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] 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 - [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 - [ ] 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