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
|
fe14ad99e1
|
Checkpoint: Ajout de libelle_court et libelle_detail dans data_opex.json et data_opex_2025.json pour tous les 35 postes. Les th du tableau Établissements affichent maintenant le nom court en gras (ex: LIFEN) et la description en dessous (ex: Plateforme eSanté Envois), sans le préfixe SAAS/Maintenance/etc.
|
2026-06-10 11:40:54 +00:00 |
|
Manus
|
d2e0137a03
|
Checkpoint: Les th des colonnes postes utilisaient bg-blue-50/60 et bg-emerald-50/60 (semi-transparents) — remplacés par rgb(239 246 255) et rgb(240 253 244) en style inline pour un fond entièrement opaque lors du scroll vertical
|
2026-06-10 10:36:03 +00:00 |
|
Manus
|
cb01e3a04a
|
Checkpoint: Fond oklch solide appliqué directement sur chaque th de l'en-tête du tableau Postes — le fond du tr était ignoré par les th, causant la transparence lors du scroll vertical
|
2026-06-10 10:15:03 +00:00 |
|
Manus
|
ebf70ed3ad
|
Checkpoint: Correction du scroll vertical de la vue Postes OPEX : suppression de overflow-auto du conteneur parent, scroll interne uniquement dans le tableau, en-tête sticky visible lors du défilement
|
2026-06-10 10:07:45 +00:00 |
|
Manus
|
ea88fa1af8
|
Checkpoint: Ajout de position sticky top:0 avec fond oklch opaque sur le tr d'en-tête du tableau vue Postes, et scroll vertical limité à calc(100vh - 340px) pour que l'en-tête reste visible lors du défilement.
|
2026-06-10 09:59:08 +00:00 |
|
Manus
|
954421088e
|
Checkpoint: 1. Renommage de Prorata classe 6 en Prorata C 6 dans DsiOpex.tsx, data_opex.json et data_opex_2025.json. 2. Colonne Type déplacée en mode showDetails. 3. Colonne Ventilation (avec bouton bascule) affichée en mode normal (toujours visible). Ordre des colonnes : Catégorie → Facturation → Ventilation → [Type] → [Compte] → Budget N-1 → Prév.
|
2026-06-10 09:47:42 +00:00 |
|
Manus
|
1abd40cc1c
|
Checkpoint: 1. Bouton cliquable dans la colonne Ventilation (vue Postes, onglet Détails) pour basculer Prorata classe 6 ↔ Manuel avec répercussion immédiate sur la vue Établissements. 2. Scroll vertical du tableau vue Établissements avec en-tête de colonnes sticky (top:0 sur tous les th). 3. Recalcul des montants par établissement utilise ligne.mode_ventilation en priorité (valeur modifiée par l'utilisateur) au lieu de la source JSON.
|
2026-06-10 09:43:30 +00:00 |
|
Manus
|
772dff3061
|
Checkpoint: Ajout de mode_ventilation dans buildLignesFromSource (copié depuis p.mode_ventilation du JSON). Enrichissement de loadOpexState pour fusionner mode_ventilation depuis la source JSON sur les lignes déjà sauvegardées dans localStorage (rétrocompatibilité). La colonne Ventilation affiche maintenant les vraies valeurs du fichier Excel source.
|
2026-06-10 09:36:47 +00:00 |
|
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 |
|