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.
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.
Validation applicative / TypeScript, tests et build (push) Failing after 1m54s
2026-08-29 22:40:59 +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
eec1c4e9f7
chore: synchroniser le CI Gitea et fiabiliser le build Docker
2026-08-27 10:19:39 +00:00
Manus CI
06afee0d0b
CI : workflow validate.yml, manifeste ci.required:true, garde VITEST, tests isolés
Validation applicative / TypeScript, tests et build (push) Successful in 3m8s
2026-08-21 10:31:26 +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
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
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
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
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
0f673d9ab0
Initial project bootstrap
2026-04-01 03:40:00 -04:00