**Problème résolu** : Les pages AdminRappelsHistorique et AdminRappelsStats étaient créées mais non accessibles car le menu de navigation ne gérait pas les sous-menus (subItems). **Modifications apportées** : 1. **Gestion des sous-menus dans DashboardLayout.tsx** - Ajout de la logique pour détecter et afficher les sous-menus (subItems) - Détection automatique des sous-items actifs pour mettre en surbrillance le menu parent - Affichage des sous-menus avec indentation (ml-6) et taille réduite (h-9 text-sm) - Les sous-menus s'affichent automatiquement sous leur item parent 2. **Structure du menu** - Menu principal "Rappels" → `/admin/rappels` (configuration) - Sous-menu "Historique" → `/admin/rappels/historique` - Sous-menu "Statistiques" → `/admin/rappels/statistiques` **Pages maintenant accessibles** : 1. **Page Historique des Rappels** (`/admin/rappels/historique`) - Filtres avancés : date début/fin, séquence, statut, email - Tableau complet avec colonnes : Date envoi, Email, Type, Statut, Tentatives, Erreur - Badge de statut coloré : vert pour succès, rouge pour échec - Pagination (50 résultats par page) - Affichage du nombre de résultats trouvés 2. **Page Statistiques des Rappels** (`/admin/rappels/statistiques`) - 4 cartes de statistiques : Total envoyés, Succès, Échecs, Taux de succès - Graphique "Évolution des envois" : ligne temporelle avec succès/échecs - Graphique "Taux de succès par jour" : barres de pourcentage - Section "Emails problématiques" : Top 10 des emails avec le plus d'échecs - Message "Aucun email problématique détecté" quand tout va bien **Tests effectués** : - ✅ Navigation vers Historique fonctionne - ✅ Navigation vers Statistiques fonctionne - ✅ Affichage des données réelles (1 rappel J-7 envoyé avec succès) - ✅ Filtres et graphiques s'affichent correctement - ✅ Mise en surbrillance du menu actif **Fichier modifié** : - `client/src/components/DashboardLayout.tsx` : Ajout de la gestion des sous-menus
142 lines
5.9 KiB
Markdown
142 lines
5.9 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
|
|
|
|
## 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
|
|
|
|
## Correction erreurs tRPC (HTML au lieu de JSON)
|
|
|
|
- [x] Analyser les logs du serveur pour identifier les requêtes qui échouent
|
|
- [x] Identifier les procédures tRPC qui causent les erreurs
|
|
- [x] Corriger les erreurs côté serveur (emailBody, reduce)
|
|
- [x] Tester la page admin pour vérifier que les erreurs sont résolues
|
|
|
|
## Rendre accessibles les pages d'historique et statistiques des rappels
|
|
|
|
- [x] Vérifier que les routes sont bien définies dans App.tsx
|
|
- [x] Vérifier que les liens sont bien dans le menu DashboardLayout
|
|
- [x] Ajouter la gestion des sous-menus dans DashboardLayout
|
|
- [x] Tester l'accès aux pages /admin/rappels/historique et /admin/rappels/statistiques
|