Checkpoint: Améliorations de la gestion des attestations de formation :

- Ajout du paramètre d'envoi automatique des attestations dans la page Paramètres
- Ajout de la prévisualisation du modèle d'attestation avec génération PDF
- Création de la page Historique des attestations dans la section Traçabilité
- Création de la table historiqueAttestations pour tracer les envois
- Ajout des procédures tRPC pour l'historique et la prévisualisation
This commit is contained in:
Manus
2026-01-12 13:54:18 -05:00
parent 61f28781f0
commit ce64c72f00
13 changed files with 563 additions and 19 deletions

View File

@@ -485,6 +485,8 @@ export const parametres = mysqlTable("parametres", {
dureeValiditeToken: int("dureeValiditeToken").default(24).notNull(),
/** Activer ou désactiver les notifications automatiques */
notificationsActives: boolean("notificationsActives").default(true).notNull(),
/** Activer ou désactiver l'envoi automatique des attestations de formation */
envoiAutomatiqueAttestations: boolean("envoiAutomatiqueAttestations").default(true).notNull(),
updatedAt: timestamp("updatedAt").defaultNow().onUpdateNow().notNull(),
});
@@ -512,3 +514,21 @@ export const historiqueParametres = mysqlTable("historiqueParametres", {
export type HistoriqueParametre = typeof historiqueParametres.$inferSelect;
export type InsertHistoriqueParametre = typeof historiqueParametres.$inferInsert;
/**
* Table de l'historique des envois d'attestations de formation
* Permet de tracer tous les envois d'attestations
*/
export const historiqueAttestations = mysqlTable("historiqueAttestations", {
id: int("id").autoincrement().primaryKey(),
sequenceId: int("sequenceId").notNull(),
apprenantId: int("apprenantId").notNull(),
dateEnvoi: timestamp("dateEnvoi").defaultNow().notNull(),
statut: mysqlEnum("statut", ["envoye", "erreur"]).notNull(),
messageErreur: text("messageErreur"),
urlAttestation: varchar("urlAttestation", { length: 500 }),
createdAt: timestamp("createdAt").defaultNow().notNull(),
});
export type HistoriqueAttestation = typeof historiqueAttestations.$inferSelect;
export type InsertHistoriqueAttestation = typeof historiqueAttestations.$inferInsert;