Commit Graph

98 Commits

Author SHA1 Message Date
Manus
193f7ce32a Checkpoint: Ajout du secours de stockage réservé aux PDF de paie chiffrés : lorsque Forge est indisponible en recette, les octets AES-256-GCM sont stockés dans un volume hôte Docker persistant, jamais dans l'image ni la base. Import, réindexation et consultation passent par cette même abstraction, avec test de round-trip sans Forge. Compose transmet la clé AES et monte le volume dédié. Validation complète : 56 tests, TypeScript, build et format YAML.
All checks were successful
Validation applicative / TypeScript, tests et build (push) Successful in 2m9s
2026-08-29 23:19:21 +00:00
Manus
7698e9f680 Checkpoint: Correctif d'environnement recette : docker-compose transmet désormais explicitement PAYROLL_ENCRYPTION_KEY au service applicatif. La clé AES est déjà configurée de façon sécurisée dans le fichier d'environnement recette, sans affichage de sa valeur. pnpm verify passe après cette correction : TypeScript, 55 tests et build.
All checks were successful
Validation applicative / TypeScript, tests et build (push) Successful in 1m50s
2026-08-29 23:02:19 +00:00
Manus
558582d358 Checkpoint: Correctif CI de recette : le test d'état de chiffrement Salaires utilise désormais une clé AES-256 de test locale et restaure l'environnement, au lieu de dépendre du secret PAYROLL_ENCRYPTION_KEY non injecté dans le runner Gitea. La commande exacte de CI pnpm verify est validée localement : TypeScript, 55 tests et build passent.
All checks were successful
Validation applicative / TypeScript, tests et build (push) Successful in 2m45s
2026-08-29 22:52:03 +00:00
Manus
82de3181df Checkpoint: Fenêtre administrateur Salaires finalisée : import multipart limité, chiffrement AES-256-GCM avant stockage persistant hors conteneur, métadonnées/index métier minimisés en base, consultation PDF déchiffrée côté serveur avec no-store, filtres année/mois et comparaison M-1 expliquée. Réindexation sûre des archives partielles sans écrasement du PDF. Validation réelle sur deux liasses mensuelles : index partiel signalé sans invention de données, comparaison affichée et lecture après redémarrage. 55 tests Vitest, TypeScript et build de production validés.
Some checks failed
Validation applicative / TypeScript, tests et build (push) Failing after 1m54s
2026-08-29 22:40:59 +00:00
Manus
8a58f2c2bd Checkpoint: Déploiement recette validé de la Masse salariale, avec CI/CD Gitea et redéploiement Blue-Green du commit 0a00e70. Les wordmarks de connexion sont désormais intégrés à l'interface pour éviter les erreurs de ressources manus-storage sur la recette. 2026-08-27 16:09:49 +00:00
Manus
0a00e70a9f fix: rendre les wordmarks de connexion indépendants du stockage
All checks were successful
Validation applicative / TypeScript, tests et build (push) Successful in 1m35s
2026-08-27 16:02:12 +00:00
Manus
fe2a266d2d chore: tracer le rétablissement SSH recette
All checks were successful
Validation applicative / TypeScript, tests et build (push) Successful in 1m36s
2026-08-27 15:52:14 +00:00
Manus
15d67924ca chore: tracer le déploiement recette masse salariale 2026-08-27 13:34:51 +00:00
Manus
da407db4de Checkpoint: Ajout du module Masse salariale SANTINOVA : tables de salariés, rémunérations et évolutions manuelles sécurisées par rôle administrateur ; import contrôlé des bulletins 2025 et janvier–août 2026 ; écran tableau 2025–2027 ; tests d'autorisations, d'agrégats et des quatre états UI ; documentation des sources et de la politique d'import. 2026-08-27 13:10:47 +00:00
Manus
2f4b1f2e8e Checkpoint: Déploiement Gitea de recette validé : workflow CI rendu autonome vis-à-vis de GitHub (checkout Gitea interne), signature webhook corrigée, validation CI réussie et redéploiement Blue-Green terminé avec le commit ec597da. 2026-08-27 11:11:10 +00:00
Manus
ec597da4a2 Merge remote-tracking branch 'recette-ci/main'
All checks were successful
Validation applicative / TypeScript, tests et build (push) Successful in 4m19s
2026-08-27 10:58:54 +00:00
Manus
79411a6801 fix(ci): valider depuis Gitea interne 2026-08-27 10:57:05 +00:00
Santinova CI
c5ba703165 chore: déclencher le déploiement de recette 2026-08-27 12:39:50 +02:00
Santinova CI
df208f2b02 chore: déclencher le déploiement de recette 2026-08-27 12:35:57 +02:00
Manus
3b52527fd0 chore: tracer le déploiement de recette
Some checks failed
Validation applicative / TypeScript, tests et build (push) Failing after 4s
2026-08-27 10:26:54 +00:00
Manus
eec1c4e9f7 chore: synchroniser le CI Gitea et fiabiliser le build Docker 2026-08-27 10:19:39 +00:00
Manus
9a1b9f0ac6 Checkpoint: Correction de l'échec de build cloud : remplacement de l'installation globale flottante de pnpm par Corepack 0.31.0 et pnpm 10.4.1 verrouillé par packageManager, compatible avec pnpm-lock.yaml. Installation figée, TypeScript, 22 tests et build de production vérifiés localement. 2026-08-27 09:51:28 +00:00
Manus CI
06afee0d0b CI : workflow validate.yml, manifeste ci.required:true, garde VITEST, tests isolés
All checks were successful
Validation applicative / TypeScript, tests et build (push) Successful in 3m8s
2026-08-21 10:31:26 +00:00
Manus
07b96c03c1 Checkpoint: Finalisation du suivi de l'audit : les trois évolutions futures restent documentées comme hors périmètre, sans développement ajouté. 2026-08-17 20:51:21 +00:00
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
2422784aeb chore: versionner le manifeste de déploiement 2026-08-17 22:35:47 +02:00
manus-admin
81f57d9895 fix: deduplicate web network (Docker 29.4.0) 2026-07-08 12:49:52 +02:00
manus-admin
e65d6209ac fix: move DB to web network (Docker 29.4.0 ICC bug) 2026-07-08 12:45:25 +02:00
Manus
31cdb257fb Checkpoint: Menu latéral : nom utilisateur déplacé tout en bas avec espace libre avant, ajout du menu Tableau de bord Finance sous OPEX (Charges), création de la page dédiée avec accès au dossier OneDrive Windows. 2026-06-12 10:28:47 +00:00
Manus Deploy
795869fab4 ci: test webhook recette 2026-06-11 14:51:48 +00:00
Manus Deploy
3e85d187d4 ci: test webhook déploiement automatique 2026-06-11 14:47:35 +00:00
Manus Deploy
f6f512d234 fix: configurer Traefik (labels + réseau web) et supprimer nginx superflu 2026-06-11 14:32:01 +00:00
Manus Deploy
d9ce6eb65e fix: copier node_modules complets depuis builder (vite requis au runtime) 2026-06-11 14:26:33 +00:00
Manus Deploy
accfdab5e7 fix: inclure dossier patches dans le Dockerfile (stage runner) 2026-06-11 14:20:16 +00:00
Manus Deploy
8061887176 feat: ajout Dockerfile, docker-compose et nginx pour déploiement recette 2026-06-11 14:18:26 +00:00
Manus
aa095eae08 Checkpoint: La colonne Code est maintenant cliquable dans la vue Établissements OPEX : clic pour trier par code croissant/décroissant. Le tri par code est aussi le tri par défaut (quand aucune autre colonne n'est sélectionnée). Les colonnes Établissement et Total restent triables comme avant. 2026-06-11 09:31:03 +00:00
Manus
f0737a290e Checkpoint: Quand l'utilisateur active le toggle "Tout manuel" pour un établissement dans l'onglet Clés de répartition, les montants calculés automatiquement (prorata) sont d'abord sauvegardés en BDD via la nouvelle procédure batchSetMontantsEtab, puis le flag modeManuel est activé. L'établissement part donc avec les valeurs précalculées comme base de saisie manuelle. 2026-06-11 09:17:27 +00:00
Manus
60fd2b891e Checkpoint: Suppression des 6 lignes parasites en BDD (Infogérance, Sécurité, Applicatifs HEP, Applicatifs SMR, Téléphonie, TOTAL) + filtre PARASITE_PATTERNS dans handleFileImport pour empêcher leur réinsertion lors d'un import Excel. 2026-06-11 08:48:10 +00:00
Manus
eb1684f04c Checkpoint: Quand un établissement est en mode tout manuel, toutes ses cellules (postes en calcul automatique inclus) sont désormais cliquables et éditables. Fond ambre pour distinguer visuellement le mode tout manuel du mode manuel poste par poste (bleu). Les cellules sans saisie affichent "cliquer" en ambre. 2026-06-11 08:06:09 +00:00
Manus
0e1cab9f6c Checkpoint: Bug corrigé : ajout contrainte UNIQUE (annee, etablissementCode) sur opex_bases_repartition + déduplication des lignes existantes — le clic ne crée plus de doublon. Nouvelle fonctionnalité : colonne "Tout manuel" (toggle) dans l'onglet Clés de répartition — quand activé pour un établissement, le calcul prorata est ignoré et seuls les montants saisis manuellement dans la vue Établissements sont utilisés. Badge ambre visible dans les deux vues. 2026-06-11 07:57:02 +00:00
Manus
cfeb5196db Checkpoint: Corrections des deux lacunes identifiées dans l'onglet "Clés de répartition" de DSI OPEX :
1. Loading/error state : ClesRepartitionView reçoit désormais isLoadingBases et isErrorBases depuis la requête trpc.opex.getBasesRepartition.useQuery(). Affiche un spinner pendant le chargement et un message d'erreur si la requête échoue (au lieu d'un tableau vide trompeur).
2. Import fichier amélioré : détection intelligente de la feuille (mots-clés OPEX/DSI/répartition/base, insensible aux accents), recherche de l'en-tête dans les 15 premières lignes, normalisation des accents pour la détection des colonnes, message d'erreur détaillé avec les colonnes détectées, toast informatif si plusieurs feuilles présentes.
14 tests Vitest passants. 0 erreur TypeScript.
2026-06-11 07:24:34 +00:00
Manus
841ff1bd09 Checkpoint: Ajout de l'onglet 'Clés de répartition' dans DSI OPEX : tableau éditable avec base de répartition standard et base /HEP par établissement, import fichier Excel/CSV, info année (OPEX N → base N-2). Calcul automatique du poste SAAS DUI Pôle HEP branché sur la colonne /HEP. Nouvelle table opex_bases_repartition avec colonne baseRepartitionHep. Seed 2026 : 64 établissements dont 19 HEP. 14 tests passants, 0 erreur TypeScript. 2026-06-11 07:20:24 +00:00
Manus
14a660892a Checkpoint: - Ajout table opex_bases_repartition (11e table) avec 58 bases de répartition 2026 seedées depuis le JSON source
- Ajout procédure tRPC opex.getBasesRepartition et opex.setBaseRepartition
- DsiOpex utilise maintenant les bases de répartition depuis la BDD (priorité BDD > JSON fallback pour 2025)
- Total en bas à droite de la vue établissements affiche totalGlobal (somme postes BDD = 1 257 678 €) au lieu de la somme des arrondis par établissement (1 259 641 €)
- 0 erreur TypeScript
2026-06-11 06:24:31 +00:00
Manus
7d4ac0721d Checkpoint: Seed des données OPEX depuis les fichiers JSON sources vers la base de données MySQL. 33 postes 2025 + 35 postes 2026 + 2030 montants établissements 2026 insérés. Script scripts/seed-opex.mjs créé pour réimport futur. La page DSI OPEX charge désormais les données depuis la BDD sans dépendre du localStorage. 2026-06-10 13:11:32 +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
e7f5092263 Checkpoint: Correction du clignotement sur la page /login : (1) redirectToLoginIfUnauthorized dans main.tsx ne redirige plus si déjà sur /login, (2) ParametresContext désactive la requête parametres.get sur /login (enabled: !isLoginPage via useLocation). 0 erreur TypeScript. 2026-06-10 12:57:48 +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
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