Package google.research.optimization.v1.workforce

색인

휴식 시간

직원이 교대 근무 중에 업무를 중단하는 기간입니다.

입력란
start_date_time

DateTime

광고 시점의 시작 시간입니다.

duration_minutes

int32

휴식 시간(분)입니다.

BreakRule

교대 근무 및 근무 시간 내에 휴식이 시작될 수 있는 시점을 결정하는 규칙입니다. 고려되는 모든 가능한 광고 시점 목록은 rule_increment_minutes 단위로 결정됩니다. 예를 들어 광고 시점 규칙이 10:00에서 11:00 사이에 시작할 수 있는 30분 광고 시간을 모델링하고 규칙 증분이 20분인 경우 고려되는 광고 시점 목록은 [10:00, 10:30], [10:20, 10:50], [10:40, 11:10], 11:10, 11:10입니다.

입력란
earliest_start_time

DateTime

광고 시점의 가장 이른 시작 시간입니다 (해당 시간 포함). hoursminutes만 설정할 수 있습니다.

latest_start_time

DateTime

가장 늦은 광고 시점 시작 시간입니다 (해당 시간 포함). hoursminutes만 설정할 수 있습니다.

duration_minutes

int32

휴식 시간(분)입니다.

rule_increment_minutes

int32

[선택사항] 이 광고 시점 규칙에서 고려할 수 있는 모든 광고 시점의 시간 증가분(분)입니다. 설정하지 않으면 기본값은 duration_minutes입니다.

BudgetRequirement

지정 간격의 예산 요구사항입니다.

입력란
total_budget

double

지정된 간격의 총 예산입니다. 우선순위가 PRIORITY_MANDATORY인 경우 총 예산을 지정해야 합니다.

total_budget가 설정되지 않으면 지정된 priority에 따라 일정의 총 비용이 최소화됩니다. 예를 들어 예산의 priorityPRIORITY_MEDIUM이면 솔버는 우선순위를 PRIORITY_LOW로 제약조건 위반을 줄이기 전에 비용을 최소화합니다.

start_date_time

DateTime

이 예산이 적용되는 시작 시간입니다. 시작 시간을 지정하지 않으면 모든 교대 근무 중 가장 빠른 시작 시간으로 설정됩니다.

end_date_time

DateTime

이 예산이 적용되는 종료 시간입니다. 종료 시간을 지정하지 않으면 모든 교대 근무의 가장 늦은 종료 시간으로 설정됩니다.

priority

Priority

지정된 기간 동안 예산 요건을 충족하기 위한 우선순위 수준입니다. 기본 우선순위는 PRIORITY_LOW입니다. 우선순위가 PRIORITY_MANDATORY으로 설정된 경우 total_budget를 설정해야 합니다.

이 우선순위가 다른 제약조건 우선순위보다 높고 total_budget이 빠듯한 경우 결과 일정이 직원 제약 조건 또는 커버리지 요구사항을 모두 크게 위반할 수 있습니다.

CoverageRequirement

적용 범위 요구사항은 특정 기간 동안 지정된 위치에서 일련의 역할 또는 기술에 필요한 직원 수를 지정합니다. 특정 위치의 DateTime 간격은 겹칠 수 없습니다. 또는 시간 및 위치 대신 교대 근무 ID 목록을 제공할 수 있습니다. 특정 역할을 할당할 수 있는 직원 또는 특정 기술을 보유한 직원만 이 요건을 충족할 수 있습니다.

특정 역할 또는 기술의 경우 항상 (또는 shift_ids의 모든 교대 근무 시) 최소 target_employee_count 수의 직원이 근무하는 경우 보장 범위 요구사항이 충족됩니다. 반면, 특정 기간 중 어느 시점에서든 (또는 shift_ids의 교대 근무 시) 해당 기간 동안 근무하는 직원이 target_employee_count명 미만이면 적용 범위 요구사항이 위반됩니다. target_employee_count보다 일하는 직원이 더 많아도 여전히 요구사항을 충족하지만 문제 해결자가 과도한 인력을 감당할 수는 없습니다.

입력란
start_date_time

