Files
mercadodevida/work/artifacts/F-141/implementer.md
2026-08-21 22:02:01 +02:00

2.1 KiB

F-141 — Implementer evidence

Cambios realizados

  • project/frontend/next.config.ts
    • Añadidos turbopack.root y outputFileTracingRoot, ambos fijados a frontendRoot.
    • El frontend ya no hereda la raíz de workspace de project/package-lock.json ni intenta mezclar el .next de frontend con otra aplicación.
  • Rutas del customer frontend que consultan catálogo/CMS en servidor:
    • src/app/page.tsx
    • src/app/categories/page.tsx
    • src/app/categories/[slug]/page.tsx
    • src/app/brands/page.tsx
    • src/app/brands/[slug]/page.tsx
    • src/app/products/page.tsx
    • src/app/products/[slug]/page.tsx
    • src/app/admin/products/page.tsx
    • Se cambió ISR estático (revalidate = 3600) por dynamic = 'force-dynamic' donde los datos son obligatorios.
    • /search ya era dinámico y no requirió cambios.

Motivo técnico

/categories ejecutaba fetchCategories() durante el prerender estático. Con NEXT_PUBLIC_API_URL=http://192.168.18.93:3000 y backend apagado, Next abortaba el build con ECONNREFUSED. Convertir las páginas dependientes de API en dinámicas mantiene la fuente de verdad en el backend y traslada el fetch al request runtime; no añade mocks ni datos paralelos.

El error posterior de frontend/.next/prerender-manifest.json era consecuencia del build abortado antes de escribir el manifest. Tras el build correcto el archivo vuelve a existir.

Verificación

cd project/frontend
rm -rf .next
NEXT_PUBLIC_API_URL=http://192.168.18.93:3000 npm run build  ✅

Resultado frontend:

  • sin warning de múltiples lockfiles;
  • sin ECONNREFUSED;
  • sin error de prerender /categories ni /brands;
  • TypeScript correcto;
  • project/frontend/.next/prerender-manifest.json presente;
  • rutas de catálogo aparecen como ƒ (server-rendered on demand).

También verificado:

project/apps/admin: npm run build       ✅
project/storefront: npm run build       ✅
project/frontend: npx tsc --noEmit     ✅
./scripts/verify.sh                     ✅

No se modificaron contratos API ni el backend. La aplicación sigue obteniendo ventas/catálogo del sistema real en runtime.