📅 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_atreal 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.