**Problème identifié** : Les apprenants recevaient plusieurs emails de rappel (J-7 ou J-1) pour une même séquence de formation. Par exemple, 5 emails pour la formation JetSki du 15/12/2025 au lieu d'un seul. **Cause du bug** : La requête SQL dans `rappelScheduler.ts` cherchait dans la table `datesFormation` et retournait une ligne par date de formation trouvée. Si une séquence avait 5 dates, la requête retournait 5 lignes, déclenchant l'envoi de 5 emails identiques au même apprenant. **Solution implémentée** : Modification de la logique dans `server/rappelScheduler.ts` (fonction `processRappel`) : 1. Récupération de toutes les séquences d'abord 2. Pour chaque séquence, vérification de sa **première date** uniquement (ordre = 1) 3. Si cette première date correspond à la date cible (J-7 ou J-1), envoi d'un seul email par apprenant inscrit **Résultat** : - ✅ Un seul email de rappel par séquence et par apprenant - ✅ Toutes les dates de la séquence sont incluses dans l'email - ✅ Pas de doublons même si la formation comporte plusieurs dates **Fichiers modifiés** : - `server/rappelScheduler.ts` : Réécriture complète de la fonction `processRappel` **Test** : La prochaine exécution automatique du scheduler (toutes les heures) n'enverra plus qu'un seul email par séquence.
80 lines
3.4 KiB
Markdown
80 lines
3.4 KiB
Markdown
# Gestion des Formations Manager Itinova - TODO
|
|
|
|
[... contenu existant conservé ...]
|
|
|
|
## Questionnaires de satisfaction et évaluation des acquis
|
|
|
|
- [x] Créer le schéma de base de données (tables questionnaires, questions, réponses)
|
|
- [x] Développer les procédures backend tRPC pour la gestion des questionnaires
|
|
- [x] Créer l'interface d'administration des questionnaires
|
|
- [x] Créer l'interface publique de réponse aux questionnaires
|
|
- [x] Implémenter l'envoi automatique post-formation
|
|
- [x] Créer les tableaux de bord d'analyse avec graphiques (satisfaction par formation/formateur)
|
|
- [ ] Implémenter les exports Excel/PDF des feedbacks
|
|
- [ ] Tester le système complet (création, envoi, réponse, analyse)
|
|
- [ ] Déployer sur le serveur VPS
|
|
|
|
## Amélioration : Prévisualisation des questionnaires
|
|
|
|
- [x] Ajouter un bouton "Prévisualiser" dans la page d'édition de questionnaire
|
|
- [x] Créer un modal de prévisualisation avec le rendu exact du questionnaire
|
|
|
|
## Exports et notifications pour les questionnaires
|
|
|
|
- [x] Créer les fonctions backend d'export Excel des résultats
|
|
- [x] Créer les fonctions backend d'export PDF des résultats
|
|
- [x] Ajouter les boutons d'export dans la page d'analyse
|
|
- [x] Implémenter le système de notifications pour les administrateurs
|
|
- [x] Envoyer une notification lors de chaque nouvelle réponse à un questionnaire
|
|
|
|
## Tableau de bord de suivi des questionnaires
|
|
|
|
- [x] Créer les fonctions backend pour les statistiques par formation
|
|
- [x] Créer les fonctions backend pour l'évolution temporelle
|
|
- [x] Créer les fonctions backend pour la comparaison par formateur
|
|
- [x] Créer les procédures tRPC pour le tableau de bord
|
|
- [x] Créer la page AdminQuestionnaireSuivi avec graphiques
|
|
- [x] Ajouter le lien dans le menu de navigation
|
|
- [x] Tester toutes les fonctionnalités
|
|
|
|
## Correction des erreurs SQL du tableau de bord de suivi
|
|
|
|
- [x] Corriger la requête getEvolutionTemporelle (DATE_FORMAT)
|
|
- [x] Corriger la requête getStatsByFormateur (sous-requête AVG)
|
|
- [x] Simplifier les requêtes pour compatibilité MySQL
|
|
- [x] Tester toutes les requêtes corrigées
|
|
|
|
## Espace Formateur
|
|
|
|
### Schéma de base de données
|
|
- [x] Créer la table supportsFormation pour stocker les documents
|
|
- [x] Ajouter les relations avec sequences
|
|
- [x] Migrer le schéma avec pnpm db:push
|
|
|
|
### Backend
|
|
- [x] Créer formateurDb.ts avec les fonctions de requête
|
|
- [x] Ajouter les procédures tRPC pour le calendrier du formateur
|
|
- [x] Ajouter les procédures tRPC pour la liste des apprenants
|
|
- [x] Ajouter les procédures tRPC pour l'upload de supports
|
|
- [x] Ajouter les procédures tRPC pour la validation des présences
|
|
- [x] Ajouter les procédures tRPC pour l'historique
|
|
|
|
### Frontend
|
|
- [x] Créer la page FormateurDashboard (calendrier)
|
|
- [x] Créer la page FormateurSequence (détail séquence avec apprenants)
|
|
- [x] Créer la page FormateurSupports (gestion des supports)
|
|
- [x] Créer la page FormateurPresences (validation présences)
|
|
- [x] Créer la page FormateurHistorique (historique formations)
|
|
- [x] Ajouter les routes dans App.tsx
|
|
- [x] Ajouter le menu de navigation formateur
|
|
|
|
### Tests
|
|
- [x] Tester toutes les fonctionnalités de l'espace formateur
|
|
|
|
## Correction bug rappels multiples
|
|
|
|
- [x] Analyser le code du scheduler de rappels
|
|
- [x] Identifier pourquoi plusieurs emails sont envoyés
|
|
- [x] Corriger la logique pour envoyer un seul email par séquence
|
|
- [x] Tester avec la formation JetSki du 15/12/2025
|