📊 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.ts → metrics.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.dbvíatools/metrics-db.ts; estado JSON endata/. - 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.