feat(F-049): completed feature
This commit is contained in:
63
work/artifacts/F-049/implementer.md
Normal file
63
work/artifacts/F-049/implementer.md
Normal file
@@ -0,0 +1,63 @@
|
||||
# Implementer — F-049
|
||||
|
||||
## Summary
|
||||
|
||||
Se ha creado `project/scripts/monolith.sh` como punto único de operación dev/prod para backend, frontend, admin y storefront. Se ha ejecutado un redeploy productivo y se ha verificado la disponibilidad de los cuatro servicios tanto por localhost como por la IP LAN.
|
||||
|
||||
## Implemented
|
||||
|
||||
### Scripts and configuration
|
||||
|
||||
- `project/scripts/monolith.sh` administra los servicios por PID file con PIDs en `project/.runtime/<mode>/<service>.pid` y logs en `project/.runtime/<mode>/<service>.log` (ambos ignorados por git).
|
||||
- Comandos soportados: `start`, `restart`, `status`, `stop`, `logs`, `urls`. Modos: `dev` y `prod`.
|
||||
- En dev: instala con `npm install`, levanta PostgreSQL/Redis, aplica migraciones y arranca cada servicio con `next dev` o `tsx watch` enlazado a `0.0.0.0`.
|
||||
- En prod: `npm ci`, migraciones, builds completos y arranque con `next start`/`node dist/.../server.js` en `0.0.0.0`.
|
||||
- El script detecta la IP LAN desde la ruta por defecto y la imprime, con override vía `LAN_IP`.
|
||||
- El script no utiliza `pkill`; envía señales únicamente a los PIDs registrados y, si un puerto está ocupado por un proceso ajeno, aborta mostrando el PID.
|
||||
- `project/package.json` añadió `tsx` como devDependency y el script `dev` para `tsx watch`; los builds siguen con `tsc -p tsconfig.build.json`.
|
||||
- `project/.gitignore` ignora el runtime efímero `.runtime/`.
|
||||
|
||||
### Documentación
|
||||
|
||||
- `docs/HOWTO-monolith.md` cubre requisitos, dev, prod, acceso LAN, infraestructura, validación, troubleshooting y overrides de puertos.
|
||||
- Tabla de servicios, URLs LAN, comandos `start/restart/status/stop/logs/urls`, `LAN_IP` para forzar IP y notas de firewall.
|
||||
|
||||
### Redespliegue productivo
|
||||
|
||||
- Migraciones aplicadas sin cambios pendientes.
|
||||
- Builds: backend TypeScript, admin Next (24 rutas), frontend principal Next (29 rutas), storefront SEO Next (6 rutas) — todos verdes.
|
||||
- Servicios reiniciados y escuchando en sus puertos. Health y HTTP 200 desde el host y desde la IP LAN.
|
||||
|
||||
## Evidence
|
||||
|
||||
### Status y procesos gestionados
|
||||
|
||||
```text
|
||||
SERVICE PID PROCESS HTTP URL
|
||||
backend 43396 running 200 http://192.168.18.93:3000/health
|
||||
frontend 43418 running 200 http://192.168.18.93:3003/
|
||||
admin 43438 running 200 http://192.168.18.93:3004/
|
||||
storefront 43482 running 200 http://192.168.18.93:3005/
|
||||
```
|
||||
|
||||
### Smoke LAN
|
||||
|
||||
```text
|
||||
http://192.168.18.93:3000/health 200
|
||||
http://192.168.18.93:3000/docs 200
|
||||
http://192.168.18.93:3003/ 200
|
||||
http://192.168.18.93:3004/ 200
|
||||
http://192.168.18.93:3005/ 200
|
||||
```
|
||||
|
||||
### Quality gates
|
||||
|
||||
- `npm run typecheck` (backend): PASS.
|
||||
- `npm run lint:boundaries`: PASS — 237 files checked.
|
||||
- `./scripts/verify.sh`: PASS — backlog 117 features y runtime consistente.
|
||||
- `git diff --check`: PASS.
|
||||
|
||||
## Known non-blocking warnings
|
||||
|
||||
- El build de `frontend` registra durante SSG que dos `fetch` `no-store` hacen la home dinámica. Es esperado y no falla la compilación.
|
||||
- El admin inicia en producción con `COOKIE_SECURE=false` para HTTP en LAN de confianza; en producción pública debe usarse HTTPS y `COOKIE_SECURE=true` detrás de un reverse proxy.
|
||||
Reference in New Issue
Block a user