Ir al contenido principal

🧠 Algoritmo diario

Actualizado hoy

Asigna tus aparcamientos de forma justa y premia el buen uso.
Hybo cuenta con un sistema avanzado para la asignación automática de plazas de parking, diseñado para ser justo, transparente y configurable según las necesidades de cada organización.

📊 Asignación por prioridad

🔧 Cómo funciona

Cuando el sistema debe asignar automáticamente una plaza, aplica las siguientes reglas de forma progresiva:

Prioridad por tipo de empleado

El sistema prioriza a los usuarios que tienen una categoría o tipo de empleado asignado.

  • Ejemplo: Si hay 10 solicitudes para una plaza y solo 5 usuarios tienen tipo de empleado definido, la asignación se realizará entre estos últimos aplicando, en caso de empate, las siguientes reglas.

Prioridad por tipo de zona y tipo de vehículo

Si un usuario tiene asignado un vehículo eléctrico, el sistema intentará asignarle primero una plaza en una zona con puntos de carga. Si no hay disponibilidad, se le asignará una plaza en otra zona.

Número de reservas anteriores

En caso de empate tras aplicar las reglas anteriores, la plaza se asignará al usuario con menor número de reservas previas.

Sorteo aleatorio

Si persiste el empate, la plaza se asignará mediante sorteo aleatorio entre los usuarios.


⚙️ Configuración

En la sección de administración del módulo de Parking, encontrarás dos selectores:

  • Prioridad por tipo de empleado.

  • Prioridad por tipo de zona.

Puedes activar uno, ambos o ninguno.

  • Si ambos están desactivados, el sistema realizará asignaciones de forma aleatoria.

  • Los usuarios sin categoría asignada recibirán plazas únicamente si quedan disponibles tras aplicar las prioridades anteriores.

🗓️ Análisis de fechas históricas

Para mejorar el análisis de datos y el comportamiento del algoritmo, se han incorporado dos nuevos campos de configuración en el módulo de Parking:

  1. Cantidad de semanas atrás
    Define cuántas semanas hacia atrás debe analizar el sistema.
    Ejemplo: Si introduces “4”, el sistema considerará los datos de las últimas 4 semanas para calcular las prioridades.

  2. Fecha de inicio
    Permite establecer desde qué día deben empezar a contarse las semanas hacia atrás.
    Si se deja en blanco, se tomará como referencia el inicio de la semana actual.

🔄 Lógica del algoritmo

  • Reinicio automático de fecha
    Una vez transcurrido el número de semanas configurado, el sistema reinicia automáticamente la fecha de inicio, actualizando el período de análisis.

  • Sin fecha de inicio configurada
    Si solo se define la cantidad de semanas y no se especifica una fecha, se tomará automáticamente el inicio de la semana actual como referencia. Esta fecha se guardará al ejecutar el algoritmo.


⏱️¿Cuándo se ejecuta?

Diariamente, a la hora configurada (hourPreBookings) en la oficina.

También de forma reactiva, cuando un usuario libera una plaza.

⚙️Funcionamiento

  1. Evalúa solicitudes de reserva en cola (ParkingQueueReservation).

  2. Reordena solicitudes en base a estos criterios por este orden:

    • Prioridad de tipo de empleado (si está activo).

    • Prioridad por tipo de zona y tipo de vehículo (si está activo).

    • Número de reservas previas (menos reservas, más prioridad).

    • Aleatorización final para romper empates.

  3. Considera zona elegida por el usuario si hideZone está desactivado.

  4. Asigna plazas respetando turnos (mañana, tarde, día completo).

  5. Penaliza usuarios que no han hecho check-in en días previos (si está activado).

  6. Rechaza solicitudes que exceden el número de plazas.

🔔Notificaciones

  • A los usuarios con reserva asignada.

  • A los usuarios rechazados por falta de plazas (sólo si esta configurado via soporte la variable "NotifyRejectedUsers") o penalización.

  • A los usuarios que liberaron una plaza, si se reasigna (modo "lend").

📊 Reportes

Puede generar y enviar un informe tras la ejecución, según configuración.

🔄 Mejora en la gestión de disponibilidad por zonas


Se ha implementado una mejora en el comportamiento del sistema al gestionar la disponibilidad de plazas en diferentes zonas.

Comportamiento anterior y problema detectado

Cuando se ejecutaba el algoritmo:

  • Si se agotaban las plazas en una zona, pero existía disponibilidad en otra, el sistema habilitaba el modo de reserva directa de forma general

Esto provocaba que:

  • Si un usuario intentaba reservar en una zona sin disponibilidad, el sistema mostrara un error, en lugar de permitir una pre-reserva

Nueva mejora implementada

Con esta mejora, el sistema ahora evalúa la disponibilidad de forma independiente por cada zona, permitiendo aplicar diferentes comportamientos según el estado de cada una.

  • Si una zona tiene disponibilidad → se permite reserva directa

  • Si una zona está completa → se permite pre-reserva

⚙️Ejecución en días laborables

Se ha incorporado una nueva configuración que permite definir en qué días se ejecuta el algoritmo de asignación diaria.

Funcionamiento

Esta opción permite controlar si el algoritmo debe ejecutarse considerando únicamente días laborables.

  • Desactivado (comportamiento actual):
    El algoritmo se ejecuta de domingo a jueves, asignando plazas para el día siguiente.
    Ejemplo: domingo → lunes.

  • Activado:
    El algoritmo se ejecuta de lunes a viernes, considerando únicamente días laborables.
    En este caso, las asignaciones se realizan de la siguiente forma:

    • Lunes → Martes

    • Martes → Miércoles

    • Miércoles → Jueves

    • Jueves → Viernes

    • Viernes → Lunes

Más información aca.

¿Ha quedado contestada tu pregunta?