feat(F-141): completed feature
This commit is contained in:
42
work/artifacts/F-141/architect.md
Normal file
42
work/artifacts/F-141/architect.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# F-141 — Arquitectura del fix de build Next.js
|
||||
|
||||
## Diagnóstico
|
||||
|
||||
Hay tres aplicaciones Next independientes en el monorepo:
|
||||
|
||||
- `project/apps/admin` — panel admin.
|
||||
- `project/frontend` — customer frontend, con `/categories` como Server Component async.
|
||||
- `project/storefront` — storefront SEO.
|
||||
|
||||
`project/frontend` no tenía `turbopack.root` ni `outputFileTracingRoot`. Además, `/categories` declara ISR (`revalidate = 3600`) y ejecuta `fetchCategories()` durante el prerender. Cuando `NEXT_PUBLIC_API_URL` apunta a `192.168.18.93:3000` y el backend no está levantado, el build falla con `ECONNREFUSED`.
|
||||
|
||||
El error posterior que intenta leer:
|
||||
|
||||
```text
|
||||
project/frontend/.next/prerender-manifest.json
|
||||
```
|
||||
|
||||
es una consecuencia de que el build del frontend aborta antes de generar su manifest, no un archivo que deba copiarse desde otra aplicación.
|
||||
|
||||
## Diseño
|
||||
|
||||
1. Fijar la raíz de Turbopack a cada aplicación:
|
||||
- `project/frontend/next.config.ts`: `turbopack.root = frontendRoot`.
|
||||
- Mantener la configuración equivalente ya aplicada en admin y storefront.
|
||||
2. Fijar `outputFileTracingRoot` a la raíz de cada app para que Next no recorra el workspace ni confunda `.next` de otra aplicación.
|
||||
3. Convertir `/categories` a renderizado dinámico (`dynamic = 'force-dynamic'`) porque sus datos dependen del API vivo. Así el build no hace llamadas de negocio al backend; el fetch sucede cuando se atiende la petición.
|
||||
4. Mantener la fuente de verdad y el contrato API intactos. No introducir mocks, datos paralelos ni fallback de categorías vacío.
|
||||
|
||||
## No incluido
|
||||
|
||||
- No cambiar las URLs del API.
|
||||
- No ocultar errores de runtime.
|
||||
- No modificar `storefront` más allá de la configuración necesaria.
|
||||
- No transformar todos los reportes o dashboards; eso pertenece a F-142.
|
||||
|
||||
## Verificación
|
||||
|
||||
- `cd project/frontend && rm -rf .next && NEXT_PUBLIC_API_URL=http://192.168.18.93:3000 npm run build` debe terminar aunque el backend no esté disponible.
|
||||
- La salida no debe seleccionar `project/package-lock.json` ni mostrar el warning de lockfiles.
|
||||
- `project/frontend/.next/prerender-manifest.json` debe existir después del build.
|
||||
- Admin, backend y storefront no deben perder su build.
|
||||
Reference in New Issue
Block a user