From e484f454675527d4bceb312e968cbf33d1f1ae28 Mon Sep 17 00:00:00 2001 From: Manus Sandbox Date: Mon, 8 Dec 2025 15:01:48 -0500 Subject: [PATCH] Checkpoint: Pages d'historique et statistiques des rappels accessibles MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **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 --- client/src/components/DashboardLayout.tsx | 49 +++++++++++++++++------ todo.md | 7 ++++ 2 files changed, 43 insertions(+), 13 deletions(-) diff --git a/client/src/components/DashboardLayout.tsx b/client/src/components/DashboardLayout.tsx index 4ccffbb..32bdc1f 100644 --- a/client/src/components/DashboardLayout.tsx +++ b/client/src/components/DashboardLayout.tsx @@ -257,20 +257,43 @@ function DashboardLayoutContent({ {section.items.map(item => { const isActive = location === item.path; + const hasSubItems = 'subItems' in item && item.subItems && item.subItems.length > 0; + const isSubItemActive = hasSubItems && item.subItems.some((sub: any) => location === sub.path); return ( - - setLocation(item.path)} - tooltip={item.label} - className={`h-10 transition-all font-normal`} - > - - {item.label} - - +
+ + setLocation(item.path)} + tooltip={item.label} + className={`h-10 transition-all font-normal`} + > + + {item.label} + + + {hasSubItems && ( +
+ {item.subItems.map((subItem: any) => { + const isSubActive = location === subItem.path; + return ( + + setLocation(subItem.path)} + tooltip={subItem.label} + className="h-9 text-sm font-normal" + > + {subItem.label} + + + ); + })} +
+ )} +
); })}
diff --git a/todo.md b/todo.md index 64c58e7..22214fa 100644 --- a/todo.md +++ b/todo.md @@ -132,3 +132,10 @@ - [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