Files
itinova-budget-si/todo.md

54 lines
3.3 KiB
Markdown

# Budget SI Itinova — TODO
## Migration vers base de données (tRPC + auth locale)
- [x] Schéma Drizzle complet (users, etablissements, inventaire, opex, capex, parametres_app)
- [x] Migration base de données (pnpm db:push — 10 tables créées)
- [x] Seed compte admin par défaut (admin / Itinova2027!)
- [x] Authentification locale JWT (bcrypt + cookie httpOnly)
- [x] Routes tRPC : auth.login, auth.me, auth.logout
- [x] Routes tRPC : users.list, users.create, users.update, users.delete, users.importBulk
- [x] Routes tRPC : etablissements.list, etablissements.upsert, etablissements.delete
- [x] Routes tRPC : parametres.get, parametres.set, parametres.setBulk
- [x] Routes tRPC : opex.getPostes, opex.upsertPoste, opex.getMontantsEtab, opex.setMontantEtab, opex.getValidated, opex.validate, opex.initFromSource, opex.cloneFromN1
- [x] Routes tRPC : inventaire.get, inventaire.import, inventaire.getStats, inventaire.listMeta
- [x] Routes tRPC : capex.get, capex.save
- [x] Page de connexion avec branding Itinova/Santinova
- [x] Protection des routes (ProtectedRoute dans App.tsx — useEffect)
- [x] Hook useAuth branché sur tRPC (auth.me)
- [x] Bouton déconnexion dans la sidebar
- [x] Page Paramètres — onglet Établissements branché sur tRPC
- [x] Page Paramètres — onglet Utilisateurs branché sur tRPC
- [x] ImportModal — import inventaire sauvegardé en BDD via tRPC (sans double-écriture localStorage)
- [x] ImportModal — import établissements sauvegardé en BDD via tRPC
- [x] ImportModal — import utilisateurs sauvegardé en BDD via tRPC
- [x] ImportModal — indicateur "État des inventaires par année" branché sur tRPC (inventaire.listMeta)
- [x] Tests Vitest (14 tests passent) : auth.logout, auth.me, auth.login, etablissements.list, users.list, parametres.get
## Migration des pages d'affichage vers BDD
- [x] useBudgetData — lit depuis tRPC (inventaire.getStats)
- [x] ParametresContext — lit/écrit depuis tRPC (parametres.get, parametres.setBulk)
- [x] Page Renouvellement PC (Home.tsx) — données inventaire depuis tRPC via useBudgetData
- [x] Page Budget 2027 — données CAPEX depuis tRPC (capex.get, capex.save) + inventaire depuis tRPC
- [x] Page DSI CAPEX — synthèse CAPEX depuis tRPC
- [x] Page DSI OPEX — données OPEX depuis tRPC (opex.*)
- [x] Pages Santinova, Soins Santé, St-Exupéry — pages "Coming Soon" (pas de données)
## Améliorations futures
- [ ] Gestion des droits par établissement (userEtablissements)
- [ ] Export PDF/Excel des budgets
- [ ] Historique des modifications (audit log)
## Onglet Clés de répartition dans DSI OPEX
- [ ] Analyser le fichier source pour extraire les colonnes base_repartition et base_repartition_hep
- [ ] Ajouter colonne base_repartition_hep dans la table opex_bases_repartition + migration
- [ ] Routes tRPC : opex.getBasesRepartition (mise à jour), opex.setBaseRepartition (mise à jour avec hep), opex.importBasesRepartition
- [ ] Seeder les données base_repartition_hep 2026 depuis le fichier source
- [ ] Créer l'onglet "Clés de répartition" dans DsiOpex avec tableau éditable (base standard + /HEP)
- [ ] Import fichier Excel/CSV dans l'onglet Clés de répartition
- [ ] Afficher l'info "Année de la base = année OPEX - 2" dans l'onglet
- [ ] Brancher le calcul du poste "DUI pôle HEP" sur base_repartition_hep