← Volver al catálogo

🎩 Director General

Archivo: agentes/supervisores/director.ts · Plist: com.rifai.director · Horario: cada 1 h (StartInterval 3600s)

Qué hace

Es el supervisor de los supervisores. Cada hora lee los JSON de estado que dejan los ~10 jefes de departamento, calcula el estado global del sistema (verde/amarillo/rojo) y escala al CEO (bot CEOSEC) cuando un departamento entra en rojo. Además, dentro de su ventana horaria, envía el Daily Report ejecutivo (21:00) y el post-mortem semanal (domingo 22:00) al bot de reportes (adscode). Usa un cooldown para no spamear: no avisa más de una vez cada 3 h por el mismo departamento rojo.

Cómo funciona

1. Lee todos los status/*.json (uno por departamento) con readDepts().

2. Clasifica en rojos/amarillos/verdes y calcula el color global.

3. Lee el historial .director-history.json y, por cada departamento en rojo que sea nuevo o que lleve >3 h sin avisar, manda alerta urgente al CEOSEC (TELEGRAM_BOT_TOKEN) con los agentes afectados y su motivo.

4. Guarda el historial actualizado.

5. Si la hora Madrid es 21:xx → compone y envía el Daily Report al bot de reportes (lista de cada depto con su semáforo). Si es domingo 22:xx → envía el post-mortem semanal.

Datos/APIs

  • Sistema de archivos: lee status/*.json, lee/escribe status/.director-history.json.
  • Telegram (directo, legacy — no usa el router): fetch a la API. Vars .env: TELEGRAM_BOT_TOKEN (urgente/CEOSEC), TELEGRAM_REPORTS_TOKEN (adscode), TELEGRAM_CHAT_ID.
  • Zona horaria convertida a Europe/Madrid para decidir las ventanas de report.
  • Flag process.env.FORCE_REPORT (si '0' desactiva el daily report).

Cómo probarlo

cd /Users/user/rifai-agents && npx tsx agentes/supervisores/director.ts

Esperar: 🎩 Director General …, nº de departamentos con status, estado global y, si hay rojos nuevos, escalada a CEOSEC. El daily report solo sale en la ventana 21:00 Madrid.

Si se rompe / recuperar

launchctl unload ~/Library/LaunchAgents/com.rifai.director.plist && launchctl load ~/Library/LaunchAgents/com.rifai.director.plist

Logs: /Users/user/rifai-agents/logs/director.log. Si el director deja de correr, el watchdog lo detecta y avisa.

Cómo replicarlo

Lector de status/*.json, máquina de color global, historial con cooldown de 3 h para escaladas, conversión a horario Madrid para las ventanas de report y dos envíos Telegram (urgente CEOSEC + reportes adscode). Depende de que los supervisores hayan escrito sus JSON antes.