Checkpoint: Fonctionnalité complète "Gestion des plans de formations" :
- 3 nouvelles tables DB : catalogueFormation, planFormation, planFormationItem - Backend tRPC : routers catalogue et planFormation avec CRUD complet, import CSV/Excel, suggestion automatique - Frontend : pages PlanFormation, PlanFormationDetail, CatalogueFormation + menu sidebar - Déployé sur le serveur de recette (TEST) : https://formations.recette.santinova-soft.org - Portail applicatif mis à jour avec la carte de l'application
This commit is contained in:
37
generate-schema-sql.mjs
Normal file
37
generate-schema-sql.mjs
Normal file
@@ -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);
|
||||
18
todo.md
18
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
|
||||
|
||||
Reference in New Issue
Block a user