**Problème identifié :** - Incohérence entre le schéma Drizzle (`drizzle/schema.ts`) et le code (`notificationLogsDb.ts`) - Le schéma utilisait des noms de colonnes et des types d'enum différents de ceux utilisés dans le code - Cela causait l'erreur "Cannot convert undefined or null to object" lors de la récupération des données **Corrections appliquées :** 1. **Mise à jour du schéma Drizzle (drizzle/schema.ts) :** - Renommé `destinataire` en `emailDestinataire` pour correspondre au code - Ajouté la colonne `sujet` (VARCHAR 500) - Ajouté la colonne `formateurId` (INT NULL) - Ajouté la colonne `metadata` (TEXT NULL) - Mis à jour l'enum `type` avec les bonnes valeurs : `remerciement`, `notification_formateur_inscription`, `notification_formateur_annulation`, `alerte_capacite`, `notification_liste_attente` - Mis à jour l'enum `statut` avec les bonnes valeurs : `success`, `failed` 2. **Amélioration de la gestion des valeurs null (notificationLogsDb.ts) :** - Ajout de vérifications null-safe dans `getNotificationStats()` pour éviter les erreurs lors du calcul du taux de succès - Ajout de valeurs par défaut pour `parType` et `evolutionParJour` (tableaux vides si undefined) - Ajout d'un mapping des logs pour s'assurer que tous les champs sont bien définis (null au lieu d'undefined) **Tests réussis :** - ✅ Onglet "Statistiques" : affiche correctement 24 envois, 100% de succès, répartition par type et évolution par jour - ✅ Onglet "Historique" : affiche correctement les 24 notifications avec toutes les colonnes (Date, Type, Destinataire, Sujet, Formation/Séquence, Statut) - ✅ Pagination fonctionnelle (Page 1 sur 2) - ✅ Filtres disponibles (Type, Statut, Email, Date début, Date fin) **Résultat :** ✅ L'erreur "Cannot convert undefined or null to object" est complètement résolue ✅ La page notifications fonctionne correctement avec toutes ses fonctionnalités
106 lines
2.9 KiB
JSON
106 lines
2.9 KiB
JSON
{
|
|
"query": "DESCRIBE logsNotifications;",
|
|
"command": "mysql --batch --raw --column-names --default-character-set=utf8mb4 --host gateway02.us-east-1.prod.aws.tidbcloud.com --port 4000 --user 4CrrYuB5tme73Qo.root --database 7PAT67UmWoxv8vwp8Bbcv6 --execute DESCRIBE logsNotifications;",
|
|
"rows": [
|
|
{
|
|
"Field": "id",
|
|
"Type": "int(11)",
|
|
"Null": "NO",
|
|
"Key": "PRI",
|
|
"Default": "NULL",
|
|
"Extra": "auto_increment"
|
|
},
|
|
{
|
|
"Field": "type",
|
|
"Type": "enum('remerciement','notification_formateur_inscription','notification_formateur_annulation','alerte_capacite','notification_liste_attente')",
|
|
"Null": "NO",
|
|
"Key": "",
|
|
"Default": "NULL",
|
|
"Extra": ""
|
|
},
|
|
{
|
|
"Field": "sequenceId",
|
|
"Type": "int(11)",
|
|
"Null": "YES",
|
|
"Key": "",
|
|
"Default": "NULL",
|
|
"Extra": ""
|
|
},
|
|
{
|
|
"Field": "apprenantId",
|
|
"Type": "int(11)",
|
|
"Null": "YES",
|
|
"Key": "",
|
|
"Default": "NULL",
|
|
"Extra": ""
|
|
},
|
|
{
|
|
"Field": "formateurId",
|
|
"Type": "int(11)",
|
|
"Null": "YES",
|
|
"Key": "",
|
|
"Default": "NULL",
|
|
"Extra": ""
|
|
},
|
|
{
|
|
"Field": "emailDestinataire",
|
|
"Type": "varchar(320)",
|
|
"Null": "NO",
|
|
"Key": "",
|
|
"Default": "NULL",
|
|
"Extra": ""
|
|
},
|
|
{
|
|
"Field": "sujet",
|
|
"Type": "varchar(500)",
|
|
"Null": "NO",
|
|
"Key": "",
|
|
"Default": "NULL",
|
|
"Extra": ""
|
|
},
|
|
{
|
|
"Field": "dateEnvoi",
|
|
"Type": "timestamp",
|
|
"Null": "NO",
|
|
"Key": "",
|
|
"Default": "CURRENT_TIMESTAMP",
|
|
"Extra": ""
|
|
},
|
|
{
|
|
"Field": "statut",
|
|
"Type": "enum('success','failed')",
|
|
"Null": "NO",
|
|
"Key": "",
|
|
"Default": "NULL",
|
|
"Extra": ""
|
|
},
|
|
{
|
|
"Field": "messageErreur",
|
|
"Type": "text",
|
|
"Null": "YES",
|
|
"Key": "",
|
|
"Default": "NULL",
|
|
"Extra": ""
|
|
},
|
|
{
|
|
"Field": "metadata",
|
|
"Type": "text",
|
|
"Null": "YES",
|
|
"Key": "",
|
|
"Default": "NULL",
|
|
"Extra": ""
|
|
},
|
|
{
|
|
"Field": "createdAt",
|
|
"Type": "timestamp",
|
|
"Null": "NO",
|
|
"Key": "",
|
|
"Default": "CURRENT_TIMESTAMP",
|
|
"Extra": ""
|
|
}
|
|
],
|
|
"messages": [],
|
|
"stdout": "Field\tType\tNull\tKey\tDefault\tExtra\nid\tint(11)\tNO\tPRI\tNULL\tauto_increment\ntype\tenum('remerciement','notification_formateur_inscription','notification_formateur_annulation','alerte_capacite','notification_liste_attente')\tNO\t\tNULL\t\nsequenceId\tint(11)\tYES\t\tNULL\t\napprenantId\tint(11)\tYES\t\tNULL\t\nformateurId\tint(11)\tYES\t\tNULL\t\nemailDestinataire\tvarchar(320)\tNO\t\tNULL\t\nsujet\tvarchar(500)\tNO\t\tNULL\t\ndateEnvoi\ttimestamp\tNO\t\tCURRENT_TIMESTAMP\t\nstatut\tenum('success','failed')\tNO\t\tNULL\t\nmessageErreur\ttext\tYES\t\tNULL\t\nmetadata\ttext\tYES\t\tNULL\t\ncreatedAt\ttimestamp\tNO\t\tCURRENT_TIMESTAMP\t\n",
|
|
"stderr": "",
|
|
"execution_time_ms": 57
|
|
} |