📅 El Programador (vista semanal multi-motor)

La sección Programador muestra en una sola pantalla qué corre, cuándo y cómo le fue — de todos tus motores a la vez.

Selector de motores

  • Chips con nombre + id y un color fijo por motor. Marca/desmarca qué motores entran en la vista; la elección se recuerda entre sesiones.
  • Un motor caído aparece en gris "sin conexión" — su última información queda atenuada.

Vista Semana

Grid días × horas (hoy resaltado, línea "ahora"):

  • Ejecuciones reales: verde correcta, rojo fallida, ámbar cancelada, azul en curso (con pulsación).
  • Ejecuciones proyectadas: bloques translúcidos calculados desde el cron de cada tarea, anclados al next_run_at real del motor — el DST lo resuelve el motor, no la app.
  • Solapamientos: las tareas que pisan el mismo hueco se reparten en carriles paralelos.
  • Clic en un bloque → detalle completo: motor, trigger (programada/manual/por cambios), duración, ficheros, bytes, error, y el log de esa ejecución bajo demanda.

Las tareas @onchange no tienen horario: aparecen marcadas como "por cambios" en la vista de lista.

Vista Lista

Una fila por tarea: cron humanizado («todos los días a las 03:00», «cada 30 min», «al detectar cambios»), próxima ejecución, última con icono, sparkline de las últimas 15 ejecuciones y % de éxito.

Resumen y filtros

Cabecera con tareas y motores en línea, previstas y resultados de las últimas 24 h y ejecuciones en curso. Filtro por estado (programadas, correctas, fallidas, en curso).

Sondeo

Los datos se refrescan cada ~45 s por motor (en paralelo, por local, LAN o túnel) — lo "en curso ahora" puede llevar un leve retardo.

Usa la vista semana para cazar huecos de carga: si 5 tareas caen a las 03:00 en el mismo servidor, espárcelas — tu línea y tu destino lo agradecerán.