Checkpoint: Implémentation complète de la fonctionnalité "Gestion des plans de formations" :
- Schéma DB : 3 nouvelles tables (catalogueFormation, planFormation, planFormationItem) - Backend tRPC : routers catalogue et planFormation (CRUD, import bulk CSV, suggestions, toggle validée Itinova) - Frontend : page Plans de formation (liste par établissement/année, CRUD, soumission/validation) - Frontend : page Détail plan (items, liaison catalogue, suggestions automatiques) - Frontend : page Catalogue de formation (liste, filtres thème/Itinova/OPCO, import CSV, badges) - Menu sidebar : nouvelle section "Plans de formations" avec sous-menus - Tests unitaires : 13 tests (scoring suggestions, validation données, parsing CSV)
This commit is contained in:
@@ -16,6 +16,8 @@ import { parseExcelFile, validateImportData, importToDatabase } from "./importEx
|
||||
import crypto from "crypto";
|
||||
import bcrypt from "bcryptjs";
|
||||
import { sql } from "drizzle-orm";
|
||||
import { catalogueRouter } from "./routers/catalogue";
|
||||
import { planFormationRouter } from "./routers/planFormation";
|
||||
|
||||
// Procédure admin uniquement
|
||||
const adminProcedure = protectedProcedure.use(({ ctx, next }) => {
|
||||
@@ -3135,6 +3137,7 @@ export const appRouter = router({
|
||||
return await fail2banDb.countRecentBans(input.hours);
|
||||
}),
|
||||
}),
|
||||
catalogue: catalogueRouter,
|
||||
planFormation: planFormationRouter,
|
||||
});
|
||||
|
||||
export type AppRouter = typeof appRouter;
|
||||
|
||||
Reference in New Issue
Block a user