chore(seed): rendre seed:demo utilisable en prod
All checks were successful
Build & Deploy API / build-and-deploy (push) Successful in 58s

- Dockerfile.api : copie `assets/test-invoices/` dans l'image (les 27
  PDFs servent au seed démo, ~80KB, négligeable).
- factories.ts : ajout d'un 3e candidat de chemin pour couvrir le
  contexte prod où la commande tourne depuis `/app/apps/api/build`.

Permet de peupler une org démo en prod via :
  kubectl -n rubis exec -it deploy/rubis-api -- \\
    sh -c 'cd /app/apps/api/build && node ace.js seed:demo \\
      --email <user> --reset --org-name="<nom>"'

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
ordinarthur 2026-05-07 12:41:15 +02:00
parent 68ed8f2ec6
commit 040e787ee5
2 changed files with 8 additions and 2 deletions

View File

@ -43,6 +43,9 @@ RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store \
FROM deps AS build FROM deps AS build
COPY packages/shared ./packages/shared COPY packages/shared ./packages/shared
COPY apps/api ./apps/api COPY apps/api ./apps/api
# Inclus les PDFs de démo pour le command `seed:demo` (lancé manuellement
# en prod via `kubectl exec`). 27 fichiers, ~80KB total — négligeable.
COPY assets ./assets
RUN cd apps/api && pnpm exec tsx ace.js build --ignore-ts-errors RUN cd apps/api && pnpm exec tsx ace.js build --ignore-ts-errors
# Prune devDeps (les workspace symlinks restent). # Prune devDeps (les workspace symlinks restent).

View File

@ -414,12 +414,15 @@ async function seedSyntheticActionable(
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
/** /**
* Localise le dossier `assets/test-invoices` à la racine du repo. Le command * Localise le dossier `assets/test-invoices`. La résolution couvre 3 contextes :
* tourne depuis `apps/api/`, donc on remonte de 2 niveaux. * - dev local : cwd = `apps/api/` `../../assets/test-invoices`
* - prod (init) : cwd = `/app/apps/api` `../../assets/test-invoices`
* - prod (build) : cwd = `/app/apps/api/build` `../../../assets/test-invoices`
*/ */
function resolveTestInvoicesDir(): string | null { function resolveTestInvoicesDir(): string | null {
const candidates = [ const candidates = [
join(process.cwd(), '..', '..', 'assets', 'test-invoices'), join(process.cwd(), '..', '..', 'assets', 'test-invoices'),
join(process.cwd(), '..', '..', '..', 'assets', 'test-invoices'),
join(process.cwd(), 'assets', 'test-invoices'), join(process.cwd(), 'assets', 'test-invoices'),
] ]
for (const c of candidates) { for (const c of candidates) {