Commit Graph

97 Commits

Author SHA1 Message Date
Manus
c762998f69 Checkpoint: Colonne Type réduite à 80px avec texte tronqué. Colonne Ventilation ajoutée dans le panneau showDetails (visible avec le bouton Voir détails), avec badge coloré vert=Prorata/bleu=Manuel. Ajout de mode_ventilation dans l'interface LigneOpex. 2026-06-10 09:32:51 +00:00
Manus
bd9b52d39a Checkpoint: Ajout de gardes défensives sur e.nom et e.code dans filteredEtabs et sortedEtabs : conversion explicite en string avant toLowerCase/localeCompare pour éviter le crash quand un établissement a un nom non-string (undefined, null, objet). 2026-06-10 09:15:38 +00:00
Manus
90938eb83c Checkpoint: Remplacement de toutes les valeurs hsl(var(--*)) invalides par des valeurs oklch solides directes (oklch(1 0 0) pour card, oklch(0.97 0.003 80) pour lignes alternées, oklch(0.94 0.005 80) pour muted). Ajout de isolation:isolate sur le conteneur overflow-x-auto. Position sticky en style inline avec zIndex explicite (30 pour thead, 20 pour tbody/tfoot). 2026-06-10 09:13:06 +00:00
Manus
6f118e41f7 Checkpoint: Remplacement des classes Tailwind bg-muted/40 et bg-card par des valeurs hsl CSS explicites en style inline sur toutes les cellules sticky right-0 (th en-tête, td corps, td pied). Largeur fixe 120px pour cohérence. Ombre portée gauche renforcée pour matérialiser la séparation. 2026-06-10 09:09:34 +00:00
Manus
9e8830e929 Checkpoint: Remplacement des min-w Tailwind par des width/minWidth/maxWidth explicites en style inline (Code=110px, Établissement=220px, left=110px) pour garantir la cohérence entre la largeur réelle et la position left des colonnes sticky. Ajout d'un title sur la cellule Établissement pour voir le nom complet en cas de troncature. 2026-06-10 09:08:19 +00:00
Manus
8de20ba62e Checkpoint: Remplacement de bg-inherit par des couleurs de fond explicites (hsl CSS vars) sur toutes les cellules sticky (Code, Établissement, Total) dans le tableau OPEX vue Établissements. Ajout de border-separate + border-spacing-0 sur le tableau et d'ombres portées pour matérialiser la séparation visuelle lors du scroll horizontal. 2026-06-10 09:01:42 +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
f64a7db3f3 Checkpoint: Les lignes Ventilation cout, Infogérance, Sécurité, Applicatifs PA, Applicatifs HEP, Applicatifs SMR, Téléphonie, Nouveautés, TOTAL étaient stockées comme de faux établissements dans la section etablissements de data_opex.json. Supprimées directement du JSON source. Le nombre d'établissements passe de 67 à 58 vrais établissements. 2026-06-10 08:01:54 +00:00
Manus
a0508893f1 Checkpoint: 1) Filtre automatique des lignes parasites (Ventilation cout, Infogérance, Sécurité, Applicatifs PA, etc.) lors du chargement depuis localStorage — purge et sauvegarde la version nettoyée. 2) Édition inline dans la vue Établissements : les cellules bleues (saisie manuelle) sont cliquables, affichent un input numérique autoFocus, sauvegardent via Enter/onBlur, annulent via Escape. Les overrides sont stockés dans opexState.montantsManuelEtab et intégrés dans le recalcul dynamique. Les cellules avec override saisi sont en gras. Les cellules vides affichent 'cliquer' en bleu clair. 2026-06-10 07:55:49 +00:00
Manus
eb236f4b8f Checkpoint: Suppression du bloc Répartition par catégorie en bas de la vue Postes (doublon des vignettes KPI). Refonte de la vue Établissements : tableau scrollable horizontalement avec tous les 35 postes en colonnes, code couleur vert (bordure emerald = calcul prorata automatique) / bleu (bordure bleue = saisie manuelle), colonnes Code et Établissement sticky à gauche, colonne Total sticky à droite, légende en haut du tableau. 2026-06-10 07:43:25 +00:00
Manus
fa30872300 Checkpoint: La vue Établissements de la page OPEX recalcule désormais dynamiquement les montants par établissement depuis les postes éditables (totalPostes × ratio_base_repartition), au lieu de lire les montants pré-calculés erronés du JSON source (qui étaient doublés). Le total des établissements est maintenant cohérent avec le total des postes. 2026-06-10 07:30:44 +00:00
Manus
7c30c7b82b Checkpoint: Les 4 pages (Renouvellement PC, CAPEX-Construction, CAPEX-Synthèse, OPEX Charges) sont désormais directement accessibles sous ITINOVA sans sous-menus intermédiaires. 2026-06-05 08:27:22 +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
Manus
6b81d689b1 Checkpoint: Les sous-menus (Établissements, DSI) restent ouverts indépendamment jusqu'à clic pour les refermer. Les menus principaux (Itinova, Santinova…) continuent de fonctionner en accordéon (un seul ouvert à la fois). 2026-06-04 13:55:03 +00:00
Manus
da7921b435 Checkpoint: Ajout d'un bouton Supprimer (rouge) avec AlertDialog de confirmation à côté de Réinitialiser dans le header OPEX DSI. Disponible uniquement pour les prévisionnels non validés. Après confirmation, efface toutes les données de l'année et affiche l'écran vide avec les boutons Créer depuis N-1 / Ajouter manuellement. 2026-06-04 13:53:53 +00:00
Manus
1ce830d593 Checkpoint: OPEX DSI : ajout d'un écran vide dédié pour les années sans données, avec bouton "Créer depuis N-1" (copie toutes les lignes de l'année précédente avec confirmation AlertDialog) et bouton "Ajouter une ligne manuellement". La fonction handleCreateFromN1 clone les lignes N-1 avec budget_n1 = montant N-1 pour que les tendances soient calculables dès la création. 2026-06-04 13:48:45 +00:00
Manus
7e360ca113 Checkpoint: OPEX DSI : colonne Tendance ajoutée sur chaque ligne du tableau - pastille rouge+flèche montante (hausse > 2%), orange stable (< 2%), vert+flèche descendante (baisse), bleu "Nouveau" (pas de N-1). Pourcentage d'évolution affiché dans chaque pastille. 2026-06-04 13:39:48 +00:00
Manus
eac06d1ca2 Checkpoint: OPEX DSI : flèches de tendance colorées (rouge=hausse, orange=stable, vert=baisse) sur chaque vignette de catégorie, avec montant N-1 affiché. Données 2025 intégrées depuis le fichier Excel. Support multi-années 2025/2026 avec données sources distinctes. 2026-06-04 08:03:28 +00:00
Manus
2304724ba6 Checkpoint: Refonte complète de la page DSI OPEX : grille de vignettes dynamique pour toutes les catégories (App global, Infogérance, Sécurité, Téléphonie, App HEP, App SMR, Autre), montants éditables inline, boutons Modifier/Supprimer par ligne, modale d'ajout/édition complète, confirmation de suppression, persistance par année en localStorage, validation définitive avec verrouillage. 2026-06-03 16:12:34 +00:00
Manus
f9ea5dbba5 Checkpoint: Correction du layout de la sidebar : la nav utilise maintenant flex: 1 1 0 avec minHeight: 0 et overflowY: auto, et l'aside a height: 100vh avec overflow: hidden. Cela garantit que le bouton Paramètres reste toujours visible en bas, même quand les sous-menus Établissements ou DSI sont ouverts et que le contenu dépasse la hauteur de l'écran. 2026-06-03 15:55:36 +00:00
Manus
9734ae9e93 Checkpoint: Le bouton Paramètres en bas de sidebar a été restylisté : icône dans un carré arrondi bg-white/10, label en font-semibold tracking-wide, opacité text-white/70 (au lieu de text-white/50), état actif avec ring-1 ring-white/30 et indicateur point blanc. Bien plus visible qu'avant. 2026-06-03 14:52:20 +00:00
Manus
938a567cce Checkpoint: Ajout du champ anneeDefaut dans ParametresContext (avec persistance localStorage). Nouvelle section "Année d'ouverture par défaut" dans la page Paramètres avec sélecteur de boutons (2025-2030). AnneeContext mis à jour pour utiliser cette valeur au premier lancement (quand aucune session n'est mémorisée). La page Paramètres reste accessible via l'icône engrenage en bas de la sidebar. 2026-06-03 14:48:16 +00:00
Manus
5cad041d95 Checkpoint: Refonte complète de DsiOpex.tsx : chaque montant prévisionnel est maintenant éditable via un champ numérique inline. Bouton Enregistrer (actif uniquement si modifications non sauvegardées). Bouton Valider avec AlertDialog de confirmation — une fois validé, l'OPEX est verrouillé définitivement (badge "Validé + date", icône cadenas, champs en lecture seule). Persistance par année en localStorage via getOpexStorageKey. Réinitialisation aux valeurs sources possible. Les KPIs et totaux se recalculent en temps réel à chaque modification. 2026-06-03 13:34:49 +00:00
Manus
3c039142d6 Checkpoint: Suppression du rowSpan qui causait le bug des 2 premières lignes figées lors du scroll. Remplacement de toutes les mentions "2027" en dur dans l'en-tête du tableau par la variable dynamique {annee}. Le titre affiche désormais "CAPEX 2026" ou "CAPEX 2027" selon l'année sélectionnée. 2026-06-03 13:24:26 +00:00
Manus
9ea7a36a09 Checkpoint: hasDonnees dans DsiCapex prend désormais en compte les années avec inventaire importé (2026 et 2027), même si aucune saisie manuelle n'a été faite. La colonne Renouvellement Parc Info est pré-remplie par le calcul de vétusté pour ces années. 2026-06-03 13:20:03 +00:00
Manus
919ee72411 Checkpoint: Suppression du badge redondant "Exercice XXXX" du composant AnneeSelectorBar. L'année active est déjà mise en évidence par le bouton sélectionné dans le sélecteur. Le header de CAPEX-Construction est réorganisé pour que le sélecteur et les boutons Réinitialiser/Enregistrer soient sur la même ligne sans chevauchement. 2026-06-03 13:13:16 +00:00
Manus
c5eac65098 Checkpoint: Renouvellement PC et CAPEX-Synthèse : KPIs, barre de filtres et tableau sont masqués pour les années sans données importées/saisies. Seul l'écran vide explicite s'affiche. Les années 2026-2027 restent pleinement fonctionnelles sur Renouvellement PC. CAPEX-Synthèse se vide dès qu'aucun budget n'a été saisi pour l'année sélectionnée. 2026-06-03 10:15:25 +00:00
Manus
0adfcba5d2 Checkpoint: Renouvellement PC affiche un état vide pour les années sans inventaire importé (hors 2026-2027). Construction Budget affiche la valeur de renouvellement de l'année N-1 dans les données historiques (depuis les saisies CAPEX N-1 ou l'enveloppe 2026 du fichier BP2027 en fallback). Titre du formulaire dynamique selon l'année. 2026-06-03 10:04:55 +00:00
Manus
787928c722 Checkpoint: Sélecteur d'année global (2025, 2026, 2027+) sur Renouvellement PC, CAPEX-Construction, CAPEX-Synthèse et DSI-OPEX. Données CAPEX isolées par année en localStorage. Titres dynamiques selon l'année sélectionnée. 2026-06-03 09:49:14 +00:00
Manus
858f0dc4d9 Checkpoint: Sidebar refondée : application renommée Budget SI, menus accordéon avec couleurs distinctes (bleu Itinova, vert Santinova, violet Soins et Santé, orange St Exupéry), CAPEX-Synthèse déplacé dans Établissements, Construction BP 2027 renommé CAPEX-Construction. 2026-06-03 09:41:47 +00:00
Manus
1cdfbd1b12 Checkpoint: Page DSI CAPEX : tableau consolidé des investissements SI 2027 par établissement, au format du fichier Excel BP2027, avec 9 colonnes colorées, totaux par colonne, KPIs, filtres et tri. 2026-06-02 21:06:15 +00:00
Manus
808c5e4f95 Checkpoint: Page OPEX DSI complète avec tableau de 35 postes de charges, KPIs, filtres par catégorie, vue par poste et par établissement, sélecteur d'année 2026/2027, et graphique de répartition par catégorie. 2026-06-02 20:59:01 +00:00
Manus
751ac207c0 Checkpoint: Nouvelle navigation hiérarchique avec 4 menus principaux (Itinova, Santinova, Soins et Santé, St Exupéry), sous-menus dépliables (Établissements, DSI), sidebar partagée AppSidebar sur toutes les pages, et pages placeholder pour les sections à venir. 2026-06-02 20:50:23 +00:00
Manus
73475b697d Checkpoint: Suppression du bloc "Renouvellement 2025" dans la section données historiques de la page Construction BP 2027. Seul le Renouvellement 2026 reste affiché. 2026-04-06 15:47:22 -04:00
Manus
9f357d9ae2 Checkpoint: Renommage du menu "Établissements" en "Renouvellement PC" dans la sidebar des 3 pages (Home, Paramètres, Budget2027) et dans le titre de la page principale. 2026-04-06 15:35:53 -04:00
Manus
34e320cced Checkpoint: Ajout de la page Construction Budget 2027 : formulaire CAPEX DSI par établissement, renouvellement 2027 pré-rempli depuis vétusté, données historiques 2025/2026 en lecture seule, 9 champs optionnels, récapitulatif total avec comparaison vs 2026, persistance localStorage, navigation complète dans la sidebar. 2026-04-06 13:29:00 -04:00
Manus
b651705e98 Checkpoint: Ajout de la page Paramètres : seuils de vétusté (PC fixes et portables) et coûts unitaires configurables via sliders + inputs numériques. Recalcul automatique de tous les budgets à l'enregistrement. Persistance dans localStorage. Navigation sidebar Établissements ↔ Paramètres. 2026-04-02 13:12:54 -04:00
Manus
c4dce77ecc Checkpoint: Ajout de la vue liste (tableau) en complément de la vue vignettes — toggle Vignettes/Liste dans la barre de filtres, tableau avec tri par colonne, barres de vétusté colorées, budget en orange/vert. 2026-04-01 05:45:51 -04:00
Manus
908cf74046 Checkpoint: Suppression des 15 établissements ST Exupéry — 60 établissements restants, budget global 842 850 €, 493 PC fixes + 621 portables à renouveler (1 114 total). 2026-04-01 05:37:35 -04:00
Manus
0fa0663910 Checkpoint: Suppression des 15 établissements ST Exupéry — 60 établissements restants, budget global recalculé à 842 850 €, 1 114 équipements à renouveler. 2026-04-01 05:36:41 -04:00
Manus
745ea5dce6 Checkpoint: Application Budget Renouvellement SI 2027 Itinova — Version complète avec dashboard KPIs, grille des 75 établissements, panneau de détail par établissement avec tableau de synthèse et liste des équipements filtrables. 2026-04-01 03:48:42 -04:00
Manus
0f673d9ab0 Initial project bootstrap 2026-04-01 03:40:00 -04:00