Exploitation
Le backend embarque une surface de scripts complète pour le développement local, la CI et le déploiement. La commande la plus importante est pnpm db:verify, qui garantit le contrat schéma/types.
Scripts npm / pnpm
Section intitulée « Scripts npm / pnpm »| Script | Rôle |
|---|---|
pnpm lint |
ESLint 9 strict (@typescript-eslint/no-unsafe-*, no-floating-promises, etc.) |
pnpm build |
nest build / tsc vers dist/ |
pnpm test |
Tests unitaires Jest (src/**/*.spec.ts) avec test/kysely-stub.cjs |
pnpm test:e2e |
Suite e2e Jest (test/jest-e2e.json) |
pnpm db:gen |
Régénère src/db/generated.ts depuis PostgreSQL réel |
pnpm db:check |
Échoue si generated.ts est périmé |
pnpm db:verify |
Chaîne complète migration → generated.ts → tsc → tests |
pnpm db:smoke |
Exécute src/db/smoke.ts contre la base réelle |
pnpm db:slice |
Exécute toutes les tranches sur base réelle |
pnpm db:slice:<module> |
Exécute la tranche d’un module (core, client, admin, finances, facturation, market, pressing, restaurant, salle-fete, rh, audit, uploads) |
pnpm security:audit |
pnpm audit --prod |
db:verify
Section intitulée « db:verify »scripts/db-verify.mjs est le corps de la CI :
make migrate(oumake reset --fresh) dans../sim-databasepnpm db:gengit diff --exit-code -- src/db/generated.tspnpm exec tsc --noEmitpnpm testpnpm db:smokepnpm db:slice
Une PR de migration doit embarquer son diff generated.ts ; db:verify échoue s’il est périmé.
Dockerfile
Section intitulée « Dockerfile »- Étape de build
node:22-alpine - Étape runtime
node:22-slim pnpm@11.9.0avec--frozen-lockfile- Installe
postgresql-client-18pour les sauvegardes - Installe les bibliothèques Chromium desktop pour Puppeteer
- Lien symbolique Chrome vers
/opt/chrome-bin - Healthcheck :
wgetsur/api/v1/health/live
Compose local
Section intitulée « Compose local »docker-compose.local.yml lance le backend et Redis. PostgreSQL est attendu depuis ../sim-database sur host.docker.internal.
docker compose -f docker-compose.local.yml up -dCompose de développement
Section intitulée « Compose de développement »docker-compose.dev.yml cible le VPS (dev.sim.strife-cyber.org) derrière Traefik. Il comprend :
backendsurinternal+traefik-net- un service
workerpour cron et BullMQ sim-minio(renommé pour éviter les collisions DNS)- un Postgres externe mutualisé
Compose de production
Section intitulée « Compose de production »docker-compose.prod.yml comprend :
sim-backendetredisprod-networkettraefik-neten réseaux externes- du vrai S3 (pas de MinIO dans le stack)
- Redis avec
REDIS_PASSWORD
Défauts d’environnement
Section intitulée « Défauts d’environnement »src/config/db-defaults.ts est la source de vérité unique des défauts PostgreSQL :
export const DB_DEFAULTS = { host: '127.0.0.1', port: 5432, user: 'sim', password: 'admin', database: 'sim_db', poolMax: 20, poolIdleTimeoutMs: 30000, poolConnectionTimeoutMs: 5000, pgAppName: 'sim-backend',} as const;src/config/env.validation.ts valide .env avec Joi et exige conditionnellement les secrets en production.
Sauvegardes
Section intitulée « Sauvegardes »postgresql-client-18 est installé dans l’image Docker. jobs/sauvegarde-auto.job.ts lit sauvegardes.planification et déclenche SauvegardesService.declencher('AUTOMATIQUE') selon la planification. Il n’y a actuellement pas d’API publique pour les sauvegardes ; c’est de l’infrastructure uniquement.
Checklist de vérification
Section intitulée « Checklist de vérification »Avant de commiter tout changement backend :
pnpm lintpnpm buildpnpm testpnpm db:verifyAprès une migration sim-database :
pnpm db:gengit diff src/db/generated.tspnpm db:check