Reportes Programados
Genera y entrega reportes PDF o Excel automáticamente cada día, semana o mes, por email o WhatsApp — con branding corporativo y historial de ejecuciones.
Reportes Programados
Los Reportes Programados son el mismo reporte que armás en Reportes, pero ejecutándose solo: cada lunes, cada día a las 8am, el primero del mes. Se generan en PDF o Excel, se envían por email o WhatsApp a la lista que definas y el historial de ejecuciones queda auditable.
Resumen ejecutivo
El cambio de juego: el reporte semanal de mantenimiento llega al buzón del gerente sin que nadie se acuerde de generarlo.
| Antes | Con reportes programados |
|---|---|
| Coordinador dedica 30 min los lunes a generar y enviar | 0 minutos — llega solo |
| Si el coordinador falta, el reporte no sale | El job corre igual |
| Cambio de branding = regenerar todos a mano | Cambia en un lugar, aplica a todos |
¿Para qué sirve?
- Reportes de mantenimiento recurrentes — semanal para gerencia, mensual para dirección.
- Facturas consolidadas para clientes de servicio de mantenimiento.
- Dashboards de KPIs que un supervisor imprime en las reuniones de lunes.
- Auditorías internas — snapshot mensual del estado de la planta para archivo compliance.
¿Cómo funciona?
flowchart LR
S[Cloud Scheduler<br/>cada 15 min] --> C{Hay reporte<br/>due?}
C -- sí --> G[Genera PDF/Excel<br/>con branding_id]
G --> D{canal}
D -- email --> E[Postmark SMTP]
D -- whatsapp --> W[Evolution API]
G --> H[Registrar<br/>ejecución]
C -- no --> W1[esperar]El job run-scheduled-reports (Cloud Scheduler cada 15 min) recorre la colección de reportes programados activos y evalúa si cada uno está due (según frecuencia + hora + día) y no corrió ya en ese período. Si sí, genera el archivo con la estructura definida, aplica el branding y lo entrega.
Cada ejecución deja registro en _scheduled_report_executions con:
- timestamp
- tamaño del archivo generado
- estado (ok / delivery_failed / generation_failed)
- destinatarios efectivos
- signed URL del PDF/Excel en GCS
Parámetros de configuración
| Campo | Valores | Significado |
|---|---|---|
name | string 1-200 | Nombre humano para identificar el reporte. |
frequency | daily / weekly / monthly | Cadencia de ejecución. |
format | pdf / excel | Formato del archivo generado. |
delivery_channel | email / whatsapp | Canal de entrega. |
recipients | lista de emails o teléfonos | Destinatarios. Al menos 1. |
email_account_id | ID de cuenta email activa | Requerido si delivery_channel=email. |
whatsapp_number_id | ID de número WhatsApp conectado | Requerido si delivery_channel=whatsapp. |
hour | 0-23 (UTC) | Hora del día en UTC. Un reporte con hour=13 llega a las 10am en México (UTC-3 en horario estándar). |
day_of_week | 0-6 (lunes=0) | Sólo si frequency=weekly. |
day_of_month | 1-28 | Sólo si frequency=monthly. Se limita a 28 para evitar problemas con febrero. |
branding_id | ID de branding guardado | Opcional. Si está, sobrescribe branding inline. |
enabled | bool | Pausa la programación sin borrar la config. |
report_template | dict con title + blocks | Estructura del reporte (ver Reportes). |
¿Cómo usarlo?
Crear un reporte programado
- Ir a Datos → Reportes Programados → Nuevo.
- Ponerle nombre ("Mantenimiento semanal — Planta Norte").
- Elegir la frecuencia (semanal, lunes a las 7am UTC = 4am CDMX).
- Elegir el canal de entrega y seleccionar la cuenta/numero (cuenta verificada de email o número WhatsApp conectado).
- Agregar los destinatarios (emails o teléfonos separados por coma).
- Seleccionar el branding guardado (o dejar vacío para usar el default).
- Definir la estructura del reporte — mismo editor de bloques que los reportes on-demand.
- Guardar y activar.
El próximo lunes a las 7am UTC el sistema genera el PDF y lo manda.
Ejecutar manualmente (sin esperar)
Durante el setup es útil probar la ejecución antes de activar:
- En el detalle del reporte programado, clic en Ejecutar ahora.
- El job se dispara inmediatamente. El PDF/Excel se genera y se entrega a los destinatarios listados.
- La ejecución queda registrada en el historial como
triggered_by=manual.
Esto no altera el calendario de la próxima ejecución automática.
Endpoints REST
POST /api/v1/scheduled-reports # crear
GET /api/v1/scheduled-reports # listar
GET /api/v1/scheduled-reports/{id} # detalle
PATCH /api/v1/scheduled-reports/{id} # actualizar
DELETE /api/v1/scheduled-reports/{id} # borrar
POST /api/v1/scheduled-reports/{id}/execute # ejecutar manualmente
GET /api/v1/scheduled-reports/{id}/executions # historial
GET /api/v1/scheduled-reports/{id}/executions/{exec_id} # ejecución específicaCasos de uso
1 · Reporte semanal de mantenimiento (planta manufacturera).
Frecuencia weekly, lunes 7am UTC (4am local). PDF con 8 bloques: header con logo de la planta, tabla de tareas de la semana pasada, tabla de alarmas críticas, KPIs (disponibilidad, MTTR, MTBF). Destinatarios: 3 emails del equipo de dirección. Llega antes de que empiecen la reunión de lunes, sin trabajo humano.
2 · Reporte mensual para cliente externo (proveedor de servicio).
Frecuencia monthly, día 5 a las 14:00 UTC. PDF con branding del cliente (logo + colores + footer "Confidencial"). Tabla de intervenciones del mes pasado con tiempos, técnico asignado y costo. El cliente recibe su reporte ejecutivo sin pedirlo. Se cobra el servicio el mismo día.
3 · Reporte diario de cumplimiento HACCP (food safety).
Frecuencia daily, 6am UTC. Canal WhatsApp al grupo de supervisores. PDF compacto con las lecturas del día anterior: temperaturas de cámaras frías, alarmas de rango fuera, acciones correctivas pendientes. Cumple la obligación documental sin que nadie tenga que acordarse.
Limitaciones y supuestos
- Resolución mínima de ejecución: 15 minutos. Un reporte con
hour=8puede dispararse entre 08:00 y 08:15 UTC. day_of_monthestá limitado a 1-28. No hay soporte para "último día del mes"; si necesitás eso, programá el día 28 con una nota en el reporte.- Si la cuenta de email o el número WhatsApp de entrega se desactiva, la ejecución falla silenciosa (queda en el historial como
delivery_failed). El reporte no se reintenta automáticamente — hay que re-ejecutar manualmente tras arreglar la conexión. - No hay ejecución condicional: el reporte se genera aunque no haya datos nuevos. Si querés ejecutar "solo si hay alarmas críticas este mes", eso es un agente de WhatsApp con una herramienta de generación de reportes, no un reporte programado.
- Los PDFs generados ocupan espacio en GCS. Los tenants con muchos reportes programados + muchas ejecuciones pueden acumular almacenamiento; la política de retención se configura per-tenant.
Beneficios clave
- Reportes recurrentes en 0 minutos humanos → liberás al coordinador de tareas repetitivas.
- Historial completo de ejecuciones para auditoría (qué se generó, cuándo, a quién, con qué tamaño).
- Branding corporativo aplicado consistente — cambia el logo en un lugar y todos los próximos reportes lo usan.
- Misma estructura de bloques que los reportes on-demand — no hay doble trabajo si ya tenías un template.
- Entrega confiable vía Postmark (email) o Evolution API (WhatsApp) — sin colas de salida que se saturen.
Reportes
Generación de reportes PDF y Excel con datos de la planta, branding corporativo y estructura configurable. Disponibles para descarga manual o entrega automática por agentes.
Conectar equipos industriales
Guia para conectar PLCs, sensores y sistemas SCADA a Rela-ai. Opciones segun el tipo de equipo y red del cliente.