Checkpoint: Corrections multiples : template reset_password, bugs UI templates d'email, schémas DB, et table logsRappels
**Ajouts :**
- Template "Réinitialisation de mot de passe" (reset_password) ajouté à l'enum et au système
**Corrections de bugs :**
- Bug de mise à jour du type de template (ajout de key={selectedType} pour forcer remontage)
- Erreur SQL configuration SMTP (correction schéma emailConfig avec champs active, domainVerified, apiKey)
- Erreur de type formateurId (conversion string → number dans AdminSequences.tsx)
- Date de blocage non sauvegardée (ajout champ dateBlocage au schéma sequences)
- Table logsRappels incohérente (suppression colonnes obsolètes, correction enum statut)
**Schémas Drizzle mis à jour :**
- emailTemplates : ajout reset_password à l'enum type
- emailConfig : ajout active, domainVerified, correction apiKey
- sequences : ajout dateBlocage (datetime)
- logsRappels : structure nettoyée et conforme
**Déploiement VPS :**
- Toutes les migrations SQL exécutées avec succès
- Application redémarrée et fonctionnelle
- Historique des rappels prêt à fonctionner (table logsRappels corrigée)
This commit is contained in:
@@ -83,6 +83,8 @@ export const sequences = mysqlTable("sequences", {
|
||||
publicCible: mysqlEnum("publicCible", ["directeur", "chef_service", "autre", "tous"]).default("tous").notNull(),
|
||||
/** ID du formateur assigné à cette séquence */
|
||||
formateurId: int("formateurId"),
|
||||
/** Date limite d'inscription (blocage) */
|
||||
dateBlocage: datetime("dateBlocage"),
|
||||
/** Token unique pour le QR code d'émargement */
|
||||
qrCodeToken: varchar("qrCodeToken", { length: 100 }).unique(),
|
||||
createdAt: timestamp("createdAt").defaultNow().notNull(),
|
||||
@@ -149,24 +151,28 @@ export const emailConfig = mysqlTable("emailConfig", {
|
||||
id: int("id").autoincrement().primaryKey(),
|
||||
/** Provider d'envoi d'emails (resend, smtp, simulation) */
|
||||
provider: mysqlEnum("provider", ["resend", "smtp", "simulation"]).default("simulation").notNull(),
|
||||
/** Clé API Resend */
|
||||
resendApiKey: varchar("resendApiKey", { length: 255 }),
|
||||
/** Clé API (pour Resend ou autres) */
|
||||
apiKey: text("apiKey"),
|
||||
/** Hôte SMTP */
|
||||
smtpHost: varchar("smtpHost", { length: 255 }),
|
||||
/** Port SMTP */
|
||||
smtpPort: int("smtpPort"),
|
||||
/** Sécurité SMTP (TLS, SSL, None) */
|
||||
smtpSecure: mysqlEnum("smtpSecure", ["tls", "ssl", "none"]),
|
||||
smtpSecure: mysqlEnum("smtpSecure", ["none", "tls", "ssl"]),
|
||||
/** Utilisateur SMTP */
|
||||
smtpUser: varchar("smtpUser", { length: 255 }),
|
||||
smtpUser: varchar("smtpUser", { length: 320 }),
|
||||
/** Mot de passe SMTP */
|
||||
smtpPassword: varchar("smtpPassword", { length: 255 }),
|
||||
smtpPassword: text("smtpPassword"),
|
||||
/** Email expéditeur */
|
||||
fromEmail: varchar("fromEmail", { length: 320 }).notNull(),
|
||||
/** Nom de l'expéditeur */
|
||||
fromName: varchar("fromName", { length: 255 }).notNull(),
|
||||
fromName: varchar("fromName", { length: 255 }).default("Formation Manager Itinova").notNull(),
|
||||
/** Mode de fonctionnement (simulation ou production) */
|
||||
mode: mysqlEnum("mode", ["simulation", "production"]).default("simulation").notNull(),
|
||||
/** Domaine vérifié */
|
||||
domainVerified: boolean("domainVerified").default(false).notNull(),
|
||||
/** Configuration active */
|
||||
active: boolean("active").default(true).notNull(),
|
||||
createdAt: timestamp("createdAt").defaultNow().notNull(),
|
||||
updatedAt: timestamp("updatedAt").defaultNow().onUpdateNow().notNull(),
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user