Files
mercadodevida/work/artifacts/F-049/implementer.md
2026-08-19 07:34:15 +02:00

3.2 KiB

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

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

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.