DateTime

적용 범위 요구사항의 시작 시간입니다 (해당 시간 포함). 설정하는 경우 shift_ids는 비어 있어야 합니다.

end_date_time

DateTime

보증 범위 요구사항 (제외)의 종료 시간입니다. 설정하는 경우 shift_ids는 비어 있어야 합니다.

location_id

string

직원이 필요한 위치입니다. shift_ids은(는) 비어 있지 않습니다. 이 필드는 비어 있어야 합니다.

shift_ids[]

string

설정하면 역할 및 기술 요구사항이 이 목록의 모든 교대 근무 ID에 개별적으로 적용됩니다. Shift_id가 비어 있지 않은 경우 start_date_time, end_date_time, location_id는 비어 있어야 합니다.

role_requirements[]

RoleRequirement

특정 기간 동안 지정된 역할에 할당되는 필수 직원 수입니다. 각 역할 ID에 최대 하나의 role_requirement를 제공해야 합니다. 각 요구사항의 기본 우선순위 수준은 PRIORITY_MANDATORY입니다. 특정 기간 중 지정된 역할에 할당된 직원이 target_employee_count명 미만이면 이 제약조건을 위반합니다.

skill_requirements[]

SkillRequirement

특정 기간 동안 교대 근무에 할당되는 특정 기술을 보유한 필수 직원 수입니다. 각 기술 ID에 최대 1개의 skill_requirement를 제공해야 합니다. 각 요구사항의 기본 우선순위 수준은 PRIORITY_LOW입니다. 특정 기간 중 특정 기술을 보유한 직원이 target_employee_count명 미만인 경우 이러한 제약 조건이 위반됩니다.

RoleRequirement

특정 기간 동안 지정된 역할에 할당되는 필수 직원 수입니다.

입력란
role_id

string

요구사항의 역할 ID입니다.

target_employee_count

int32

특정 기간 동안 역할에 할당되기를 원하는 직원 수

priority

Priority

이 요구사항 제약조건의 우선순위 수준입니다. 모든 리소스 제약조건의 기본 우선순위는 PRIORITY_MANDATORY입니다.

SkillRequirement

특정 기간 동안 작업하며 지정된 기술을 보유한 필수 직원 수입니다.

입력란
skill_id

string

요구사항의 기술 ID입니다.

target_employee_count

int32

특정 기간에 특정 기술을 보유한 원하는 직원 수

priority

Priority

이 요구사항 제약조건의 우선순위 수준입니다. 모든 리소스 제약조건의 기본 우선순위는 PRIORITY_LOW입니다.

DemandCoverageViolation

지정된 간격의 수요 범위 위반을 지정합니다. 직원 수요는 지정된 전체 구간에서 동일합니다.

입력란
start_date_time

DateTime

수요 간격의 시작 날짜 및 시간입니다 (해당 시간 포함). 이 값은 분 단위로 지정됩니다.

end_date_time

DateTime

수요 간격의 종료 날짜 및 시간입니다 (제외). 이 값은 분 단위로 지정됩니다.

coverage_violation

int32

지정된 간격 동안의 노출 범위 위반입니다. 양수 값은 수요가 초과되었음을 나타내고 음수 값은 수요가 가려졌음을 나타냅니다.

직원

예약 예정인 직원입니다.

입력란
id

string

이 직원에게 할당된 고유 ID입니다.

role_ids[]

string

이 직원이 수행할 수 있는 역할 ID입니다. 역할이 1개 이상 지정되어야 합니다. 직원에게 교대 근무가 할당되면 이 목록에서도 하나의 역할이 할당됩니다. 일정 예약 기간 동안 직원이 다른 역할에 할당될 수 있습니다.

skill_ids[]

string

이 직원이 소유한 기술 ID입니다. 이 목록은 비워 둘 수 있습니다. 직원이 교대 근무에 할당되면 여기에 나열된 기술 중 일부를 사용하여 할당된 교대 근무 기간 동안 기술 요구사항을 처리합니다.

shift_preferences[]

ShiftPreference

