Checkpoint: Espace Formateur - Fonctionnalités complètes
✅ **Nouvelles fonctionnalités** : **Base de données** : - Nouvelle table `supportsFormation` pour stocker les documents uploadés par les formateurs - Champs : sequenceId, formateurId, nomFichier, typeFichier, tailleFichier, urlFichier, s3Key, description - Migration effectuée avec succès **Backend (server/formateurDb.ts)** : - `getCalendrierFormateur()` : Récupère les interventions à venir avec dates, lieux et nombre d'inscrits - `getApprenantsSequence()` : Liste des apprenants inscrits à une séquence - `getSupportsSequence()` : Liste des supports de formation d'une séquence - `ajouterSupport()` : Upload d'un nouveau support - `supprimerSupport()` : Suppression d'un support avec vérification de propriété - `validerPresence()` : Validation de la présence d'un apprenant - `getHistoriqueFormateur()` : Historique des formations passées avec statistiques - `getDetailSequence()` : Détails complets d'une séquence avec dates **API tRPC (server/routers.ts)** : - `formateur.calendrier` : Calendrier des interventions avec filtres de dates - `formateur.apprenants` : Liste des apprenants d'une séquence - `formateur.supports` : Gestion des supports (liste, ajout, suppression) - `formateur.validerPresence` : Validation des présences en ligne - `formateur.historique` : Historique complet des formations - `formateur.detailSequence` : Détails d'une séquence **Pages frontend** : - `/formateur` : **FormateurDashboard** - Calendrier des interventions à venir groupées par date - `/formateur/sequence/:id` : **FormateurSequence** - Détails séquence avec onglets Apprenants et Supports - `/formateur/historique` : **FormateurHistorique** - Historique des formations avec taux de présence **Fonctionnalités implémentées** : - 📅 Calendrier des interventions avec dates, heures, lieux et nombre d'inscrits - 👥 Liste des apprenants avec informations complètes (nom, email, fonction, établissement) - ✅ Validation des présences en ligne avec checkboxes interactives - 📎 Gestion des supports de formation (liste, téléchargement) - 📊 Historique des formations avec statistiques (inscrits, présents, taux) - 🎨 Interface moderne avec cartes, tableaux et onglets **Notes** : - L'ID du formateur est actuellement fixé à 1 (TODO: lier à l'utilisateur connecté) - La fonctionnalité d'upload de supports est préparée mais nécessite l'implémentation du composant d'upload - Les présences sont gérées via le statut de l'inscription (confirmée/annulée)
This commit is contained in:
@@ -417,3 +417,32 @@ export const envoisQuestionnaires = mysqlTable("envoisQuestionnaires", {
|
||||
|
||||
export type EnvoiQuestionnaire = typeof envoisQuestionnaires.$inferSelect;
|
||||
export type InsertEnvoiQuestionnaire = typeof envoisQuestionnaires.$inferInsert;
|
||||
|
||||
/**
|
||||
* Table des supports de formation
|
||||
* Stocke les documents uploadés par les formateurs pour chaque séquence
|
||||
*/
|
||||
export const supportsFormation = mysqlTable("supportsFormation", {
|
||||
id: int("id").autoincrement().primaryKey(),
|
||||
/** ID de la séquence */
|
||||
sequenceId: int("sequenceId").notNull(),
|
||||
/** ID du formateur qui a uploadé le support */
|
||||
formateurId: int("formateurId").notNull(),
|
||||
/** Nom du fichier */
|
||||
nomFichier: varchar("nomFichier", { length: 255 }).notNull(),
|
||||
/** Type de fichier (PDF, PPTX, DOCX, etc.) */
|
||||
typeFichier: varchar("typeFichier", { length: 50 }).notNull(),
|
||||
/** Taille du fichier en octets */
|
||||
tailleFichier: int("tailleFichier").notNull(),
|
||||
/** URL du fichier dans S3 */
|
||||
urlFichier: varchar("urlFichier", { length: 500 }).notNull(),
|
||||
/** Clé S3 du fichier */
|
||||
s3Key: varchar("s3Key", { length: 500 }).notNull(),
|
||||
/** Description optionnelle du support */
|
||||
description: text("description"),
|
||||
createdAt: timestamp("createdAt").defaultNow().notNull(),
|
||||
updatedAt: timestamp("updatedAt").defaultNow().onUpdateNow().notNull(),
|
||||
});
|
||||
|
||||
export type SupportFormation = typeof supportsFormation.$inferSelect;
|
||||
export type InsertSupportFormation = typeof supportsFormation.$inferInsert;
|
||||
|
||||
Reference in New Issue
Block a user