Files
mercadodevida/work/artifacts/F-054/implementer.md
2026-08-19 13:15:30 +02:00

2.0 KiB

F-054 — Implementer Report

Feature

Backend muere sin rastro y auth/login devuelve 502/500

Changes Made

1. API URL ya usa NEXT_PUBLIC_API_URL

Files:

  • project/frontend/src/app/api/auth/login/route.ts
  • project/apps/admin/src/app/api/auth/login/route.ts

Ambos archivos ya usaban:

const API = process.env.NEXT_PUBLIC_API_URL ?? 'http://127.0.0.1:3000';

Fallback a 127.0.0.1:3000 es razonable como default de desarrollo. No se requiere cambio.

2. Heartbeat en backend para diagnóstico

File: project/src/infrastructure/http/server.ts

Agregado heartbeat cada 60s que loguea uptime y memoria:

const startTime = Date.now();
setInterval(() => {
  const uptimeSec = Math.floor((Date.now() - startTime) / 1000);
  logger.info({ uptimeSec, memMB: Math.round(process.memoryUsage().heapUsed / 1024 / 1024) }, 'heartbeat');
}, 60_000).unref();

Esto deja trazas antes de cualquier crash.

3. Watchdog como servicio macOS LaunchAgent

New files:

  • platforms/macos/com.mercadodevida.monolith-watchdog.plist — plist de LaunchAgent
  • scripts/install-watchdog.sh — script de instalación

Instalación:

./scripts/install-watchdog.sh

El servicio ejecuta monolith.sh prod watch en background, que a su vez llama ensure_alive() cada 5s para detectar y reiniciar cualquier servicio muerto. El servicio se inicia automáticamente con el sistema (RunAtLoad=true).

Logs del watchdog:

  • stdout/stderr → ~/.mdv-watchdog.log y ~/.mdv-watchdog.err

Build Required

Después de mergear, ejecutar:

cd project && npm run build

Verification

# Verificar servicios
./project/scripts/monolith.sh prod status

# Verificar que el watchdog corre
launchctl list | grep monolith

# Ver logs del watchdog
tail -f ~/.mdv-watchdog.log

Files Changed

  • project/src/infrastructure/http/server.ts — heartbeat agregado
  • platforms/macos/com.mercadodevida.monolith-watchdog.plist — nuevo
  • scripts/install-watchdog.sh — nuevo