Ir al contenido principal

🧠 Sistema de asignación de plazas de Parking en Hybo

Asigna tus aparcamientos de forma justa y premia el buen uso.

Actualizado hace más de 3 semanas

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. A continuación, te explicamos cómo funciona, qué algoritmos incluye y cómo se configuran.

🧩 Tipos de algoritmo y su funcionamiento

1. 📊 Asignación por prioridad

🔧 Cómo funciona

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

⚠️ Importante: La asignación automática solo se aplica si existen más prereservas que plazas disponibles para un día concreto. En caso contrario, las prereservas se confirman automáticamente en estado Reservado.


2. 🎲 Asignación por sorteo semanal

Otra funcionalidad disponible es el algoritmo de sorteo aleatorio semanal, diseñado para asegurar una distribución equitativa de las plazas de parking cuando la demanda supera la disponibilidad.

🎯 ¿Qué hace este algoritmo?

Permite definir un día de la semana en el que se ejecuta automáticamente un sorteo aleatorio entre las prereservas acumuladas durante la semana. Este proceso puede incluir coches, motocicletas y bicicletas.

⚙️ Configuración

Esta función se activa por sede. Para configurarla:

  1. Selecciona la sede correspondiente.

  2. Accede a la configuración de la sede.

  3. Entra en el módulo de Parking.

  4. Dirígete a la sección "Algoritmo de asignación".

  5. Habilita la opción "Algoritmo semanal por sorteo aleatorio".

  6. Elige el día en que se realizará el sorteo (por ejemplo, jueves).

  7. Selecciona los tipos de vehículo a incluir en la asignación aleatoria:

    • 🚗 Coche

    • 🏍️ Motocicleta

    • 🚲 Bicicleta

📌 Estados de las reservas

Las reservas pueden encontrarse en tres estados:

  1. Solicitado / Prereserva: La reserva ha sido solicitada, pero aún no se ha asignado plaza.

  2. Reservado: La plaza ha sido asignada satisfactoriamente.

  3. Rechazado: No se asignó plaza en el sorteo y no hay disponibilidad para la fecha solicitada.

💡 Nota: Una prereserva que permanece en estado “Solicitado” no se considera rechazada mientras exista la posibilidad de asignarle una plaza.
Si algún usuario cancela su reserva, la plaza se libera y el algoritmo se ejecuta nuevamente para reasignarla entre las prereservas pendientes.

3. 🗓️ Asignacion quincenal

La asignación de plazas mediante el algoritmo se realiza de forma quincenal, con ejecuciones programadas para los días 1 y 15 de cada mes.

🛠️ Configuración previa

Desde el equipo de soporte, se deberá configurar la cantidad de días de antelación habilitados para que los usuarios puedan solicitar plaza en el sorteo. Estos días definen el período durante el cual los usuarios pueden enviar sus peticiones.

⚙️ Ejecución del algoritmo

Una vez finalizado el período de solicitud, el algoritmo se ejecuta al día siguiente.
Durante esta ejecución:

  • Se procesan las solicitudes realizadas dentro del plazo.

  • Se asignan las plazas disponibles según las reglas configuradas.

  • Ya no se podrán hacer solicitudes para días futuros de esa quincena.

Finalizado el sorteo, el sistema solo permitirá reservas para el día actual, siempre y cuando queden plazas libres disponibles para asignación inmediata (“en caliente”).

Desde la página de administradores, es posible activar la opción para que el algoritmo tenga en cuenta la preferencia de tipo de plaza configurada por cada usuario al momento de realizar la asignación.

⚙️ Configuraciones desde la página de administrador

Desde la página de administradores tendremos una nueva opción de "Preferencia de plaza". En donde elegiremos los tipos de plaza posibles y les asignaremos una prioridad. Esta prioridad hará que la asginación de las plazas comience con la categoría de mayor prioridad.

En la configuración del módulo de parking, dentro de las configuraciones de la sede, tendremos la opción para activar la preferencia por tipo de plaza.

Si queremos usar esta preferencia, debemos crear los tipos de plazas, como mostramos en la primea imágen, y luego de crearlos debemos asignar los tipos de plazas a cada plaza. Entrando al detalle de una plaza podremos asignarle un tipo de plaza.

🗓️ 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:

🆕 Nuevos campos

  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.

🧩Tipos de algoritmo y descripcion funcional

1. 📊 Asignación Tradicional Priorizada

¿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

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

  • 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.

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

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

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

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

Notificaciones

  • A los usuarios con reserva asignada.

  • A los usuarios rechazados por falta de plazas 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.

2. 🎲 Sorteo Semanal Aleatorio (Lottery)

¿Cuándo se ejecuta?

  • Día de la semana configurado (isLotteryDay).

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

Funcionamiento

  • Obtiene solicitudes de reserva del toda la semana siguiente.

  • Asigna plazas de forma aleatoria simple, sin considerar prioridad de empleado o zona.

  • Agrupa reservas por turnos (mañana, tarde, día completo).

  • Rechaza reservas que exceden el número de plazas.

  • Elimina reservas cedidas del día anterior si corresponde.

Notificaciones

  • A los usuarios con reserva asignada.

  • A los usuarios rechazados por falta de plazas.

  • A los usuarios que liberaron su plaza, si se reasigna.

Reportes

  • Puede generar y enviar informe tras la asignación, según configuración.