이 직원의 환경설정을 변경합니다. 여기에 지정된 교대 근무 수는 해당 직원이 일정 예약 기간에 배정되기를 원하는 교대 근무를 나타냅니다. shift_preferences에 지정된 교대 근무 ID는 고유해야 합니다. 문제 해결사는 충족되는 모든 shift_preferences에 대해 ShiftPreference.preference 값의 합계를 최대화하려고 시도합니다.

scheduling_constraints[]

SchedulingConstraint

이 직원의 일정 제약 조건 목록입니다. 이러한 각 제약조건의 기본 우선순위 수준은 PRIORITY_MEDIUM입니다. 자세한 내용은 Priority enum을 참고하세요.

resource_constraints[]

ResourceConstraint

scheduling_constraints에 지정되지 않은 추가 예약 제약 조건을 여기에서 resource_constraints에 추가할 수 있습니다. ResourceConstraint은 직원의 리소스를 제한하기 위한 좀 더 추상적인 표현입니다. 이러한 각 제약조건의 기본 우선순위 수준은 PRIORITY_MEDIUM입니다. 자세한 내용은 Priority enum을 참고하세요.

shift_requests[]

ShiftRequest

직원의 교대 근무 요청 목록입니다. 특정 교대 근무자를 배정받기 위한 요청일 수도 있고 특정 교대 근무에 배정되지 않을 수도 있습니다. 직원의 고정 일정 할당은 우선순위가 PRIORITY_MANDATORYShiftRequest로 표시할 수 있습니다. 교대 근무 ID는 이 직원의 최대 한 개의 일정 요청에 표시될 수 있습니다. 각 요청의 기본 우선순위 수준은 PRIORITY_LOW입니다. 자세한 내용은 Priority enum을 참고하세요.

hourly_contract

HourlyContract

직원에 대한 정규 및 초과 근무 시간 요금을 지정하는 계약입니다.

EmployeeDemand

지정된 DateTime 간격에 수요를 처리하는 데 필요한 직원 수를 지정합니다.

입력란
start_date_time

DateTime

지정된 수요에 대한 시간 간격의 시작입니다 (해당 시간 포함). 이 값은 분 단위로 판독되며 초와 더 작은 단위는 모두 무시됩니다.

end_date_time

DateTime

지정된 수요에 대한 시간 간격의 종료 시간입니다 (제외). 이 값은 분 단위로 판독되며 초와 더 작은 단위는 모두 무시됩니다.

employee_count

int32

이 간격에 대한 수요를 충당하는 데 필요한 직원 수입니다.

EmployeeSchedule

여러 직원에게 할당할 단일 ShiftTemplate에 해당하는 정렬된 교대 근무 목록입니다.

입력란
shift_template_id

string

이 교대 근무 세트를 생성하는 데 사용된 템플릿의 ID입니다.

shifts[]

ShiftWithEvents

employee_count 직원이 할당된 교대 근무의 목록입니다. 일정에 선택된 교대 근무 및 이벤트는 단일 템플릿에서 생성되었습니다. 교대 근무는 시간순으로 정렬되며 겹치지 않습니다. SolverConfig.multi_day_schedule이 true인 경우 해당 날짜에 시작하는 교대 근무가 없다는 의미로 공휴일이 암시적으로 표시됩니다.

employee_count

int32

수요를 충당하기 위해 이 교대 근무 세트에 배정되어야 하는 직원 수입니다.

ShiftWithEvents

문제 해결사가 생성한 변화의 고정된 이벤트 목록과 함께 시작일 및 종료일을 지정합니다.

입력란
start_date_time

DateTime

이동 시작 날짜 및 시간입니다. 이 값은 분 단위로 지정되며 초와 작은 단위는 제공되지 않습니다.

end_date_time

DateTime

이동 종료 날짜 및 시간입니다. 이 값은 분 단위로 지정되며 초와 작은 단위는 제공되지 않습니다.

events[]

Event

이 이동에 포함된 이벤트 목록으로, ShiftTemplate.Event에 정확하게 매핑되고 동일한 순서로 매핑되어 있습니다. SolverConfig.shift_events_can_change이 true인 경우 이벤트의 시작 및 종료 시간이 이 일정의 모든 ShiftWithEvents에서 다를 수 있습니다.

