Índice
Break
(mensaje)BreakRule
(mensaje)BudgetRequirement
(mensaje)CoverageRequirement
(mensaje)CoverageRequirement.RoleRequirement
(mensaje)CoverageRequirement.SkillRequirement
(mensaje)DemandCoverageViolation
(mensaje)Employee
(mensaje)EmployeeDemand
(mensaje)EmployeeSchedule
(mensaje)EmployeeSchedule.ShiftWithEvents
(mensaje)EmployeeSchedule.ShiftWithEvents.Event
(mensaje)EventTemplate
(mensaje)HourlyContract
(mensaje)HourlyContract.OvertimePeriod
(mensaje)Priority
(enumeración)ResourceConstraint
(mensaje)SchedulingConstraint
(mensaje)Shift
(mensaje)ShiftAssignment
(mensaje)ShiftGenerationSolutionStatus
(enumeración)ShiftPreference
(mensaje)ShiftRequest
(mensaje)ShiftTemplate
(mensaje)SolutionStatus
(enumeración)SolveParameters
(mensaje)SolverConfig
(mensaje)WorkStatus
(enumeración)
Receso
Un período en el que un empleado interrumpe su trabajo durante un turno.
Campos | |
---|---|
start_date_time |
Hora de inicio de un descanso. |
duration_minutes |
Duración de la pausa en minutos. |
BreakRule
Es una regla que determina cuándo puede comenzar una pausa dentro de un cambio y su duración. La lista de todas las pausas posibles que se consideran se determina en incrementos de rule_increment_minutes
. Por ejemplo, si una regla de pausa modela una pausa de 30 minutos que puede comenzar entre las 10:00 y las 11:00, y el incremento de la regla es de 20 minutos, la lista de pausas que se consideran es la siguiente: [10:00, 10:30], [10:20, 10:50], [10:10, 11:10], [10:10, 11:10]
Campos | |
---|---|
earliest_start_time |
La hora de inicio más temprana de la pausa (inclusive). Solo se pueden configurar |
latest_start_time |
La hora de inicio más reciente de la pausa (incluida). Solo se pueden configurar |
duration_minutes |
Duración de la pausa en minutos. |
rule_increment_minutes |
[Opcional] Incremento de tiempo en minutos para todas las pausas que se pueden considerar en esta regla de pausa. Si no se establece, el valor predeterminado es |
BudgetRequirement
Requisitos de presupuesto para un intervalo determinado.
Campos | |
---|---|
total_budget |
Es el presupuesto total para el intervalo determinado. Se debe proporcionar un presupuesto total si la prioridad es Si no estableces |
start_date_time |
Es la hora de inicio del momento en que se aplica este presupuesto. Si no se especifica la hora de inicio, se establece como la hora de inicio más temprana de todos los cambios. |
end_date_time |
Es la hora de finalización cuando se aplica este presupuesto. Si no se especifica una hora de finalización, se establece como la última hora de finalización de todos los cambios. |
priority |
Nivel de prioridad para cumplir con el requisito de presupuesto durante el período especificado. La prioridad predeterminada es Ten en cuenta que, si esta prioridad es mayor que otras prioridades de restricción y si |
CoverageRequirement
Un requisito de cobertura especifica la cantidad de empleados necesarios para un conjunto de roles o habilidades durante un período en particular y en una ubicación determinada. No se pueden superponer los intervalos de DateTime en una ubicación en particular. Como alternativa, se puede proporcionar una lista de IDs de turno en lugar de un período y una ubicación. Solo los empleados que pueden asignarse a la función específica (o que poseen la habilidad específica) pueden cumplir este requisito.
Para un rol o una habilidad determinados, se cumple el requisito de cobertura cuando al menos target_employee_count
empleados trabajan en todo momento durante la ventana horaria (o para cada turno de shift_ids
). En cambio, se incumple el requisito de cobertura si en algún momento de la ventana temporal (o en cualquiera de los turnos en shift_ids
) hay menos de target_employee_count
empleados que trabajan durante ese período. La cantidad de empleados que trabajan más que la target_employee_count
sigue cumpliendo el requisito, pero el solucionador minimiza el exceso de personal.
Campos | |
---|---|
start_date_time |
Es la hora de inicio del requisito de cobertura (incluida). Si se configura, |
end_date_time |
La hora de finalización del requisito de cobertura (exclusivo). Si se configura, |
location_id |
Ubicación en la que se necesitan los empleados. |
shift_ids[] |
Si se establecen, los requisitos de rol y habilidad se aplican individualmente a cada ID de turno en esta lista. Si Shift_ids no está vacío, entonces |
role_requirements[] |
Cantidad requerida de empleados que se asignarán a los roles especificados durante el período. Se debe proporcionar un |
skill_requirements[] |
Cantidad requerida de empleados con las habilidades especificadas que están asignados a turnos durante el período establecido. Se debe proporcionar una |
RoleRequirement
Cantidad requerida de empleados que se asignarán a la función especificada durante el período.
Campos | |
---|---|
role_id |
Es el ID de función del requisito. |
target_employee_count |
Cantidad deseada de empleados asignados a la función durante el período establecido. |
priority |
Nivel de prioridad para esta restricción de requisitos. La prioridad predeterminada para todas las restricciones de recursos es |
SkillRequirement
Cantidad requerida de empleados que trabajan durante el período y tienen la habilidad especificada.
Campos | |
---|---|
skill_id |
Es el ID de habilidad del requisito. |
target_employee_count |
Número deseado de empleados con una habilidad determinada que trabajan durante ese período. |
priority |
Nivel de prioridad para esta restricción de requisitos. La prioridad predeterminada para todas las restricciones de recursos es |
DemandCoverageViolation
Especifica el incumplimiento de la cobertura de la demanda para el intervalo determinado. La demanda de empleados es la misma durante todo el intervalo especificado.
Campos | |
---|---|
start_date_time |
Es la fecha y hora de inicio del intervalo de demanda (inclusive). Este valor se especifica por minuto. |
end_date_time |
Es la fecha y hora de finalización del intervalo de demanda (exclusivo). Este valor se especifica por minuto. |
coverage_violation |
Incumplimiento de cobertura durante el intervalo especificado. Un valor positivo indica que la demanda está sobrecubierta, y un valor negativo indica que está subcubierta. |
Empleado
Se programará a un empleado del personal.
Campos | |
---|---|
id |
ID único asignado a este empleado. |
role_ids[] |
Son los IDs de función que puede realizar este empleado. Se debe especificar al menos un rol. Cuando se asigna un turno a un empleado, también se le asigna un solo rol de esta lista. Se le puede asignar al empleado a diferentes roles durante el período de programación. |
skill_ids[] |
Los IDs de habilidad que posee este empleado. Esta lista puede estar vacía. Cuando se asigna un turno a un empleado, usa cualquier subconjunto de las habilidades enumeradas aquí para cubrir los requisitos de habilidades a lo largo del turno asignado. |
shift_preferences[] |
Cambiar las preferencias de este empleado. Los turnos especificados aquí representan cambios a los que el empleado preferiría asignarse durante el período de programación. Los IDs de cambio especificados en |
scheduling_constraints[] |
Lista de restricciones de horario para este empleado. El nivel de prioridad predeterminado para cada una de estas restricciones es |
resource_constraints[] |
Cualquier restricción de programación adicional que no se especifique en |
shift_requests[] |
Lista de solicitudes de turnos para el empleado. La solicitud puede ser para que se asigne o no a un empleado en turnos específicos. Cualquier asignación de programación fija para el empleado se puede representar con un |
hourly_contract |
Contrato que especifica las tarifas regulares y por horas extra para el empleado. |
EmployeeDemand
Especifica la cantidad de empleados necesarios para cubrir la demanda en el intervalo de fecha y hora determinado.
Campos | |
---|---|
start_date_time |
Inicio del intervalo de tiempo para la demanda determinada (inclusive). Estos valores se leen hasta el minuto; los segundos y todas las unidades más pequeñas se ignoran. |
end_date_time |
Final del intervalo de la demanda determinada (exclusivo). Estos valores se leen hasta el minuto; los segundos y todas las unidades más pequeñas se ignoran. |
employee_count |
Cantidad de empleados necesarios para cubrir la demanda de este intervalo. |
EmployeeSchedule
Una lista ordenada de turnos correspondientes a un único ShiftTemplate
que se asignará a una cantidad de empleados.
Campos | |
---|---|
shift_template_id |
ID de la plantilla que se utilizó para generar este conjunto de cambios. |
shifts[] |
Lista de turnos a los que se asignó |
employee_count |
Cantidad de empleados que deben asignarse a este conjunto de turnos para cubrir la demanda. |
ShiftWithEvents
Especifica la fecha de inicio y finalización junto con una lista de eventos fijos de un cambio generado por el solucionador.
Campos | |
---|---|
start_date_time |
Es la fecha y hora de inicio del cambio. Este valor se especifica por minuto. No se dan segundos ni unidades menores. |
end_date_time |
Es la fecha y hora de finalización del cambio. Este valor se especifica por minuto. No se dan segundos ni unidades menores. |
events[] |
Lista de eventos incluidos en este cambio, asignados exactamente a los |
Evento
Especifica la fecha y hora de inicio y finalización de un evento específico en un cambio que generó el solucionador.
Campos | |
---|---|
event_template_id |
El ID de la plantilla que se usó para generar este evento. |
start_date_time |
Es la fecha y hora de inicio del evento. Este valor se especifica por minuto. No se dan segundos ni unidades menores. |
end_date_time |
Es la fecha y hora de finalización del evento. Este valor se especifica por minuto. No se dan segundos ni unidades menores. |
EventTemplate
Plantilla que especifica las reglas para generar un solo evento que ocurre durante un turno. Un evento puede representar una reunión, un descanso, un almuerzo, etcétera.
Campos | |
---|---|
id |
ID único de esta plantilla. |
minimum_minutes_after_shift_start |
Cantidad mínima de minutos en los que puede comenzar este evento después del comienzo de un turno. |
maximum_minutes_after_shift_start |
Cantidad máxima de minutos que puede iniciar este evento después del comienzo de un turno. |
duration_minutes |
Duración fija en minutos del evento |
start_time_increment_minutes |
El incremento de tiempo (en minutos) que se usa para generar el conjunto de posibles horas de inicio de eventos entre |
HourlyContract
Especifica una tarifa por hora base, diferenciales de tarifas y multiplicadores de horas extras para determinar la remuneración de un empleado. Ten en cuenta que las reglamentaciones en distintas partes podrían requerir un cálculo diferente de la compensación por horas extra. La herramienta de resolución aproxima la compensación por tiempo extra para minimizar un costo total o alcanzar un presupuesto (consulta BudgetRequirement
). No está diseñada como una herramienta para calcular la nómina.
Campos | |
---|---|
base_hourly_rate |
La remuneración por trabajar una hora no extrahora. Si se aplican varias tarifas al empleado, se aplican diferenciales de tarifas en relación con esta tarifa base por hora. Además, si hay varias tarifas, la tarifa base por hora debe ser la mínima de estas. |
hourly_rate_shift_differentials |
La diferencial de tarifas por hora, que se paga sobre el |
overtime_periods[] |
Una lista de todos los períodos para los que se debe calcular el tiempo extra Estos períodos no deben superponerse. |
OvertimePeriod
Es un período fijo y recurrente (generalmente de 168 horas o siete períodos consecutivos de 24 horas) que se usa para determinar el importe de la remuneración por horas extras. Cada período tiene un multiplicador de horas extras (p.ej., 1.5) en relación con la base_hourly_rate
y un límite en la cantidad de horas que se consideran trabajos normales (no extraordinarios) Cualquier cambio que se superponga con los períodos start_date_time
(inclusivo) y end_date_time
(exclusivo) se contabiliza en la cantidad total de horas trabajadas en el período. Si la superposición es parcial, solo se contarán las horas que se superponen.
Campos | |
---|---|
overtime_multiplier |
Multiplicador para calcular la tarifa por hora extra (debe ser mayor o igual que 1.0) Por lo general, la tarifa por hora extra con el tiempo se calcula como |
start_date_time |
Es la hora de inicio del período extra. Si un cambio se superpone en este período, las horas de ese cambio se contarán desde |
end_date_time |
Es la hora de finalización del período extra. Si un cambio se superpone en este período, las horas de ese cambio se contarán hasta |
maximum_regular_hours |
Cantidad máxima de horas laborales que se pagan a una tarifa regular (que no pertenece a horas extras). Esta cantidad debe ser positiva. |
Prioridad
El nivel de prioridad para cualquier restricción en el horario de un empleado o los requisitos de cobertura. Estos incluyen SchedulingConstraint
, ResourceConstraint
, ShiftRequest
y CoverageRequirement
. Debido a que puede haber restricciones en conflicto, no siempre es posible satisfacer todas. Por lo tanto, cada tipo de restricción tiene una prioridad (determinada por el usuario o predeterminada) que informa al solucionador sobre la importancia relativa de todas las restricciones otorgadas a un programa completo.
Enumeradores | |
---|---|
PRIORITY_UNSPECIFIED |
Nivel de prioridad desconocido. |
PRIORITY_LOW |
El nivel de prioridad más bajo. Las restricciones con esta prioridad son menos importantes que las demás. Son los primeros en considerarse una infracción si no se encuentra una solución viable. |
PRIORITY_MEDIUM |
Nivel de prioridad medio. Las restricciones con esta prioridad son más importantes que las que tienen prioridad PRIORITY_LOW , pero menos importantes que las PRIORITY_HIGH . Si no se puede encontrar una solución factible después de relajar todas las restricciones con prioridad PRIORITY_LOW , las restricciones con prioridad PRIORITY_MEDIUM se consideran a continuación para el incumplimiento. |
PRIORITY_HIGH |
El nivel de prioridad más alto. Las restricciones con este nivel de prioridad son las más importantes. Son las últimas que se consideran por incumplimiento si no se puede encontrar una solución factible después de flexibilizar las restricciones de los niveles de prioridad más bajos. |
PRIORITY_MANDATORY |
Nivel de prioridad que representa algo que el solucionador no puede incumplir. Si el solucionador muestra SolutionStatus.INFEASIBLE , puede deberse a demasiadas restricciones de PRIORITY_MANDATORY . |
ResourceConstraint
Restricción general que limita la cantidad de un “recurso” determinado que usa un empleado. Esta es una versión abstracta del SchedulingConstraint
más específico que es más flexible para el usuario. Muchas restricciones de programación que no se pueden especificar en SchedulingConstraint.type
se pueden especificar con este mensaje en su lugar.
Campos | |
---|---|
priority |
Nivel de prioridad de esta restricción de recursos. La prioridad predeterminada para todas las restricciones de recursos es |
resource_usages |
Cantidad de recursos utilizados por los turnos. Por ejemplo, si esta restricción se aplica a las horas mínimas y máximas que trabajó un empleado durante una semana específica, este mapa contendrá los cambios que se producen en esa semana y la duración de cada cambio en horas. |
minimum_resource_usage |
Uso mínimo de recursos para que se cumpla una restricción de recursos. |
maximum_resource_usage |
Uso máximo de recursos para que se cumpla una restricción de recursos. |
SchedulingConstraint
Restricción de horario específica para un empleado en particular. La restricción especificada solo se aplica durante el intervalo [start_date_time,
end_date_time)
determinado.
Campos | |
---|---|
priority |
Nivel de prioridad para esta restricción de programación. La prioridad predeterminada para todas las restricciones de programación es |
start_date_time |
Es la hora de inicio en la que se aplica esta restricción de programación (incluida). |
end_date_time |
Es la hora de finalización en la que se aplica esta restricción de programación (exclusivo). |
Campo de unión type . El tipo de restricción que se especifica. Cada restricción solo se aplica dentro del período especificado anteriormente. Las direcciones (type ) solo pueden ser una de las siguientes opciones: |
|
minimum_minutes |
Cantidad mínima de minutos que el empleado puede trabajar. Si se asigna al empleado un turno que se superpone (total o parcialmente) con la ventana de tiempo, la cantidad de minutos que el turno se superpone con la ventana de tiempo se incluye en este recuento. |
maximum_minutes |
Cantidad máxima de minutos que el empleado puede trabajar en la ventana de tiempo. Si se asigna al empleado un turno que se superpone (total o parcialmente) con la ventana de tiempo, la cantidad de minutos que el turno se superpone con la ventana de tiempo se incluye en este recuento. |
minimum_consecutive_work_days |
Cantidad mínima de días consecutivos en los que puede trabajar el empleado. Un empleado trabaja un día específico si se le asigna un turno que comienza durante ese día. Cualquier turno al que se asigne el empleado y que comience en el período se incluye en este recuento. |
maximum_consecutive_work_days |
Cantidad máxima de días consecutivos en los que puede trabajar el empleado Un empleado trabaja un día específico si se le asigna un turno que comienza durante ese día. Cualquier turno al que se asigne el empleado y que comience en el período se incluye en este recuento. |
minimum_shift_count |
Cantidad mínima de turnos que puede realizar el empleado. Este recuento incluye cualquier cambio al que se asigne el empleado y que se superponga completamente con el período. |
maximum_shift_count |
Cantidad máxima de turnos que puede trabajar el empleado Este recuento incluye cualquier cambio al que se asigne el empleado y que se superponga completamente con el período. |
minimum_rest_minutes |
Cantidad mínima de minutos que el empleado debe descansar después del final de un turno antes de que se lo asigne a otro. Esta restricción se aplica a cada par de turnos que se incluyen por completo en [ |
Shift
Un turno especifica una ventana de tiempo fija en la que pueden trabajar los empleados.
Campos | |
---|---|
id |
Es un ID único asignado a este cambio. |
location_id |
Es el ID de ubicación en el que se realiza este cambio. Este campo puede estar vacío. |
start_date_time |
La hora de inicio del cambio (inclusive). |
end_date_time |
La hora de finalización del cambio (exclusivo). Actualmente, la resolución solo permite cambios de menos de 24 horas de duración. |
break_rules[] |
Una lista de las reglas de incumplimiento que ocurren durante el cambio. A los empleados que realizan este turno se les asigna un descanso por |
ShiftAssignment
Un empleado debe asignar un rol por turnos.
Campos | |
---|---|
employee_id |
El ID del empleado que se asigna. |
shift_id |
El ID del turno asignado al empleado. |
role_id |
Es el ID de rol al que se asignó el empleado para el turno. |
breaks[] |
Lista de pausas para esta asignación de turno. |
ShiftGenerationSolutionStatus
Estado de la solución proporcionado en la respuesta de una resolución.
Enumeradores | |
---|---|
SHIFT_GENERATION_SOLUTION_STATUS_UNSPECIFIED |
Estado sin especificar para la respuesta. |
SHIFT_GENERATION_SOLVED |
El solucionador encontró una solución en el límite de tiempo proporcionado. |
SHIFT_GENERATION_NOT_SOLVED |
Un problema impidió que la herramienta de resolución generara cambios. |
SHIFT_GENERATION_NOT_SOLVED_DEADLINE_EXCEEDED |
No se pudieron generar cambios para cubrir la demanda dentro del límite de tiempo establecido. |
ShiftPreference
Una preferencia numérica para un ID de cambio en particular.
Campos | |
---|---|
shift_id |
Es el ID del cambio para el que se especifica la preferencia. |
preference |
Los valores de preferencia más altos indican un cambio más deseable. |
ShiftRequest
La solicitud de un empleado de que se le asigne o no que se asigne a turnos específicos.
Campos | |
---|---|
priority |
Nivel de prioridad de esta solicitud de programación. La prioridad predeterminada para todas las solicitudes de programación es |
shift_ids[] |
Los IDs de los cambios de la solicitud de programación. |
type |
Tipo de solicitud, p.ej., si la solicitud se asignó o no al conjunto de cambios. |
ShiftTemplate
Plantilla que especifica las reglas para generar turnos. Un turno es una unidad de trabajo que especifica una hora de inicio y finalización, y puede contener eventos (por ejemplo, almuerzos, descansos, etc.). Se asignará un cambio a una fecha específica en la respuesta.
Campos | |
---|---|
id |
ID único de esta plantilla. |
earliest_start_time |
Hora más temprana del día en que puede comenzar un turno Este valor se especifica con horas y minutos. Se ignoran los segundos y los nanosegundos. |
latest_start_time |
Hora más reciente del día en la que puede comenzar un turno. Este valor se especifica con horas y minutos. Se ignoran los segundos y los nanosegundos. Si este valor es menor que |
duration_minutes |
Duración fija de un cambio generado por esta plantilla. |
start_time_increment_minutes |
El incremento de tiempo (en minutos) que se usa para generar el conjunto de horas de inicio posibles entre |
days_off_count_per_week |
Cantidad fija de días libres por semana Un empleado tiene un día libre determinado si no se le asigna un turno que comience ese día. Una semana dura 7 días y comienza el domingo. |
event_templates[] |
Reglas de generación de eventos para cada turno Se incluirá exactamente un evento en cada turno para cada evento especificado. |
minimum_interevent_gap_minutes |
Minutos mínimos entre el final de un evento y el inicio del siguiente. |
maximum_employee_count |
Cantidad máxima de empleados que pueden asignarse a todos los turnos generados con esta plantilla. |
SolutionStatus
Estado de la solución (es decir, un programa) que se proporciona en la respuesta de una resolución
Enumeradores | |
---|---|
SOLUTION_STATUS_UNSPECIFIED |
Estado sin especificar para la respuesta. |
FEASIBLE |
El programa que se muestra es factible, pero puede no ser óptimo. |
OPTIMAL |
El programa que se muestra es óptimo. |
INFEASIBLE |
No existe un cronograma factible para las restricciones dadas. La herramienta de resolución puede mostrar este valor si no se puede satisfacer algún subconjunto de las restricciones con el nivel de prioridad PRIORITY_MANDATORY . |
NOT_SOLVED |
No se encontró ningún programa. |
NOT_SOLVED_DEADLINE_EXCEEDED |
No se encontró ningún programa dentro del límite de tiempo establecido. |
SolveParameters
Son parámetros que controlan una sola solución al problema de la programación de turnos.
Campos | |
---|---|
time_limit |
Tiempo máximo que el agente de resolución debería dedicar al problema. Si no se establece, el valor predeterminado es 1 minuto. Este valor no es un límite estricto y no tiene en cuenta la sobrecarga de comunicación. Es posible que la latencia esperada para resolver el problema exceda un poco este valor. |
SolverConfig
Especifica parámetros adicionales para resolver el problema de generación de turnos.
Campos | |
---|---|
time_limit |
Tiempo máximo que el agente de resolución debería dedicar al problema. Si no se establece, el valor predeterminado es 1 minuto. La elección de un límite de tiempo debería depender del tamaño del problema. Por ejemplo, cuando se resuelve una instancia de 7 días con 2 Este valor no es un límite estricto y no tiene en cuenta la sobrecarga de comunicación. Es posible que la latencia esperada para resolver el problema exceda un poco este valor. |
multi_day_schedule |
Si es verdadero, el solucionador genera |
shift_events_can_change |
Si esta preferencia se establece como "true", los elementos |
WorkStatus
Si un empleado está trabajando o no.
Enumeradores | |
---|---|
WORK_STATUS_UNSPECIFIED |
Estado de trabajo desconocido. |
STATUS_WORK |
Estado que representa a un empleado que trabaja. |
STATUS_NOT_WORK |
Estado que representa a un empleado que no trabaja |