Notificaciones vía Telegram, pausa nocturna y unidades systemd
Reemplaza ntfy.sh por Telegram Bot API (preferencia del usuario, no reduce el costo — el costo real es de la API de Claude/Sonnet, no del canal). Texto plano sin parse_mode: el motivo que devuelve Claude es texto libre y puede traer caracteres que rompen el parser Markdown de Telegram. Token en TELEGRAM_BOT_TOKEN_FILE (dueño devops, no root-only -- el servicio corre como devops por el login de suscripción, mismo criterio ya aplicado a GITEA_TOKEN_FILE). Validado en vivo: entrega confirmada con el mismo código de notify_send(). Agrega pausa nocturna (ACTIVE_HOURS_START/END, default 06:00-23:00 hora local) para no acumular costo de API sin necesidad: el script chequea el horario ANTES de tocar kubectl/docker/curl o invocar claude -p, no solo antes de notificar. Nota documentada: esta ventana no se solapa con COMMERCE_BACKEND_WINDOW_* (00:00-06:00), por lo que medusa-deploy queda efectivamente inalcanzable para auto-restart en la práctica -- pendiente de decisión aparte. Agrega unidades systemd de usuario (lab-agent/systemd/*.service, *.timer) con límites de CPU/memoria: OnCalendar cada 15 min dentro del horario activo, corre como devops (systemctl --user), sin habilitar todavía -- requiere confirmación explícita tras ver el costo mensual estimado (~US$60-65, documentado en agente-monitoreo.md).
This commit is contained in:
1 parent
61a951f576
commit
c273056771
5 files changed
+131
-22
No files matched your search
+29
-4
@@ -118,6 +118,30 @@ Si no existe, el agente sigue funcionando pero pierde la señal de
|
||||
"runner atascado" vía API de Gitea Actions (solo detecta el contenedor
|
||||
caído/reiniciando).
|
||||
|
||||
**Notificaciones (Telegram, reemplaza a ntfy.sh desde 2026-08-26):**
|
||||
creá el bot con [@BotFather](https://t.me/BotFather) (`/newbot`) y
|
||||
obtené tu `chat_id` (mandale un mensaje al bot primero, después
|
||||
`https://api.telegram.org/bot<TOKEN>/getUpdates`). El token va en un
|
||||
archivo aparte, dueño `devops` — **no** root-only pese al patrón
|
||||
original: el servicio corre como `devops` (necesita su login de
|
||||
suscripción para `claude -p`), así que un archivo `root:root 600` le
|
||||
sería ilegible, mismo criterio ya aplicado a `GITEA_TOKEN_FILE`.
|
||||
|
||||
```bash
|
||||
mkdir -p "$(dirname "$TELEGRAM_BOT_TOKEN_FILE")"
|
||||
echo "<tu-token-de-botfather>" > "$TELEGRAM_BOT_TOKEN_FILE"
|
||||
chmod 600 "$TELEGRAM_BOT_TOKEN_FILE"
|
||||
# y en lab-agent.env: TELEGRAM_CHAT_ID=<tu-chat-id> (no es secreto)
|
||||
```
|
||||
|
||||
**Horario activo:** `ACTIVE_HOURS_START`/`ACTIVE_HOURS_END` (hora local,
|
||||
default `06:00`–`23:00`). Fuera de esa ventana el script sale antes de
|
||||
tocar kubectl/docker/curl o invocar `claude -p` — no gasta nada, no
|
||||
solo omite la notificación. **Ojo:** esta ventana no se solapa con
|
||||
`COMMERCE_BACKEND_WINDOW_*` (`00:00`–`06:00`) — mientras el agente está
|
||||
pausado, `medusa-deploy` nunca es elegible para auto-restart en la
|
||||
práctica. Ver `docs/arquitectura/agente-monitoreo.md`.
|
||||
|
||||
## Probar
|
||||
|
||||
```bash
|
||||
@@ -132,8 +156,9 @@ ejecuta de verdad (confirmado con `kubectl get events` y la anotación
|
||||
`restartedAt`), y una segunda corrida sobre el mismo recurso caído
|
||||
respeta el bloqueo (`notify_only`, sin reintento). Dos bugs reales se
|
||||
encontraron y corrigieron en esa prueba — ver el detalle en
|
||||
`docs/arquitectura/agente-monitoreo.md`.
|
||||
`docs/arquitectura/agente-monitoreo.md`. La notificación real se
|
||||
validó con ntfy.sh en esa prueba; el cambio a Telegram debe repetir
|
||||
al menos la validación de entrega antes de habilitar el timer.
|
||||
|
||||
**No actives el timer de systemd (Paso 4) todavía** — requiere tu
|
||||
confirmación explícita por separado, aunque la prueba end-to-end ya
|
||||
pasó.
|
||||
**No actives el timer de systemd todavía** — requiere tu confirmación
|
||||
explícita por separado, después de ver el costo mensual estimado.
|
||||
Reference in new issue
Block a user