이벤트

문제 해결사가 생성한 시간 변화에서 특정 이벤트의 시작 및 종료 DateTime을 지정합니다.

입력란
event_template_id

string

이 이벤트를 생성하는 데 사용된 템플릿의 ID입니다.

start_date_time

DateTime

이벤트의 시작 날짜 및 시간입니다. 이 값은 분 단위로 지정되며 초와 작은 단위는 제공되지 않습니다.

end_date_time

DateTime

이벤트의 종료 날짜 및 시간입니다. 이 값은 분 단위로 지정되며 초와 작은 단위는 제공되지 않습니다.

EventTemplate

교대 근무 중에 발생하는 단일 이벤트를 생성하기 위한 규칙을 지정하는 템플릿입니다. 일정은 회의, 휴식, 점심시간 등을 나타낼 수 있습니다.

입력란
id

string

이 템플릿의 고유 ID입니다.

minimum_minutes_after_shift_start

int32

교대 근무 시작 후 이 이벤트를 시작할 수 있는 최소 시간(분)입니다.

maximum_minutes_after_shift_start

int32

교대 근무 시작 후 이 이벤트를 시작할 수 있는 최대 시간(분)입니다.

duration_minutes

int32

이 이벤트의 고정된 기간(분)

start_time_increment_minutes

int32

minimum_minutes_after_shift_start~maximum_minutes_after_shift_start 사이에 가능한 이벤트 시작 시간 집합을 생성하는 데 사용되는 시간 증분 (분)입니다. 예를 들어 교대 근무 시작 후 최소 시간(분)이 30분이고, 교대 근무 시작 후 최대 시간(분)이 45분이고 시작 시간 증가가 5분인 경우 이벤트는 교대 근무 시작 30분, 35분, 40분 또는 45분 후에 발생할 수 있습니다.

HourlyContract

기본 시간당 요금, 요금 차이, 초과 근무 배율을 지정하여 직원에 대한 보수를 결정합니다. 규정마다 초과 근무 수당을 계산해야 할 수 있습니다. 문제 해결사는 총비용의 프록시를 최소화하거나 예산을 맞추기 위해 초과 근무 수당의 근사치를 계산합니다 (BudgetRequirement 참고). 급여 계산 도구로 사용해서는 안 됩니다.

입력란
base_hourly_rate

double

초과 근무 외 시간에 대한 보상 직원에게 여러 요금을 적용하는 경우 이 기본 시간당 요금에 상대적인 요금 차등이 적용됩니다. 또한 요금이 여러 개인 경우 기본 시간당 요금이 이 요금 중 최소값이어야 합니다.

hourly_rate_shift_differentials

map<string, double>

base_hourly_rate에 더해 지급되는 시간당 요금 차액입니다. 예를 들어 기본 시간당 요금이 $30/시간이고 'shift_1'은 시간당 $40, 'shift_2'는 시간당 $45의 요율로 지불되는 경우 프로토콜 표현은 base_hourly_rate: 30 hourly_rate_shift_differentials {key: "shift_1" value: 10} hourly_rate_shift_differentials {key: "shift_2" value: 15}입니다.

overtime_periods[]

OvertimePeriod

초과 근무 시간을 계산해야 하는 모든 기간의 목록입니다. 이 기간은 겹치지 않아야 합니다.

OvertimePeriod

초과 근무 보상 금액을 결정하는 데 사용되는 고정적이고 규칙적인 반복 기간 (일반적으로 168시간 또는 연속 24시간 7시간)입니다. 각 기간에는 초과 근무 배율이 적용됩니다 (예: 1.5) base_hourly_rate 기준 및 정규 근무 (초과 근무 아님)로 간주되는 시간 제한을 기준으로 합니다. start_date_time (포함) 및 end_date_time (제외) 기간과 겹치는 모든 근무 시간은 해당 기간의 총 작업 시간에 계산됩니다. 부분적으로 중복되는 경우 중복되는 시간만 계산됩니다.

입력란
overtime_multiplier

double

