Commit Graph

11 Commits

Author SHA1 Message Date
Manus
615dd46059 Checkpoint: Audit de robustesse et maintenabilité : calcul dynamique des tendances OPEX par véritable année N-1, filtrage/validation centralisés des codes établissement, transactions d'import et d'écriture, contraintes uniques CAPEX/OPEX avec déduplication, suppression effective de postes OPEX, nettoyage des gabarits et scripts morts, chargement différé XLSX, documentation métier et 22 tests passants. 2026-08-17 20:50:33 +00:00
Manus
7495e61b51 Checkpoint: Désactivation de trpc.inventaire.listMeta.useQuery dans ImportModal quand la modale est fermée ou sur /login (enabled: open && !isLoginPage). Supprime l'erreur [API Query Error] Please login (10001) sur la page de connexion. 2026-06-10 12:59:22 +00:00
Manus
020156d62c Checkpoint: Migration complète localStorage → BDD : useBudgetData, ParametresContext, Budget2027, DsiCapex, DsiOpex, ImportModal (indicateur inventaires + suppression double-écriture). Ajout procédures tRPC : inventaire.listMeta, inventaire.getStats, opex.initFromSource, opex.deleteAll, opex.cloneFromN1. 14 tests Vitest passants. 0 erreur TypeScript. 2026-06-10 12:49:29 +00:00
Manus
caf95da1c1 Checkpoint: Migration complète vers authentification locale (JWT + bcrypt) : schéma DB (10 tables), routes tRPC (auth, users, etablissements, inventaire, capex, opex, parametres), page de login avec branding Itinova/Santinova, protection des routes, onglets Établissements et Utilisateurs branchés sur tRPC, import inventaire/établissements/utilisateurs via tRPC, 14 tests Vitest passants. 2026-06-10 12:17:07 +00:00
Manus
3145e9c84f Checkpoint: Inventaire PC distinct par année : clé budgetsi_inventaire_data_YYYY dans localStorage, ImportModal utilise l'année active (useAnnee), indicateur visuel des imports par année dans la modale, useBudgetData + Budget2027 + DsiCapex rechargent l'inventaire à chaque changement d'année 2026-06-10 08:47:32 +00:00
Manus
e13cb21883 Checkpoint: Suppression complète de la dépendance à data_budget.json : l'inventaire est désormais exclusivement alimenté par l'import utilisateur (localStorage budgetsi_inventaire_data). useBudgetData lit depuis localStorage, Budget2027 et DsiCapex calculent le renouvellement depuis l'inventaire importé, les pages affichent un état vide avec invitation à importer si aucun inventaire n'est présent. L'import stocke les postes complets (fixes/portables avec âge calculé) par établissement, utilise la colonne Type de matériel en priorité, et émet un événement custom pour notifier toutes les pages en temps réel. 2026-06-04 16:06:33 +00:00
Manus
af5d4fd703 Checkpoint: Ajout du support XLSX natif via la librairie SheetJS (xlsx). Un helper fileToRows() unifie la lecture CSV et XLSX : pour XLSX, lecture via arrayBuffer + XLSX.read + sheet_to_json ; pour CSV, détection du séparateur et split classique. Le parsing ISI-APP fonctionne désormais identiquement sur les deux formats. Les métadonnées d'import incluent le format détecté (isi-app ou classique). 2026-06-04 15:10:48 +00:00
Manus
b917aeaa56 Checkpoint: Correction du bug d'affichage de la modale : déplacement du rendu hors de la sidebar (overflow:hidden) via un ImportModalContext + rendu au niveau racine dans App.tsx. Mise à jour du prompt par défaut avec les règles précises du format ISI-APP réel (code depuis libellé 8 car., nom depuis entité, type fixe/portable depuis libellé, vétusté depuis date mise en service ou date achat). Mise à jour du parsing handleInventaireFile pour utiliser ces règles avec comptage fixes/portables dans le résumé. 2026-06-04 14:53:25 +00:00
Manus
e124a970a7 Checkpoint: Ajout d'un éditeur de prompt de processus d'import dans l'onglet "Inventaire postes" de la modale Imports & Données. Le prompt est affiché dans un bloc pliable/dépliable, modifiable via un textarea monospace (16 lignes), sauvegardable en localStorage (clé budgetsi_import_prompt), réinitialisable aux valeurs par défaut. Le prompt par défaut documente le format attendu, les colonnes obligatoires/optionnelles, les règles de traitement et le comportement attendu. Boutons Modifier / Enregistrer / Annuler / Réinitialiser par défaut. 2026-06-04 14:38:48 +00:00
Manus
ade7471956 Checkpoint: Import inventaire ISI-APP enrichi : le fichier CSV est maintenant parsé pour extraire automatiquement les établissements uniques (code + nom) et les enregistrer dans budgetsi_etablissements. Fusion intelligente avec les établissements existants (sans écrasement). Message de résultat détaillé (nb lignes, nb établissements détectés, nb nouveaux/mis à jour). Accepte de nombreuses variantes de nommage de colonnes (code_etab, code_etablissement, nom_etab, etablissement…). Message d'erreur explicite avec affichage des en-têtes détectés si les colonnes sont introuvables. 2026-06-04 14:28:26 +00:00
Manus
4ff5228ac3 Checkpoint: Ajout du bouton "Imports & Données" au-dessus du bouton Paramètres dans la sidebar (icône Upload, couleur indigo). Création du composant ImportModal avec 3 onglets : Inventaire postes (ISI-APP), Établissements (import CSV), Utilisateurs (import CSV). Enrichissement de la page Paramètres avec 3 onglets : Paramètres (contenu existant), Établissements (CRUD + activer/désactiver), Utilisateurs (CRUD + rattachement multi-établissements par checkboxes). 2026-06-04 14:11:08 +00:00