← Volver al catálogo

📊 Daily Dashboard

Archivo: agentes/supervisores/daily-dashboard.ts · Plist: com.rifai.daily-dashboard (solo cargado en ~/Library/LaunchAgents, no versionado en cron/) · Horario: diario a las 21:00 (StartCalendarInterval Hour 21 Min 0) + RunAtLoad

Qué hace

A las 21:00 envía a Fernando (finanzas) el resumen del día con métricas REALES, no vanity: ingresos reales (paid+fulfilled), gasto Meta, ROAS real frente al ROAS engañoso de Meta (que infla por COD), top producto, COD pendiente, devoluciones y alertas accionables. Guarda el histórico para comparar contra la media de 7 días y para análisis de largo plazo.

Cómo funciona

1. Calcula la ventana del día (00:00–23:59) y consulta los pedidos de hoy en Shopify.

2. Por pedido clasifica paid / COD / fulfilled; suma revenue_total y revenue_real (solo paid+fulfilled); cuenta COD pendientes y devoluciones; acumula ventas por producto para sacar el top.

3. Consulta el gasto/impresiones/clicks de Meta Ads del día (Graph API insights).

4. Calcula roas_meta (total/gasto) y roas_real (real/gasto) y genera alertas: ROAS real <1, COD pendiente alto, <40% prepago, devoluciones, gasto >50€ con 0 ventas pagadas.

5. Persiste las métricas en data/daily-dashboard-state.json (90 días) y en SQLite (tools/metrics-db.tsmetrics.db).

6. Compara contra la media de los 7 días previos y renderiza el mensaje, que envía con event: 'finance_pl_daily' (→ solo Fernando) vía notify-router.

Datos/APIs

  • Shopify Admin API (/orders.json). Vars: SHOPIFY_STORE, SHOPIFY_ACCESS_TOKEN.
  • Meta Graph API (/<ad_account>/insights). Vars: META_ACCESS_TOKEN, META_AD_ACCOUNT_ID.
  • SQLite data/metrics.db vía tools/metrics-db.ts; estado JSON en data/.
  • Telegram vía tools/notify-router.ts (finance_pl_daily).

Cómo probarlo

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

Esperar: 📊 Daily Dashboard …, el bloque del dashboard renderizado en consola y ✅ Reportado a Fernando. Se ejecuta sin esperar a las 21:00 (no tiene guard horario en el código). Para evitar el envío real a Telegram, comenta la llamada notify durante pruebas.

Si se rompe / recuperar

launchctl unload ~/Library/LaunchAgents/com.rifai.daily-dashboard.plist && launchctl load ~/Library/LaunchAgents/com.rifai.daily-dashboard.plist

Logs: /Users/user/rifai-agents/logs/daily-dashboard.log.

Cómo replicarlo

Fetch de pedidos Shopify del día + clasificación paid/COD/fulfilled, fetch de insights Meta, cálculo de ROAS real vs Meta, motor de alertas, persistencia doble (JSON 90d + SQLite), comparativa 7d y envío con event: finance_pl_daily (routing a solo Fernando). Respeta la regla: finanzas NO copia a Sec.