시간 초과 시 시간당 요금을 계산하기 위한 배율입니다 (1.0 이상이어야 함). 시간 초과 시 시간당 요율은 일반적으로 base_hourly_rate * overtime_multiplier로 계산됩니다. hourly_rate_shift_differentials을 통해 주어진 요금이 여러 개인 경우 문제 해결사는 초과 근무 시간에 적용할 수 있는 요율의 단순 평균을 사용해 초과 근무 시간당 요금을 근사치로 계산합니다. 참고: 다른 지역의 규정에 따라 초과 근무 수당을 다르게 계산해야 할 수 있습니다. 문제 해결사는 총비용의 프록시를 최소화하거나 예산을 충족하기 위해 초과 근무 수당의 근사치를 계산하지만, 급여를 계산하는 도구로 의도된 것은 아닙니다.

start_date_time

DateTime

초과 기간의 시작 시간입니다. 이 시간이 겹치면 해당 근무 시간은 start_date_time부터 계산됩니다.

end_date_time

DateTime

연장전 종료 시간입니다. 이 시간이 겹치면 해당 근무 시간은 최대 end_date_time시간으로 집계됩니다.

maximum_regular_hours

double

정규 (초과 근무 시간 제외) 요율로 지급되는 최대 근무 시간. 수량은 양수여야 합니다.

우선순위

직원 일정 또는 지원 범위에 대한 제약 조건의 우선순위 수준입니다. 여기에는 SchedulingConstraint, ResourceConstraint, ShiftRequest, CoverageRequirement가 포함됩니다. 충돌하는 제약 조건이 있을 수 있으므로 모든 제약 조건을 만족하는 것이 항상 가능하지는 않습니다. 따라서 각 유형의 제약조건에는 전체 일정에 지정된 모든 제약조건의 상대적 중요도를 해결사에게 알려주는 우선순위 (사용자 또는 기본값이 지정)가 있습니다.

열거형
PRIORITY_UNSPECIFIED 우선순위 수준을 알 수 없습니다.
PRIORITY_LOW 우선순위가 가장 낮은 수준입니다. 이 우선순위가 지정된 제약조건은 다른 제약조건보다 덜 중요합니다. 가능한 해결책을 찾을 수 없을 경우 가장 먼저 위반을 받게 됩니다.
PRIORITY_MEDIUM 우선순위 수준 보통 이 우선순위가 지정된 제약조건은 우선순위가 PRIORITY_LOW인 제약조건보다 중요하지만 우선순위가 PRIORITY_HIGH인 제약조건보다 덜 중요합니다. 우선순위가 PRIORITY_LOW인 모든 제약조건을 완화한 후에도 가능한 솔루션을 찾을 수 없으면 우선순위가 PRIORITY_MEDIUM인 제약조건을 위반으로 간주합니다.
PRIORITY_HIGH 가장 높은 우선순위 수준입니다. 이 우선순위 수준의 제약조건이 가장 중요합니다. 낮은 우선순위 수준의 제약조건을 완화한 후에도 가능한 해결책을 찾을 수 없는 경우 다시 위반 대상으로 고려됩니다.
PRIORITY_MANDATORY 문제 해결사가 위반할 수 없는 항목을 나타내는 우선순위 수준입니다. 솔버에서 SolutionStatus.INFEASIBLE를 반환하는 경우 PRIORITY_MANDATORY 제약 조건이 너무 많기 때문일 수 있습니다.

ResourceConstraint

직원이 사용하는 특정 '리소스'의 양을 제한하는 일반적인 제약 조건. 이 버전은 사용자에게 더 유연한 더 구체적인 SchedulingConstraint의 추상 버전입니다. SchedulingConstraint.type에 지정할 수 없는 많은 스케줄링 제약 조건을 대신 이 메시지를 사용하여 지정할 수 있습니다.

입력란
priority

Priority

이 리소스 제약조건의 우선순위 수준입니다. 모든 리소스 제약조건의 기본 우선순위는 PRIORITY_MEDIUM입니다.

resource_usages

map<string, double>

