Files
formation-manager-itinova/.manus/db/db-query-1765180650529.json
Manus Sandbox bb0ec9e3b0 Checkpoint: Amélioration système de rappels - Historique et notifications d'échec
**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
2025-12-08 03:01:50 -05:00

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
}