Rela AIRela AI Docs
Mantenimiento

Programacion y Reportes

Configura reportes programados de mantenimiento, integra con Cloud Scheduler y gestiona pausas de planes con registro de auditoria.

¿Para qué sirve?

  • Distribuir órdenes entre técnicos según capacidad y ubicación.
  • Respetar ventanas de mantenimiento de producción.
  • Minimizar desplazamientos entre plantas o zonas.

¿Cómo funciona?

El scheduler resuelve un problema de asignación considerando skill del técnico, ubicación del activo, ventanas autorizadas y SLAs pendientes. El supervisor puede forzar manualmente.

Reportes programados

Puedes configurar reportes automáticos que se generan y entregan periodicamente con información de tus planes de mantenimiento.

Crear un reporte programado

  1. Ve a Mantenimiento > Reportes Programados.
  2. Haz clic en Nuevo Reporte.
  3. Configura los parametros:
CampoRequeridoDescripción
NombreSiNombre descriptivo del reporte (max 200 caracteres)
FrecuenciaSidaily, weekly o monthly
FormatoNoPDF (default) o Excel
Canal de entregaNoemail (default) o whatsapp
DestinatariosNoLista de emails o numeros de telefono
HoraNoHora UTC de ejecución (0-23, default: 8)
Dia de la semanaNoSolo para frecuencia weekly (0=lunes a 6=domingo)
Dia del mesNoSolo para frecuencia monthly (1-28)
HabilitadoNoActiva o desactiva el reporte

Frecuencias disponibles

FrecuenciaEjecución
dailyTodos los dias a la hora configurada
weeklyEl dia de la semana configurado a la hora configurada
monthlyEl dia del mes configurado a la hora configurada
La hora de ejecución esta en UTC. Ajusta segun tu zona horaria local.

Presets de branding

Los reportes programados pueden usar un preset de branding guardado para mantener una identidad visual consistente:

Campo del brandingDescripción
company_nameNombre de la empresa en el encabezado
logo_urlURL del logo (PNG/JPG)
header_linesLineas adicionales en el encabezado (division, telefono, etc.)
header_bg_colorColor de fondo del encabezado (hex, ej: #003366)
footer_textTexto del pie de pagina
accent_colorColor de acento para tablas y elementos destacados
font_familyFamilia de fuente: Courier, Helvetica o Times

Para vincular un branding a un reporte programado, usa el campo branding_id:

{
  "name": "Reporte Semanal de Mantenimiento",
  "frequency": "weekly",
  "format": "pdf",
  "branding_id": "branding_abc123",
  "day_of_week": 0,
  "hour": 8
}
El branding se resuelve en cada ejecución del reporte. Si actualizas el preset de branding, los reportes futuros reflejaran los cambios automáticamente.

Integración con Cloud Scheduler

Los reportes programados se ejecutan a traves de un endpoint interno invocado por Google Cloud Scheduler:

POST /internal/run-scheduled-reports

Flujo de ejecución

  1. Cloud Scheduler invoca el endpoint a intervalos regulares.
  2. El sistema revisa todos los reportes habilitados de todos los tenants.
  3. Para cada reporte, verifica si es el momento de ejecutarlo segun su frecuencia y hora configurada.
  4. Genera el reporte en el formato especificado (PDF o Excel).
  5. Entrega el reporte al canal configurado (email o WhatsApp).
  6. Actualiza last_run_at y calcula next_run_at.

Seguridad del endpoint

El endpoint interno esta protegido por:

  • HMAC Secret — El header X-Scheduler-Secret debe coincidir con el secreto configurado.
  • Sin JWT — No requiere autenticación de usuario, solo el secreto del scheduler.
El endpoint interno no es accesible para usuarios finales. Solo debe ser invocado por Cloud Scheduler con el secreto correcto.

Pausar y reanudar planes

Puedes pausar temporalmente un plan de mantenimiento sin eliminarlo. La pausa deshabilita la ejecución automatica y registra la acción en el trail de auditoria.

Pausar un plan

  1. Selecciona el plan desde Mantenimiento > Planes.
  2. Haz clic en Pausar.
  3. Opcionalmente, ingresa un motivo (max 500 caracteres).

Al pausar un plan:

AcciónDetalle
paused se establece en trueMarca el plan como pausado
enabled se establece en falsePreviene la ejecución automatica
paused_at se registraTimestamp de cuando se pauso
paused_by se registraID del usuario que pauso
pause_reason se almacenaMotivo opcional proporcionado
Entrada de auditoria creadaSe registra la acción "pause" con el motivo

Reanudar un plan

  1. Selecciona el plan pausado.
  2. Haz clic en Reanudar.

Al reanudar un plan:

AcciónDetalle
paused se establece en falseDesmarca la pausa
enabled se establece en trueReactiva la ejecución automatica
next_due_at se recalculaLa proxima ejecución se calcula desde ahora, no desde la fecha original
Campos de pausa se limpianpaused_at, paused_by, pause_reason se eliminan
Entrada de auditoria creadaSe registra la acción "resume"
Al reanudar un plan, la proxima fecha de ejecución se recalcula desde el momento actual. El tiempo que el plan estuvo pausado no cuenta como tiempo transcurrido.

Trail de auditoria

Todas las acciones de pausa y reanudacion quedan registradas en el trail de auditoria inmutable:

{
  "action": "pause",
  "resource_type": "maintenance_plan",
  "resource_id": "plan_abc123",
  "actor": "user_xyz",
  "actor_type": "user",
  "details": { "reason": "Equipo en reparacion mayor" },
  "timestamp": "2026-03-25T10:30:00Z"
}

Esto permite rastrear quien pauso o reanudo un plan, cuando y por que.

Proteccion de idempotencia

El sistema incluye multiples mecanismos para garantizar que los planes no se ejecuten de forma duplicada:

MecanismoDescripción
Claim atomicoAntes de ejecutar un plan, avanza next_due_at al futuro atomicamente. Si otra instancia ya lo reclamo, se salta
Rollback en falloSi la ejecución falla, se revierte next_due_at al valor original para reintentar en el proximo ciclo
Semaforo de concurrenciaMaximo 5 tenants procesados en paralelo para evitar sobrecarga
HMAC del schedulerEl endpoint interno solo acepta requests con el secreto correcto
En entornos con multiples instancias del servicio, el claim atomico garantiza que cada plan se ejecute exactamente una vez por ciclo.

Ejecución manual de reportes

Ademas de la ejecución automatica, puedes generar cualquier reporte programado inmediatamente:

  1. Ve a Mantenimiento > Reportes Programados.
  2. Selecciona el reporte.
  3. Haz clic en Ejecutar Ahora.

La ejecución manual actualiza last_run_at pero no modifica next_run_at. El reporte se entrega inmediatamente al canal configurado.

Beneficios clave

  • Asignación optimizada por skill y ubicación.
  • Respeta ventanas de producción automáticamente.
  • Minimiza desplazamientos — menos tiempo muerto.
  • Forzado manual para casos excepcionales.
  • Visibilidad previa del plan de la semana.

En esta página