교대 근무에 사용되는 리소스의 양입니다. 예를 들어, 이 제약 조건이 특정 주에 직원이 근무한 최소 및 최대 시간에 적용되는 경우, 이 맵은 해당 주에 발생한 교대 근무 수와 각 교대 근무 시간을 포함합니다.

minimum_resource_usage

double

충족되기 위한 리소스 제약조건의 최소 리소스 사용량입니다.

maximum_resource_usage

double

충족되어야 하는 리소스 제약조건의 최대 리소스 사용량입니다.

SchedulingConstraint

특정 직원의 특정 일정 제약 조건 지정된 제약조건은 지정된 간격([start_date_time, end_date_time)) 중에만 적용됩니다.

입력란
priority

Priority

이 예약 제약조건의 우선순위 수준입니다. 모든 예약 제약조건의 기본 우선순위는 PRIORITY_MEDIUM입니다.

start_date_time

DateTime

이 예약 제약조건이 적용되는 시작 시간 (해당 시간 포함)입니다.

end_date_time

DateTime

이 예약 제약조건이 적용되는 종료 시간입니다 (제외).

통합 필드 type. 지정 중인 제약 조건의 유형입니다. 각 제약조건은 위에 지정된 기간 내에만 적용됩니다. type는 다음 중 하나여야 합니다.
minimum_minutes

int32

직원이 작업할 수 있는 최소 시간(분) 직원이 근무 시간 전체 또는 일부와 겹치는 교대 근무에 배정된 경우, 해당 교대 근무 시간이 해당 기간과 겹치는 시간 (분)이 이 계산에 포함됩니다.

maximum_minutes

int32

특정 기간 동안 직원이 작업할 수 있는 최대 시간(분)입니다. 직원이 근무 시간 전체 또는 일부와 겹치는 교대 근무에 배정된 경우, 해당 교대 근무 시간이 해당 기간과 겹치는 시간 (분)이 이 계산에 포함됩니다.

minimum_consecutive_work_days

int32

직원이 일할 수 있는 최소 연속 일수입니다. 직원이 그날 시작되는 교대 근무에 배정된 경우 해당 일에 근무할 수 있습니다. 직원에게 할당된 교대 근무가 해당 기간에 시작된 모든 교대 근무 수에 포함됩니다.

maximum_consecutive_work_days

int32

직원이 일할 수 있는 최대 연속 일수입니다. 직원이 그날 시작되는 교대 근무에 배정된 경우 해당 일에 근무할 수 있습니다. 직원에게 할당된 교대 근무가 해당 기간에 시작된 모든 교대 근무 수에 포함됩니다.

minimum_shift_count

int32

직원이 일할 수 있는 최소 교대 근무 수 직원에게 할당된 근무 시간이 해당 기간과 완전히 겹치는 경우에도 이 계산에 포함됩니다.

maximum_shift_count

int32

직원이 일할 수 있는 최대 교대 근무 수 직원에게 할당된 근무 시간이 해당 기간과 완전히 겹치는 경우에도 이 계산에 포함됩니다.

minimum_rest_minutes

int32

직원이 한 교대 근무가 끝난 후 다른 교대 근무에 배정되기 전에 휴식해야 하는 최소 시간(분)입니다. 이 제약조건은 [start_date_time, end_date_time]에 완전히 포함된 모든 교대 근무 쌍에 적용됩니다.

Shift

교대 근무는 직원이 일할 수 있는 고정된 기간을 지정합니다.

입력란
id

string

이 교대 근무에 할당된 고유 ID입니다.

location_id

string

이 교대 근무가 적용되는 위치 ID입니다. 비워 둘 수 있습니다.

start_date_time

DateTime

이동 시작 시간 (해당 시간 포함)입니다.

end_date_time

DateTime

이동 종료 시간입니다 (제외). 현재 문제 해결사는 24시간 미만의 교대 근무만 허용합니다.

break_rules[]

BreakRule

근무 시간 중에 발생한 휴식 규칙 목록입니다. 이러한 교대 근무를 수행하는 직원에게는 break_rule마다 휴식 시간이 할당되며, 이 시간 동안 수행 중인 직무에 대한 수요를 충당하지 못합니다. 각 BreakRule 기간은 이 시프트 기간 내에 완전히 포함되어야 합니다.

