# 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 ## Améliorations système de rappels ### Historique des rappels - [x] Créer la table logsRappels dans le schéma - [x] Migrer le schéma avec pnpm db:push - [x] Créer les fonctions de log dans rappelDb.ts - [x] Intégrer le logging dans rappelScheduler.ts - [x] Ajouter la vérification des doublons avant envoi ### Test manuel des rappels - [x] Créer la procédure tRPC pour tester un rappel - [ ] Ajouter le bouton de test dans AdminRappels.tsx (optionnel) - [ ] Implémenter la logique de test sans modifier les logs (optionnel) ### Notifications d'échec - [x] Créer la fonction de notification admin - [x] Intégrer les notifications dans le catch des erreurs d'envoi - [x] Ajouter un résumé des échecs dans les logs ## Historique et statistiques des rappels ### Backend - [x] Créer les fonctions de récupération des logs avec filtres - [x] Créer les fonctions de statistiques (taux succès, emails problématiques) - [x] Ajouter les procédures tRPC pour l'historique - [x] Ajouter les procédures tRPC pour les statistiques ### Page d'historique - [x] Créer AdminRappelsHistorique.tsx avec tableau des logs - [x] Ajouter les filtres (date, séquence, statut, email) - [x] Ajouter la recherche par email - [x] Ajouter la pagination - [x] Ajouter la route dans App.tsx ### Tableau de bord statistiques - [x] Créer AdminRappelsStats.tsx avec cartes de statistiques - [x] Ajouter le graphique d'évolution des envois - [x] Ajouter le graphique du taux de succès - [x] Ajouter la liste des emails problématiques - [x] Ajouter la route dans App.tsx ### Système de réessai automatique - [x] Ajouter le champ nbTentatives dans logsRappels - [x] Ajouter le champ prochainEssai dans logsRappels - [x] Créer la fonction de retry avec délai exponentiel - [x] Intégrer le retry dans rappelScheduler - [x] Limiter à 3 tentatives maximum