Checkpoint: Ajout de la page de gestion des attestations de formation

Fonctionnalités :
- Configuration par formation (génération auto/manuel, envoi auto/manuel)
- Affichage de la liste des apprenants inscrits
- Upload de documents PDF par apprenant (mode manuel)
- Boutons de prévisualisation et d'envoi manuel
- Gestion complète des attestations

Corrections :
- Ajout des colonnes modeAttestation et modeEnvoi dans la table formations
- Ajout des colonnes documentUrl, documentS3Key, uploadedBy, uploadedAt, emailEnvoye, dateEnvoiEmail dans la table attestations
- Correction de l'erreur SQL en retirant la colonne urlPdf inexistante de la requête
This commit is contained in:
Manus
2026-01-12 15:13:44 -05:00
parent a7602e6740
commit 97aeacab29
12 changed files with 495 additions and 15 deletions

View File

@@ -411,8 +411,21 @@ export const attestations = mysqlTable("attestations", {
id: int("id").autoincrement().primaryKey(),
apprenantId: int("apprenantId").notNull(),
sequenceId: int("sequenceId").notNull(),
urlPdf: varchar("urlPdf", { length: 500 }).notNull(),
s3Key: varchar("s3Key", { length: 500 }).notNull(),
inscriptionId: int("inscriptionId").notNull(),
urlPdf: varchar("urlPdf", { length: 500 }),
s3Key: varchar("s3Key", { length: 500 }),
/** URL du document uploadé manuellement */
documentUrl: varchar("documentUrl", { length: 500 }),
/** Clé S3 du document uploadé manuellement */
documentS3Key: varchar("documentS3Key", { length: 500 }),
/** ID de l'utilisateur qui a uploadé le document */
uploadedBy: int("uploadedBy"),
/** Date d'upload du document */
uploadedAt: timestamp("uploadedAt"),
/** Email envoyé ou non */
emailEnvoye: boolean("emailEnvoye").default(false).notNull(),
/** Date d'envoi de l'email */
dateEnvoiEmail: timestamp("dateEnvoiEmail"),
dateGeneration: timestamp("dateGeneration").defaultNow().notNull(),
});