ShiftAssignment

교대 근무자 역할을 맡을 직원

입력란
employee_id

string

할당되는 직원 ID입니다.

shift_id

string

직원에게 할당된 Shift ID입니다.

role_id

string

해당 교대 근무를 위해 직원에게 할당된 역할 ID입니다.

breaks[]

Break

이 교대 근무자의 휴식 목록입니다.

ShiftGenerationSolutionStatus

문제 해결사의 응답에 제공된 솔루션 상태입니다.

열거형
SHIFT_GENERATION_SOLUTION_STATUS_UNSPECIFIED 응답의 상태가 지정되지 않았습니다.
SHIFT_GENERATION_SOLVED 문제 해결사가 제공된 시간 제한 내에 해결 방법을 찾았습니다.
SHIFT_GENERATION_NOT_SOLVED 문제가 발생하여 문제 해결사가 근무 시간을 생성할 수 없습니다.
SHIFT_GENERATION_NOT_SOLVED_DEADLINE_EXCEEDED 주어진 시간 제한 내에 수요를 처리하기 위한 교대 근무를 생성할 수 없습니다.

ShiftPreference

특정 Shift ID의 숫자 환경설정입니다.

입력란
shift_id

string

환경설정이 지정된 Shift ID입니다.

preference

int32

선호도 값이 클수록 더 바람직한 변화를 나타냅니다.

ShiftRequest

특정 교대 근무에 배정되거나 배정되지 않길 원하는 직원의 요청입니다.

입력란
priority

Priority

이 예약 요청의 우선순위 수준입니다. 모든 예약 요청의 기본 우선순위는 PRIORITY_LOW입니다.

shift_ids[]

string

예약 요청의 교대 근무 ID입니다.

type

WorkStatus

요청 유형(예: 요청이 교대 근무에 할당되는지 여부)

ShiftTemplate

교대 근무를 생성하기 위한 규칙을 지정하는 템플릿입니다. 교대 근무는 시작 시간과 종료 시간을 지정하는 작업 단위이며 이벤트 (점심, 휴식 등)를 포함할 수도 있습니다. 응답의 특정 날짜에 근무 시간이 할당됩니다.

입력란
id

string

이 템플릿의 고유 ID입니다.

earliest_start_time

TimeOfDay

하루 중 근무 시간이 가장 이른 시간입니다. 이 값은 시간과 분으로 지정되며 초와 나노는 무시됩니다.

latest_start_time

TimeOfDay

하루 중 근무 시간이 가장 늦은 시간입니다. 이 값은 시간과 분으로 지정되며 초와 나노는 무시됩니다. 이 값이 earliest_start_time보다 작으면 자정 이전 또는 이후에 이 템플릿에 의해 생성된 변화가 시작될 수 있습니다.

duration_minutes

int32

이 템플릿에서 생성되는 이동 시간이 고정되어 있습니다.

start_time_increment_minutes

int32

earliest_start_time~latest_start_time 사이에 가능한 시작 시간 집합을 생성하는 데 사용되는 시간 증분 (분)입니다. 예를 들어 가장 빠른 시작 시간이 8:00이고, 가장 늦은 시작 시간이 8:30이고, 시작 시간 증분이 10분인 경우, 이 Shift 템플릿의 가능한 모든 시작 시간은 8:00, 8:10, 8:20, 8:30입니다.

days_off_count_per_week

int32

일주일에 쉬는 날 수가 고정되어 있습니다. 직원이 해당 날짜에 시작하는 교대 근무에 배정되지 않으면 휴일이 주어집니다. 일주일은 7일이며 일요일에 시작됩니다.

event_templates[]

EventTemplate

각 교대 근무의 이벤트를 생성하기 위한 규칙입니다. 지정된 각 이벤트의 각 교대 근무에 정확히 하나의 이벤트가 포함됩니다.

minimum_interevent_gap_minutes

int32

한 이벤트가 끝나고 다음 이벤트가 시작될 때까지 걸리는 최소 시간(분)입니다.

