Timers y calendario laboral

Los timers de OnClock son conscientes del calendario laboral de tu país. Se pausan automáticamente los fines de semana y festivos, y solo cuentan horas hábiles. Nada de avisos los lunes porque la tarea «venció» el sábado.

Cómo funcionan

Cada etapa y cada tarea pueden tener un timer independiente:

  • Timer de etapa: tiempo total asignado a la etapa (suma de tareas o valor override del PMO).
  • Timer de tarea: tiempo asignado a la tarea concreta.
  • Empiezan al iniciar la etapa/tarea y descuentan segundos en tiempo real.
  • El backend usa Celery Beat para actualizar el estado cada minuto.

Calendario laboral

La empresa configura su calendario en Ajustes → Empresa → Calendario:

  • Días laborables: lunes–viernes por defecto. Puedes activar sábado o domingo.
  • Horario laboral: rango de horas (ej. 09:00–18:00). Los timers solo corren dentro de este rango.
  • Zona horaria: todas las fechas y horas se muestran en esta zona.
  • País: determina los festivos oficiales.
Override por proyecto
Cada proyecto puede decidir si respeta fines de semana y festivos, o si corre 24/7. Útil para proyectos de misión crítica con guardias. El override está en las ajustes del proyecto.

Festivos oficiales

OnClock consulta la API pública de Nager.Date para obtener los festivos oficiales del país. La lista se cachea durante un año en la tabla public_holidays_cache.

Soporta más de 100 países con sus festividades nacionales. Para España, por ejemplo, incluye:

  • Año Nuevo, Reyes, Día del Trabajador
  • Viernes Santo, Asunción, Día de la Hispanidad
  • Todos los Santos, Constitución, Inmaculada, Navidad

Festivos custom

Además de los oficiales, la empresa puede añadir festivos custom: días en los que la empresa no trabaja (vacaciones colectivas, día del fundador, cierre por inventario, etc.). En Ajustes → Empresa → Festivos custom añades fecha y descripción.

Pausa automática

El timer se pausa cuando el proyecto entra en una franja no laborable:

  • Viernes a las 18:00 → el timer se congela hasta el lunes a las 09:00.
  • Si el lunes es festivo, se extiende hasta el martes.
  • Si el horario laboral termina a las 18:00, el timer se congela a esa hora todos los días.

Durante la pausa, el timer no descuenta tiempo. Los plazos se extienden automáticamente. El PMO y los responsables ven el timer en «pausa» con un icono específico.

Para el planificador del agente
Cuando el agente planifica fechas para tareas nuevas, también respeta el calendario. Si le pides «crea una tarea que termine en 5 días», calcula 5 días hábiles, no 5 naturales.

Alertas

El agente envía alertas automáticas cuando:

  • El timer llega al 50% de su duración → aviso informativo al responsable.
  • Llega al 25% → aviso con sugerencia de pedir backlog si ve riesgo.
  • Llega al 0% (vencido) → alerta al PMO con el detalle del retraso.
  • El timer se queda parado (tarea sin movimiento) → sugerencia diaria de seguimiento.

Los canales de aviso respetan las preferencias del destinatario: chat, email, WhatsApp, Telegram.

Extensiones por backlog

Cuando un integrante pide más tiempo y el PMO aprueba (ver Flujo por correo), el sistema:

  1. Suma las horas aprobadas al total_seconds del timer.
  2. Suma las horas aprobadas al remaining_seconds del timer.
  3. Crea una tarea asociada con la duración solicitada.
  4. Extiende la duration_hours de la etapa.
  5. Si la etapa estaba cerrada, la reactiva.