Checkpoint: Ajout de filtres de période (dernier mois, trimestre, année) pour affiner l'analyse des tendances. Implémentation de l'export Excel des rapports analytiques avec 5 feuilles (statistiques globales, inscriptions par mois, taux de remplissage, participation par établissement et par fonction). Création du schéma de base de données pour les alertes automatiques (fonctionnalité future). Les utilisateurs peuvent maintenant filtrer les données analytiques par période et télécharger des rapports Excel complets.
This commit is contained in:
@@ -221,3 +221,34 @@ export const formateurs = mysqlTable("formateurs", {
|
||||
|
||||
export type Formateur = typeof formateurs.$inferSelect;
|
||||
export type InsertFormateur = typeof formateurs.$inferInsert;
|
||||
|
||||
/**
|
||||
* Table des alertes automatiques
|
||||
* Configure les alertes à envoyer selon certaines conditions
|
||||
*/
|
||||
export const alertes = mysqlTable("alertes", {
|
||||
id: int("id").autoincrement().primaryKey(),
|
||||
/** Nom de l'alerte */
|
||||
nom: varchar("nom", { length: 255 }).notNull(),
|
||||
/** Type d'alerte (taux_remplissage, seuil_inscriptions) */
|
||||
type: mysqlEnum("type", ["taux_remplissage", "seuil_inscriptions"]).notNull(),
|
||||
/** Condition de déclenchement (ex: ">=", ">", "<=", "<", "=") */
|
||||
condition: varchar("condition", { length: 10 }).notNull(),
|
||||
/** Valeur seuil pour déclencher l'alerte */
|
||||
valeurSeuil: int("valeurSeuil").notNull(),
|
||||
/** Code établissement concerné (null = tous) */
|
||||
codeEtablissement: varchar("codeEtablissement", { length: 50 }),
|
||||
/** Email(s) destinataire(s) séparés par des virgules */
|
||||
emailsDestinataires: text("emailsDestinataires").notNull(),
|
||||
/** Actif ou non */
|
||||
actif: boolean("actif").default(true).notNull(),
|
||||
/** Dernière vérification */
|
||||
derniereVerification: timestamp("derniereVerification"),
|
||||
/** Dernier envoi d'alerte */
|
||||
dernierEnvoi: timestamp("dernierEnvoi"),
|
||||
createdAt: timestamp("createdAt").defaultNow().notNull(),
|
||||
updatedAt: timestamp("updatedAt").defaultNow().onUpdateNow().notNull(),
|
||||
});
|
||||
|
||||
export type Alerte = typeof alertes.$inferSelect;
|
||||
export type InsertAlerte = typeof alertes.$inferInsert;
|
||||
|
||||
Reference in New Issue
Block a user