**Nouvelles fonctionnalités** : 1. **Historique des rappels envoyés** - Nouvelle table `logsRappels` pour tracer tous les emails de rappels - Enregistrement automatique de chaque envoi (succès ou échec) - Prévention des doublons : vérification avant envoi - Informations stockées : rappelId, sequenceId, apprenantId, email, type, statut, message d'erreur 2. **Notifications automatiques à l'administrateur** - Alerte par email en cas d'échec d'envoi de rappels - Détail des échecs : liste des emails et messages d'erreur - Résumé : nombre d'envois réussis vs échecs 3. **Procédure de test manuel** (backend uniquement) - Nouvelle procédure tRPC `rappels.testerRappel` - Permet de tester l'envoi d'un rappel J-7 ou J-1 pour une séquence - Envoie au premier apprenant inscrit uniquement **Fichiers créés** : - `server/rappelDb.ts` : Fonctions de gestion des logs de rappels - `drizzle/schema.ts` : Ajout de la table `logsRappels` **Fichiers modifiés** : - `server/rappelScheduler.ts` : Intégration du logging et des notifications - `server/routers.ts` : Ajout de la procédure `testerRappel` **Bénéfices** : - ✅ Aucun doublon même en cas de redémarrage du serveur - ✅ Traçabilité complète de tous les rappels envoyés - ✅ Alertes automatiques en cas de problème d'envoi - ✅ Possibilité de tester les rappels avant envoi automatique
9 lines
1.4 KiB
JSON
9 lines
1.4 KiB
JSON
{
|
|
"query": "CREATE TABLE IF NOT EXISTS `logsRappels` (\n `id` int AUTO_INCREMENT NOT NULL,\n `rappelId` int NOT NULL,\n `sequenceId` int NOT NULL,\n `apprenantId` int NOT NULL,\n `emailDestinataire` varchar(320) NOT NULL,\n `typeRappel` varchar(50) NOT NULL,\n `dateEnvoi` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,\n `statut` enum('success', 'failed') NOT NULL,\n `messageErreur` text,\n `dateSequence` timestamp NOT NULL,\n `createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,\n CONSTRAINT `logsRappels_id` PRIMARY KEY(`id`)\n);",
|
|
"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 CREATE TABLE IF NOT EXISTS `logsRappels` (\n `id` int AUTO_INCREMENT NOT NULL,\n `rappelId` int NOT NULL,\n `sequenceId` int NOT NULL,\n `apprenantId` int NOT NULL,\n `emailDestinataire` varchar(320) NOT NULL,\n `typeRappel` varchar(50) NOT NULL,\n `dateEnvoi` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,\n `statut` enum('success', 'failed') NOT NULL,\n `messageErreur` text,\n `dateSequence` timestamp NOT NULL,\n `createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,\n CONSTRAINT `logsRappels_id` PRIMARY KEY(`id`)\n);",
|
|
"rows": [],
|
|
"messages": [],
|
|
"stdout": "",
|
|
"stderr": "",
|
|
"execution_time_ms": 246
|
|
} |