From 61ba1a8d1dac4a17e8e23c496d0bdc0ef315d6c2 Mon Sep 17 00:00:00 2001 From: Manus Date: Wed, 27 May 2026 17:31:02 +0000 Subject: [PATCH] =?UTF-8?q?Checkpoint:=20Fonctionnalit=C3=A9=20compl=C3=A8?= =?UTF-8?q?te=20"Gestion=20des=20plans=20de=20formations"=20:=20-=203=20no?= =?UTF-8?q?uvelles=20tables=20DB=20:=20catalogueFormation,=20planFormation?= =?UTF-8?q?,=20planFormationItem=20-=20Backend=20tRPC=20:=20routers=20cata?= =?UTF-8?q?logue=20et=20planFormation=20avec=20CRUD=20complet,=20import=20?= =?UTF-8?q?CSV/Excel,=20suggestion=20automatique=20-=20Frontend=20:=20page?= =?UTF-8?q?s=20PlanFormation,=20PlanFormationDetail,=20CatalogueFormation?= =?UTF-8?q?=20+=20menu=20sidebar=20-=20D=C3=A9ploy=C3=A9=20sur=20le=20serv?= =?UTF-8?q?eur=20de=20recette=20(TEST)=20:=20https://formations.recette.sa?= =?UTF-8?q?ntinova-soft.org=20-=20Portail=20applicatif=20mis=20=C3=A0=20jo?= =?UTF-8?q?ur=20avec=20la=20carte=20de=20l'application?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- generate-schema-sql.mjs | 37 +++++++++++++++++++++++++++++++++++++ todo.md | 18 +++++++++--------- 2 files changed, 46 insertions(+), 9 deletions(-) create mode 100644 generate-schema-sql.mjs diff --git a/generate-schema-sql.mjs b/generate-schema-sql.mjs new file mode 100644 index 0000000..2e01064 --- /dev/null +++ b/generate-schema-sql.mjs @@ -0,0 +1,37 @@ +#!/usr/bin/env node +/** + * Génère le SQL CREATE TABLE pour toutes les tables du schéma Drizzle. + * Utilise drizzle-kit pour générer le SQL. + */ +import { execSync } from 'child_process'; +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +// Lire le fichier de schéma +const schemaPath = path.join(__dirname, 'drizzle/schema.ts'); +const schemaContent = fs.readFileSync(schemaPath, 'utf-8'); + +console.log('Schéma lu, génération du SQL...'); + +// Utiliser tsx pour transpiler et exécuter le schéma +// puis générer le SQL via drizzle-kit +try { + const result = execSync('pnpm drizzle-kit generate --name=full_schema_recette', { + cwd: __dirname, + encoding: 'utf-8', + timeout: 30000 + }); + console.log(result); +} catch (e) { + console.error(e.message); +} + +// Lister les fichiers SQL générés +const sqlFiles = fs.readdirSync(path.join(__dirname, 'drizzle')) + .filter(f => f.endsWith('.sql')) + .sort(); + +console.log('SQL files:', sqlFiles); diff --git a/todo.md b/todo.md index ef3bb58..a579925 100644 --- a/todo.md +++ b/todo.md @@ -1728,16 +1728,16 @@ ## Fonctionnalité - Gestion des plans de formations ### Schéma DB -- [ ] Ajouter la table catalogueFormation (intitulé, thème, mots-clés, durée, prestataire, description, validateeItinova, opcoEligible, budgetOpco, referenceOpco, source) -- [ ] Ajouter la table planFormation (etablissementId, annee, statut, notes) -- [ ] Ajouter la table planFormationItem (planId, intitule, duree, prestataire, publicConcerne, description, statut, catalogueFormationId optionnel) -- [ ] Migrer le schéma avec pnpm db:push +- [x] Ajouter la table catalogueFormation (intitulé, thème, mots-clés, durée, prestataire, description, validateeItinova, opcoEligible, budgetOpco, referenceOpco, source) +- [x] Ajouter la table planFormation (etablissementId, annee, statut, notes) +- [x] Ajouter la table planFormationItem (planId, intitule, duree, prestataire, publicConcerne, description, statut, catalogueFormationId optionnel) +- [x] Migrer le schéma avec pnpm db:push ### Backend tRPC -- [ ] Procédures catalogue : list, create, update, delete, importCSV, importExcel -- [ ] Procédures planFormation : list, create, update, delete, valider -- [ ] Procédures planFormationItem : list, create, update, delete -- [ ] Logique de suggestion automatique (formations "validée Itinova" par thème/mot-clé, sinon catalogue général) +- [x] Procédures catalogue : list, create, update, delete, importCSV, importExcel +- [x] Procédures planFormation : list, create, update, delete, valider +- [x] Procédures planFormationItem : list, create, update, delete +- [x] Logique de suggestion automatique (formations "validée Itinova" par thème/mot-clé, sinon catalogue général) ### Frontend - Menu & Navigation - [x] Ajouter la section "Gestion des plans de formations" dans DashboardLayout.tsx @@ -1767,5 +1767,5 @@ - [x] Permettre d'associer une formation du catalogue à un item du plan ### Déploiement -- [ ] Tester sur TEST +- [x] Tester sur TEST - [ ] Déployer sur PROD