feat(F-054): completed feature
This commit is contained in:
74
work/artifacts/F-054/implementer.md
Normal file
74
work/artifacts/F-054/implementer.md
Normal file
@@ -0,0 +1,74 @@
|
||||
# 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:
|
||||
```typescript
|
||||
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:
|
||||
```typescript
|
||||
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:**
|
||||
```bash
|
||||
./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:
|
||||
```bash
|
||||
cd project && npm run build
|
||||
```
|
||||
|
||||
## Verification
|
||||
|
||||
```bash
|
||||
# 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
|
||||
Reference in New Issue
Block a user