feat(r0.10): apps/api — auth fermée par défaut, matrice en base, démo-login ADR-002, seed

- packages/shared : rôles/catégories, schémas Zod, contrat d'API ;
  pnpm contract → docs/openapi.json committée (règle d'or ADR-001)
- apps/api : NestJS 11 + Prisma 6, migration r0_identity (Role/Permission/User) ;
  guard JWT global + @Public() ; PermissionsGuard (@RequirePermission,
  matrice relue en base, cache 60 s) ; FileStorage (seul import MinIO) ; /health
- démo-login ADR-002 : module conditionnel DEMO_MODE (404 sinon, testé e2e),
  double verrou production, refus des comptes isDemo=false
- seed idempotent : 7 rôles, matrice complète (70 lignes), 7 comptes démo
- 19 tests Jest (unit + e2e) ; smoke test sur build de prod

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
pr-daaif
2026-07-15 21:55:04 +01:00
parent ddc9dc52b5
commit 8adb561b63
62 changed files with 8509 additions and 2 deletions

24
package.json Normal file
View File

@@ -0,0 +1,24 @@
{
"name": "siop2",
"version": "0.1.0",
"private": true,
"description": "SIOP V2 — GMAO ascenseurs (produit + playbook)",
"packageManager": "pnpm@11.10.0",
"engines": {
"node": ">=24"
},
"scripts": {
"dev": "turbo dev",
"build": "turbo build",
"lint": "turbo lint",
"typecheck": "turbo typecheck",
"test": "turbo test",
"contract": "pnpm --filter @siop/shared contract",
"infra:up": "docker compose -f infra/docker-compose.yml up -d",
"infra:down": "docker compose -f infra/docker-compose.yml down",
"infra:reset": "docker compose -f infra/docker-compose.yml down -v"
},
"devDependencies": {
"turbo": "^2.5.0"
}
}