feat(F-141): completed feature
This commit is contained in:
52
work/artifacts/F-141/implementer.md
Normal file
52
work/artifacts/F-141/implementer.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# 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
|
||||
|
||||
```text
|
||||
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:
|
||||
|
||||
```text
|
||||
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.
|
||||
Reference in New Issue
Block a user