3. 🗓️ Sorteo Quincenal con Preferencia por Tipo de Plaza (Lottery Fortnightly)

¿Cuándo se ejecuta?

  • Primer día después del período de petición, respetando fines de semana.

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

Funcionamiento

  • Ejecuta solicitudes mediante peticiones HTTP diarias a LotteryFortnightlyHttpTrigger.

  • Asigna plazas aleatoriamente, considerando:

    • Preferencia por tipo de plaza (SidesTypeToggle), si está configurado.

    • Solo se asignan plazas compatibles con la preferencia del usuario, si está configurado.

    • Si no hay plaza compatible, la solicitud se rechaza.

    • Si no está configurado, es un sorteo aleatorio como el anterior.

  • Elimina reservas cedidas antes de la asignación.

  • El 15 y el 1 no cuentan como dia de anticipado

  • Si no encuentra disponibilidad en el orden de prioridad 1 para asignar la plaza va al siguiente orden de prioridad (tipo de plaza).

Notificaciones

  • A los usuarios con reserva asignada.

  • A los usuarios rechazados por falta de plazas o incompatibilidad de tipo de plaza.

  • A los usuarios que liberaron su plaza, si se reasigna.

Reportes

  • Puede generar informe al finalizar el proceso quincenal.

🚨 Complementos Funcionales Comunes

Penalizaciones e Infracciones

✔️ Los usuarios que no realizan el check-in de su reserva pueden ser penalizados automáticamente si la oficina tiene activada la opción penaltiesEnabled.
✔️ Alternativamente, se puede aplicar el sistema de infracciones (infrigmentsEnabled) que sigue una progresión:

  • Primera infracción: Advertencia informativa.

  • Segunda infracción: Penalización temporal según configuración.

  • Tercera infracción: Penalización más severa.
    ✔️ Las penalizaciones bloquean al usuario en futuros sorteos o asignaciones.
    ✔️ Los usuarios son notificados por email de las penalizaciones o infracciones en su idioma.
    ✔️ La penalización puede expirar tras un tiempo sin reincidencias.

Reportes Automáticos

✔️ El sistema puede generar informes diarios con las reservas asignadas.
✔️ Los reportes se envían en formato CSV, incluyendo:

  • Usuario, tipo de empleado, fecha, zona, plaza, vehículo, turno, estado, origen de la reserva.
    ✔️ Los reportes se pueden configurar para:

  • Enviarse siempre, en horario concreto (ParkingTodayNotificationsReportsTime).

  • Solo tras la ejecución de los algoritmos, si sendAfterAlgorithmExecutionEnabled está activo.
    ✔️ Se envían a emails predefinidos por oficina y a los administradores internos de Hybo.

⚙️ Configuraciones Disponibles por Oficina y Algoritmo

Configuración

Descripción

Aplica a

enabled

Activa o desactiva el sistema de pre-reservas.

Todos

penaltiesEnabled

Activa penalizaciones automáticas por no check-in.

Tradicional

infrigmentsEnabled

Activa el sistema de infracciones progresivas.

Tradicional

hideZone

Considera la zona elegida por el usuario al asignar plaza.

Tradicional

employeeTypeToggle

Prioriza la asignación por tipo de empleado.

Tradicional

zoneTypeToggle

Prioriza asignación por tipo de zona y vehículo eléctrico.

Tradicional

lendEnabled

Notifica al usuario que liberó su plaza si esta es reasignada.

Todos

sendAfterAlgorithmExecutionEnabled

Envía informe automático tras ejecutar el algoritmo.

Todos

blockAfterAlgorithmExecutionEnabled

Bloquea nuevas asignaciones tras ejecutar el algoritmo.

Todos

hourPreBookings

Hora diaria de ejecución del algoritmo tradicional.

Tradicional

isLottery

Activa el sorteo semanal aleatorio.

Lottery

isLotteryDay

Día de la semana en que se ejecuta el sorteo semanal.

Lottery

isLotteryFortnightly

Activa el sorteo quincenal por tipo de plaza.

Lottery 15 días

daysToRequestFortnightly

Días de antelación para solicitar plaza en el sorteo quincenal.

Lottery 15 días

sideTypeToggle

Considera el tipo de plaza solicitado en el sorteo quincenal.

Lottery 15 días

previousBookingsInitialDate

Fecha inicial desde la cual se analizan reservas anteriores.

Tradicional

weeksToLookBack

Cantidad de semanas hacia atrás para contar reservas previas y definir prioridades.

Tradicional

ParkingTodayNotificationsReportsTime

Horarios concretos para el envío automático de reportes diarios.

Todos

EnableParkingTodayNotifications

Activa el envío de reportes diarios de reservas.

Todos

NotifyFirstInfraction

Notifica por email la primera infracción cometida.

Tradicional

💡 Este sistema flexible y configurable garantiza:

  • Asignación justa y priorizada en escenarios estándar.

  • Sorteos aleatorios transparentes para fomentar la equidad.

  • Penalización efectiva de incumplimientos.

  • Notificación y trazabilidad completa.

  • Compatibilidad con múltiples casuísticas y tipos de usuarios.

  • Configuraciones adaptables por oficina según necesidades concretas.

    Para más información, contáctanos en 📧 [email protected].

¿Ha quedado contestada tu pregunta?