직원 수요를 처리하기 위해 주어진 교대 근무 템플릿에서 교대 근무를 생성하여 주어진 SolveShiftGenerationRequest
에서 교대 근무 세대 문제를 해결합니다.
HTTP 요청
POST https://optimization.googleapis.com/v1/scheduling:solveShiftGeneration
URL은 gRPC 트랜스코딩 구문을 사용합니다.
요청 본문
요청 본문에는 다음과 같은 구조의 데이터가 포함됩니다.
JSON 표현 |
---|
{ "solverConfig": { object ( |
필드 | |
---|---|
solverConfig |
선택사항입니다. 문제 해결사의 매개변수입니다. |
shiftTemplates[] |
필수 항목입니다. 근무 이벤트를 생성하기 위한 규칙을 지정하는 교대 근무 템플릿 모음입니다. |
employeeDemands[] |
필수 항목입니다. |
응답 본문
Shift 세대 문제에 대한 응답입니다. 반환된 solutionStatus
가 SOLVED
이면 솔버가 생성한 유효한 시프트 집합이 employeeSchedules
에 반환됩니다. 유효한 교대 근무 일정의 경우 다음 속성이 보존됩니다.
employeeSchedules
에서 발생한 각 변화는 상응하는ShiftTemplate
에 지정된 규칙을 준수합니다.- 각 교대 근무에서 선택된 각 이벤트는 해당
ShiftTemplate.Event
에 지정된 규칙을 준수합니다. - 동일한 ShiftTemplate에서 생성된 교대 근무 세트에 할당된 총 직원 수가 해당 템플릿의
maximumEmployeeCount
명을 초과하지 않습니다. - 할당된 직원 그룹은 지정된 간격마다 수요를 처리합니다.
성공할 경우 응답 본문에 다음 구조의 데이터가 포함됩니다.
JSON 표현 |
---|
{ "solutionStatus": enum ( |
필드 | |
---|---|
solutionStatus |
반환된 솔루션의 상태입니다. |
employeeSchedules[] |
문제 해결사가 생성한 교대 근무 세트와 각 일정에 할당된 직원 수 |
demandCoverageViolations[] |
지정된 |
SolverConfig
교대 근무 세대 문제를 해결하기 위한 추가 매개변수를 지정합니다.
JSON 표현 |
---|
{ "timeLimit": string, "multiDaySchedule": boolean, "shiftEventsCanChange": boolean } |
필드 | |
---|---|
timeLimit |
문제 해결사가 문제에 소비해야 하는 최대 시간입니다. 설정하지 않으면 기본값은 1분입니다. 시간 제한은 문제의 규모에 따라 선택해야 합니다. 예를 들어 2개의 이 값은 엄격한 제한이 아니며 통신 오버헤드를 고려하지 않습니다. 문제를 해결하기 위한 예상 지연 시간이 이 값을 약간 초과할 수도 있습니다. 소수점 아래가 최대 9자리까지이고 ' |
multiDaySchedule |
true인 경우 문제 해결사는 여러 교대 근무가 포함된 |
shiftEventsCanChange |
true인 경우 여러 날의 |
ShiftTemplate
교대 근무를 생성하기 위한 규칙을 지정하는 템플릿입니다. 교대 근무는 시작 시간과 종료 시간을 지정하는 작업 단위이며 이벤트 (점심, 휴식 등)를 포함할 수도 있습니다. 응답의 특정 날짜에 근무 시간이 할당됩니다.
JSON 표현 |
---|
{ "id": string, "earliestStartTime": { object ( |
필드 | |
---|---|
id |
이 템플릿의 고유 ID입니다. |
earliestStartTime |
하루 중 근무 시간이 가장 이른 시간입니다. 이 값은 시간과 분으로 지정됩니다. 초와 나노는 무시됩니다. |
latestStartTime |
하루 중 근무 시간이 가장 늦은 시간입니다. 이 값은 시간과 분으로 지정됩니다. 초와 나노는 무시됩니다. 이 값이 |
durationMinutes |
이 템플릿에서 생성되는 이동 시간이 고정되어 있습니다. |
startTimeIncrementMinutes |
|
daysOffCountPerWeek |
일주일에 쉬는 날 수가 고정되어 있습니다. 직원이 해당 날짜에 시작하는 교대 근무에 배정되지 않으면 휴일이 주어집니다. 일주일은 7일이며 일요일에 시작됩니다. |
eventTemplates[] |
각 교대 근무의 이벤트를 생성하기 위한 규칙입니다. 지정된 각 이벤트의 각 교대 근무에 정확히 하나의 이벤트가 포함됩니다. |
minimumIntereventGapMinutes |
한 이벤트가 끝나고 다음 이벤트가 시작될 때까지 걸리는 최소 시간(분)입니다. |
maximumEmployeeCount |
이 템플릿으로 생성된 모든 교대근무에 할당할 수 있는 최대 직원 수입니다. |
TimeOfDay
하루 중 특정 시간을 나타냅니다. 날짜와 시간대가 중요하지 않거나 아무 곳으로 지정됩니다. API는 윤초를 허용하도록 선택할 수 있습니다. 관련된 유형은 google.type.Date
및 google.protobuf.Timestamp
입니다.
JSON 표현 |
---|
{ "hours": integer, "minutes": integer, "seconds": integer, "nanos": integer } |
필드 | |
---|---|
hours |
24시간 형식의 시간입니다. 0~23 사이의 값이어야 합니다. API는 비즈니스 종료 시간과 같은 시나리오에서 '24:00:00' 값을 허용하도록 선택할 수 있습니다. |
minutes |
특정 시간의 분입니다. 0~59 사이의 값이어야 합니다. |
seconds |
특정 분의 초입니다. 일반적으로 0~59 사이의 값이어야 합니다. API가 윤초를 허용하는 경우 값에 60을 사용할 수 있습니다. |
nanos |
나노초 단위의 초수입니다. 0~999,999,999 사이의 값이어야 합니다. |
EventTemplate
교대 근무 중에 발생하는 단일 이벤트를 생성하기 위한 규칙을 지정하는 템플릿입니다. 일정은 회의, 휴식, 점심시간 등을 나타낼 수 있습니다.
JSON 표현 |
---|
{ "id": string, "minimumMinutesAfterShiftStart": integer, "maximumMinutesAfterShiftStart": integer, "durationMinutes": integer, "startTimeIncrementMinutes": integer } |
필드 | |
---|---|
id |
이 템플릿의 고유 ID입니다. |
minimumMinutesAfterShiftStart |
교대 근무 시작 후 이 이벤트를 시작할 수 있는 최소 시간(분)입니다. |
maximumMinutesAfterShiftStart |
교대 근무 시작 후 이 이벤트를 시작할 수 있는 최대 시간(분)입니다. |
durationMinutes |
이 이벤트의 고정된 기간(분) |
startTimeIncrementMinutes |
|
EmployeeDemand
지정된 DateTime 간격에 수요를 처리하는 데 필요한 직원 수를 지정합니다.
JSON 표현 |
---|
{ "startDateTime": { object ( |
필드 | |
---|---|
startDateTime |
지정된 수요에 대한 시간 간격의 시작입니다 (해당 시간 포함). 이 값은 분 단위로 판독됩니다. 초이며 더 작은 단위는 모두 무시됩니다. |
endDateTime |
지정된 수요에 대한 시간 간격의 종료 시간입니다 (제외). 이 값은 분 단위로 판독됩니다. 초이며 더 작은 단위는 모두 무시됩니다. |
employeeCount |
이 간격에 대한 수요를 충당하는 데 필요한 직원 수입니다. |
ShiftGenerationSolutionStatus
문제 해결사의 응답에 제공된 솔루션 상태입니다.
열거형 | |
---|---|
SHIFT_GENERATION_SOLUTION_STATUS_UNSPECIFIED |
응답의 상태가 지정되지 않았습니다. |
SHIFT_GENERATION_SOLVED |
문제 해결사가 제공된 시간 제한 내에 해결 방법을 찾았습니다. |
SHIFT_GENERATION_NOT_SOLVED |
문제가 발생하여 문제 해결사가 근무 시간을 생성할 수 없습니다. |
SHIFT_GENERATION_NOT_SOLVED_DEADLINE_EXCEEDED |
주어진 시간 제한 내에 수요를 처리하기 위한 교대 근무를 생성할 수 없습니다. |
EmployeeSchedule
여러 직원에게 할당할 단일 ShiftTemplate
에 해당하는 정렬된 교대 근무 목록입니다.
JSON 표현 |
---|
{
"shiftTemplateId": string,
"shifts": [
{
object ( |
필드 | |
---|---|
shiftTemplateId |
이 교대 근무 세트를 생성하는 데 사용된 템플릿의 ID입니다. |
shifts[] |
|
employeeCount |
수요를 충당하기 위해 이 교대 근무 세트에 배정되어야 하는 직원 수입니다. |
ShiftWithEvents
문제 해결사가 생성한 변화의 고정된 이벤트 목록과 함께 시작일 및 종료일을 지정합니다.
JSON 표현 |
---|
{ "startDateTime": { object ( |
필드 | |
---|---|
startDateTime |
이동 시작 날짜 및 시간입니다. 이 값은 분 단위로 지정됩니다. 초와 작은 단위는 제공되지 않습니다. |
endDateTime |
이동 종료 날짜 및 시간입니다. 이 값은 분 단위로 지정됩니다. 초와 작은 단위는 제공되지 않습니다. |
events[] |
이 이동에 포함된 이벤트 목록으로, |
이벤트
문제 해결사가 생성한 시간 변화에서 특정 이벤트의 시작 및 종료 DateTime을 지정합니다.
JSON 표현 |
---|
{ "eventTemplateId": string, "startDateTime": { object ( |
필드 | |
---|---|
eventTemplateId |
이 이벤트를 생성하는 데 사용된 템플릿의 ID입니다. |
startDateTime |
이벤트의 시작 날짜 및 시간입니다. 이 값은 분 단위로 지정됩니다. 초와 작은 단위는 제공되지 않습니다. |
endDateTime |
이벤트의 종료 날짜 및 시간입니다. 이 값은 분 단위로 지정됩니다. 초와 작은 단위는 제공되지 않습니다. |
DemandCoverageViolation
지정된 간격의 수요 범위 위반을 지정합니다. 직원 수요는 지정된 전체 구간에서 동일합니다.
JSON 표현 |
---|
{ "startDateTime": { object ( |
필드 | |
---|---|
startDateTime |
수요 간격의 시작 날짜 및 시간입니다 (해당 시간 포함). 이 값은 분 단위로 지정됩니다. |
endDateTime |
수요 간격의 종료 날짜 및 시간입니다 (제외). 이 값은 분 단위로 지정됩니다. |
coverageViolation |
지정된 간격 동안의 노출 범위 위반입니다. 양수 값은 수요가 초과되었음을 나타내고 음수 값은 수요가 가려졌음을 나타냅니다. |