diff --git a/client/src/pages/admin/AdminRappelsHistorique.tsx b/client/src/pages/admin/AdminRappelsHistorique.tsx
index d8e69a5..b22e11b 100644
--- a/client/src/pages/admin/AdminRappelsHistorique.tsx
+++ b/client/src/pages/admin/AdminRappelsHistorique.tsx
@@ -23,7 +23,7 @@ export default function AdminRappelsHistorique() {
dateDebut: "",
dateFin: "",
sequenceId: undefined as number | undefined,
- statut: undefined as "success" | "failed" | undefined,
+ statut: undefined as "succes" | "echec" | undefined,
email: "",
limit: 50,
offset: 0,
@@ -134,8 +134,8 @@ export default function AdminRappelsHistorique() {
Tous les statuts
- Succès
- Échec
+ Succès
+ Échec
@@ -190,6 +190,7 @@ export default function AdminRappelsHistorique() {
Date envoi
Email
Type
+ Type d'envoi
Statut
Tentatives
Erreur
@@ -201,15 +202,26 @@ export default function AdminRappelsHistorique() {
{format(new Date(log.dateEnvoi), "dd/MM/yyyy HH:mm", { locale: fr })}
- {log.emailDestinataire}
+ {log.email}
- {log.typeRappel === "rappel" ? "J-7" : "J-1"}
+ {log.type}
-
- {log.statut === "success" ? "Succès" : "Échec"}
+
+ {log.typeEnvoi === "test" ? "Test" : "Automatique"}
+
+
+
+
+ {log.statut === "succes" ? "Succès" : "Échec"}
diff --git a/server/routers.ts b/server/routers.ts
index 524c6de..aff78ca 100644
--- a/server/routers.ts
+++ b/server/routers.ts
@@ -14,6 +14,7 @@ import { generateExcelExport, generatePDFExport, generateFeuillePresence } from
import { parseExcelFile, validateImportData, importToDatabase } from "./importExcel";
import crypto from "crypto";
import bcrypt from "bcryptjs";
+import { sql } from "drizzle-orm";
// Procédure admin uniquement
const adminProcedure = protectedProcedure.use(({ ctx, next }) => {
@@ -1546,6 +1547,27 @@ export const appRouter = router({
const { getEvolutionEnvois } = await import('./rappelDb');
return getEvolutionEnvois();
}),
+
+ // Nettoyer les anciens logs erronés (avant la correction du schéma)
+ nettoyerLogsErrones: adminProcedure
+ .mutation(async () => {
+ const database = await db.getDb();
+ if (!database) throw new Error("Database not available");
+
+ // Supprimer tous les logs qui n'ont pas d'email (champ obligatoire manquant)
+ const result = await database.execute(sql`
+ DELETE FROM logsRappels
+ WHERE email IS NULL OR email = ''
+ `);
+
+ const nbSupprimes = Array.isArray(result) ? 0 : (result as any).affectedRows || 0;
+
+ return {
+ success: true,
+ nbSupprimes,
+ message: `${nbSupprimes} log(s) erroné(s) supprimé(s)`,
+ };
+ }),
}),
emailConfig: router({
diff --git a/todo.md b/todo.md
index 4bc4651..26c1b31 100644
--- a/todo.md
+++ b/todo.md
@@ -833,3 +833,5 @@
- [x] Supprimer les boutons "Aperçu rappel J-7", "Envoyer rappel J-7", "Aperçu rappel J-1", "Envoyer rappel J-1" de la fenêtre de détails des séquences
- [x] Corriger le bouton "Tester le rappel" pour enregistrer les envois dans l'historique des rappels (table logsRappels)
- [x] Corriger l'enregistrement des logs de rappels : type erroné (J-1 au lieu de J+2), statut erroné (success/failed au lieu de succes/echec), email erroné (emailDestinataire au lieu de email)
+- [x] Ajouter une colonne "Type d'envoi" avec badge coloré dans l'interface d'historique des rappels
+- [x] Nettoyer les anciens logs erronés de la base de données