maximum_employee_count

int32

이 템플릿으로 생성된 모든 교대근무에 할당할 수 있는 최대 직원 수입니다.

SolutionStatus

문제 해결사의 응답에 제공된 솔루션 (즉, 일정) 상태입니다.

열거형
SOLUTION_STATUS_UNSPECIFIED 응답의 상태가 지정되지 않았습니다.
FEASIBLE 반환된 일정은 실행할 수 있지만 최적이 아닐 수 있습니다.
OPTIMAL 반환된 일정이 최적입니다.
INFEASIBLE 지정된 제약조건에 실행 가능한 일정이 없습니다. 우선순위 수준이 PRIORITY_MANDATORY인 제약 조건의 하위 집합을 충족할 수 없는 경우 솔버에서 이 값을 반환할 수 있습니다.
NOT_SOLVED 일정을 찾을 수 없습니다.
NOT_SOLVED_DEADLINE_EXCEEDED 지정된 제한 시간 내에 일정을 찾을 수 없습니다.

SolveParameters

교대 근무 일정 예약 문제의 단일 해답을 제어하는 매개변수입니다.

입력란
time_limit

Duration

문제 해결사가 문제에 소비해야 하는 최대 시간입니다. 설정하지 않으면 기본값은 1분입니다.

이 값은 엄격한 제한이 아니며 통신 오버헤드를 고려하지 않습니다. 문제를 해결하기 위한 예상 지연 시간이 이 값을 약간 초과할 수도 있습니다.

SolverConfig

교대 근무 세대 문제를 해결하기 위한 추가 매개변수를 지정합니다.

입력란
time_limit

Duration

문제 해결사가 문제에 소비해야 하는 최대 시간입니다. 설정하지 않으면 기본값은 1분입니다. 시간 제한은 문제의 규모에 따라 선택해야 합니다. 예를 들어 2개의 ShiftTemplates가 있는 7일 인스턴스를 해결할 때 (각각 시작 시간이 최대 20회이고 시작 시간이 약 30회이고 주 2일인 이벤트 2개를 보유하는 경우 권장값은 빠른 솔루션의 경우 10초 미만(그리고 좋은 품질의 경우 10초, 300초), 포괄적인 검색의 경우 300초 이상입니다. 인스턴스가 클수록 시간 제한이 더 길어질 수 있습니다.

이 값은 엄격한 제한이 아니며 통신 오버헤드를 고려하지 않습니다. 문제를 해결하기 위한 예상 지연 시간이 이 값을 약간 초과할 수도 있습니다.

multi_day_schedule

bool

true인 경우 문제 해결사는 여러 교대 근무가 포함된 EmployeeSchedule을 생성합니다 (예: 일주일 단위 일정을 생성하기 위해). 그 밖의 경우에는 각 EmployeeSchedule에 정확히 1개의 교대 근무가 포함됩니다. 수일 단위의 일정은 교대 근무 시작 시간이 요일 간에 동일하다고 가정하고 이러한 일정의 휴일 일수는 교대 근무 템플릿에 의해 결정됩니다. 기본값은 false입니다.

shift_events_can_change

bool

true인 경우 여러 날의 EmployeeSchedule에 일정의 시작 및 종료 시간이 요일별로 다른 교대 근무가 포함될 수 있습니다. 그렇지 않으면 특정 EmployeeSchedule의 모든 교대 근무의 시작 시간과 종료 시간이 동일해야 합니다. 두 경우 모두 여러 날로 구성된 일정의 모든 변경 시작 시간과 종료 시간은 동일합니다. 따라서 multi_day_schedule가 false인 경우 이 매개변수는 무시됩니다. 이 매개변수를 true로 설정하면 해결 시간이 더 길어질 수 있습니다. 기본값은 false입니다.

WorkStatus

직원의 근무 여부

열거형
WORK_STATUS_UNSPECIFIED 알 수 없는 작업 상태입니다.
STATUS_WORK 근무 중인 직원을 나타내는 상태입니다.
STATUS_NOT_WORK 비근무 직원을 나타내는 상태입니다.