Files
formation-manager-itinova/todo.md
Manus Sandbox e484f45467 Checkpoint: Pages d'historique et statistiques des rappels accessibles
**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
2025-12-08 15:01:48 -05:00

5.9 KiB

Gestion des Formations Manager Itinova - TODO

[... contenu existant conservé ...]

Questionnaires de satisfaction et évaluation des acquis

  • Créer le schéma de base de données (tables questionnaires, questions, réponses)
  • Développer les procédures backend tRPC pour la gestion des questionnaires
  • Créer l'interface d'administration des questionnaires
  • Créer l'interface publique de réponse aux questionnaires
  • Implémenter l'envoi automatique post-formation
  • 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

  • Ajouter un bouton "Prévisualiser" dans la page d'édition de questionnaire
  • Créer un modal de prévisualisation avec le rendu exact du questionnaire

Exports et notifications pour les questionnaires

  • Créer les fonctions backend d'export Excel des résultats
  • Créer les fonctions backend d'export PDF des résultats
  • Ajouter les boutons d'export dans la page d'analyse
  • Implémenter le système de notifications pour les administrateurs
  • Envoyer une notification lors de chaque nouvelle réponse à un questionnaire

Tableau de bord de suivi des questionnaires

  • Créer les fonctions backend pour les statistiques par formation
  • Créer les fonctions backend pour l'évolution temporelle
  • Créer les fonctions backend pour la comparaison par formateur
  • Créer les procédures tRPC pour le tableau de bord
  • Créer la page AdminQuestionnaireSuivi avec graphiques
  • Ajouter le lien dans le menu de navigation
  • Tester toutes les fonctionnalités

Correction des erreurs SQL du tableau de bord de suivi

  • Corriger la requête getEvolutionTemporelle (DATE_FORMAT)
  • Corriger la requête getStatsByFormateur (sous-requête AVG)
  • Simplifier les requêtes pour compatibilité MySQL
  • Tester toutes les requêtes corrigées

Espace Formateur

Schéma de base de données

  • Créer la table supportsFormation pour stocker les documents
  • Ajouter les relations avec sequences
  • Migrer le schéma avec pnpm db:push

Backend

  • Créer formateurDb.ts avec les fonctions de requête
  • Ajouter les procédures tRPC pour le calendrier du formateur
  • Ajouter les procédures tRPC pour la liste des apprenants
  • Ajouter les procédures tRPC pour l'upload de supports
  • Ajouter les procédures tRPC pour la validation des présences
  • Ajouter les procédures tRPC pour l'historique

Frontend

  • Créer la page FormateurDashboard (calendrier)
  • Créer la page FormateurSequence (détail séquence avec apprenants)
  • Créer la page FormateurSupports (gestion des supports)
  • Créer la page FormateurPresences (validation présences)
  • Créer la page FormateurHistorique (historique formations)
  • Ajouter les routes dans App.tsx
  • Ajouter le menu de navigation formateur

Tests

  • Tester toutes les fonctionnalités de l'espace formateur

Correction bug rappels multiples

  • Analyser le code du scheduler de rappels
  • Identifier pourquoi plusieurs emails sont envoyés
  • Corriger la logique pour envoyer un seul email par séquence
  • Tester avec la formation JetSki du 15/12/2025

Améliorations système de rappels

Historique des rappels

  • Créer la table logsRappels dans le schéma
  • Migrer le schéma avec pnpm db:push
  • Créer les fonctions de log dans rappelDb.ts
  • Intégrer le logging dans rappelScheduler.ts
  • Ajouter la vérification des doublons avant envoi

Test manuel des rappels

  • 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

  • Créer la fonction de notification admin
  • Intégrer les notifications dans le catch des erreurs d'envoi
  • Ajouter un résumé des échecs dans les logs

Historique et statistiques des rappels

Backend

  • Créer les fonctions de récupération des logs avec filtres
  • Créer les fonctions de statistiques (taux succès, emails problématiques)
  • Ajouter les procédures tRPC pour l'historique
  • Ajouter les procédures tRPC pour les statistiques

Page d'historique

  • Créer AdminRappelsHistorique.tsx avec tableau des logs
  • Ajouter les filtres (date, séquence, statut, email)
  • Ajouter la recherche par email
  • Ajouter la pagination
  • Ajouter la route dans App.tsx

Tableau de bord statistiques

  • Créer AdminRappelsStats.tsx avec cartes de statistiques
  • Ajouter le graphique d'évolution des envois
  • Ajouter le graphique du taux de succès
  • Ajouter la liste des emails problématiques
  • Ajouter la route dans App.tsx

Système de réessai automatique

  • Ajouter le champ nbTentatives dans logsRappels
  • Ajouter le champ prochainEssai dans logsRappels
  • Créer la fonction de retry avec délai exponentiel
  • Intégrer le retry dans rappelScheduler
  • Limiter à 3 tentatives maximum

Correction erreurs tRPC (HTML au lieu de JSON)

  • Analyser les logs du serveur pour identifier les requêtes qui échouent
  • Identifier les procédures tRPC qui causent les erreurs
  • Corriger les erreurs côté serveur (emailBody, reduce)
  • Tester la page admin pour vérifier que les erreurs sont résolues

Rendre accessibles les pages d'historique et statistiques des rappels

  • Vérifier que les routes sont bien définies dans App.tsx
  • Vérifier que les liens sont bien dans le menu DashboardLayout
  • Ajouter la gestion des sous-menus dans DashboardLayout
  • Tester l'accès aux pages /admin/rappels/historique et /admin/rappels/statistiques