직원 수요를 충족하기 위해 지정된 교대 근무 템플릿에서 교대 근무를 생성하여 주어진 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[] |
각 일정에 할당된 직원 수와 함께 문제 해결사가 생성한 교대 근무 조합입니다. |
SolverConfig
Shift 생성 문제를 해결하기 위한 추가 매개변수를 지정합니다.
JSON 표현 |
---|
{ "timeLimit": string, "multiDaySchedule": boolean, "shiftEventsCanChange": boolean } |
입력란 | |
---|---|
timeLimit |
문제 해결사가 문제에 할애해야 하는 최대 시간입니다. 설정하지 않으면 기본값은 1분입니다. 제한 시간은 문제의 규모에 따라 선택해야 합니다. 예를 들어 각각 시작 시간이 최대 20개이고 시작 시간이 최대 30개인 이벤트 2개를 보유하고 있는 7일 인스턴스를 해결할 때 권장되는 값은 빠른 솔루션의 경우 10초 미만 (최적이 아닐 가능성이 높음), 품질이 우수한 솔루션의 경우 (10초, 300초), 전체 검색의 경우 300초 초과입니다. 이 값은 엄격한 제한이 아니며 통신 오버헤드를 고려하지 않습니다. 문제 해결을 위한 예상 지연 시간은 이 값을 약간 초과할 수 있습니다. 소수점 아래가 최대 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 |
이벤트 종료 날짜 및 시간입니다. 이 값은 분 단위까지 지정되며 초 이하의 단위는 제공되지 않습니다. |