diff --git a/docker-compose.yml b/docker-compose.yml index ddc7581..7ea74d7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: restart: unless-stopped environment: - NODE_ENV=production - - DATABASE_URL=mysql://budget_user:BudgetSI2027!@db:3306/budget_si + - DATABASE_URL=mysql://budget_user:BudgetSI2027!@itinova-budget-si-db:3306/budget_si - JWT_SECRET=${JWT_SECRET:-budget-si-recette-jwt-secret-2027} - VITE_APP_ID=${VITE_APP_ID:-} - OAUTH_SERVER_URL=${OAUTH_SERVER_URL:-} diff --git a/docs/salaires-securite.md b/docs/salaires-securite.md index be4d0e6..c95f661 100644 --- a/docs/salaires-securite.md +++ b/docs/salaires-securite.md @@ -35,3 +35,5 @@ La vérification visuelle administrateur de recette a confirmé la présence de Après le chargement des requêtes, le filtre de mai 2026 a affiché 18 bulletins indexés, un total brut mensuel et le statut partiel de la liasse, sans alerte de chiffrement. La divergence initiale correspond au rendu transitoire avant réception de la sonde de sécurité ; ce rendu doit être remplacé par un état de chargement neutre, jamais par une alerte de blocage. Depuis la page authentifiée de recette, le bouton **Voir la liasse** a ouvert le visualiseur PDF du navigateur sur la route protégée de consultation. Le parcours interface utilise uniquement cette route applicative ; il ne présente aucune URL de stockage au navigateur. + +Un diagnostic de recette a révélé qu'après une recréation Docker, l'alias réseau générique `db` pouvait résoudre vers une autre base présente sur le réseau partagé, provoquant un refus d'accès et empêchant temporairement toute connexion. La configuration utilise désormais le nom unique `itinova-budget-si-db`. Une sonde de régression vérifie ce point avant chaque déploiement. diff --git a/server/dockerCompose.test.ts b/server/dockerCompose.test.ts new file mode 100644 index 0000000..58f858e --- /dev/null +++ b/server/dockerCompose.test.ts @@ -0,0 +1,12 @@ +import { readFile } from "node:fs/promises"; +import { resolve } from "node:path"; +import { describe, expect, it } from "vitest"; + +describe("docker-compose de recette", () => { + it("utilise le nom unique du conteneur MySQL et évite l'alias générique partagé", async () => { + const compose = await readFile(resolve(process.cwd(), "docker-compose.yml"), "utf8"); + + expect(compose).toContain("DATABASE_URL=mysql://budget_user:BudgetSI2027!@itinova-budget-si-db:3306/budget_si"); + expect(compose).not.toContain("DATABASE_URL=mysql://budget_user:BudgetSI2027!@db:3306/budget_si"); + }); +}); diff --git a/todo.md b/todo.md index 9ab42e1..2fd4d5d 100644 --- a/todo.md +++ b/todo.md @@ -203,3 +203,4 @@ - [ ] Vérifier visuellement la page Salaires de recette dans une session administrateur : navigation, filtres, liste et statuts - [ ] Ouvrir une liasse depuis le bouton de l'interface de recette afin de valider le parcours utilisateur de consultation - [ ] Corriger l'alerte frontale indiquant à tort un chiffrement indisponible en recette +- [ ] Corriger l'accès à la base de recette empêchant la connexion administrateur après le dernier redéploiement