索引
Break(訊息)BreakRule(訊息)BudgetRequirement(訊息)CoverageRequirement(訊息)CoverageRequirement.RoleRequirement(訊息)CoverageRequirement.SkillRequirement(訊息)DemandCoverageViolation(訊息)Employee(訊息)EmployeeDemand(訊息)EmployeeSchedule(訊息)EmployeeSchedule.ShiftWithEvents(訊息)EmployeeSchedule.ShiftWithEvents.Event(訊息)EventTemplate(訊息)HourlyContract(訊息)HourlyContract.OvertimePeriod(訊息)Priority(列舉)ResourceConstraint(訊息)SchedulingConstraint(訊息)Shift(訊息)ShiftAssignment(訊息)ShiftGenerationSolutionStatus(列舉)ShiftPreference(訊息)ShiftRequest(訊息)ShiftTemplate(訊息)SolutionStatus(列舉)SolveParameters(訊息)SolverConfig(訊息)WorkStatus(列舉)
休息一下
員工在輪班期間中斷工作的時間範圍。
| 欄位 | |
|---|---|
start_date_time |
休息的開始時間。 |
duration_minutes |
廣告插播的持續時間,以分鐘為單位。 |
BreakRule
決定廣告插播時間點和廣告插播時間點的規則。所有可能的廣告插播清單都會以 rule_increment_minutes 為單位遞增。舉例來說,如果休息規則是從 10:00 到 11:00 開始的 30 分鐘休息時間,而規則增量是 20 分鐘,則視為的中斷點清單為:[10:00, 10:30]、[10:20、10:50]、[10:40]、1.1:10]0、1:10
| 欄位 | |
|---|---|
earliest_start_time |
廣告插播的最早開始時間 (含)。只能設定 |
latest_start_time |
廣告插播的最晚開始時間 (含)。只能設定 |
duration_minutes |
廣告插播的持續時間,以分鐘為單位。 |
rule_increment_minutes |
[選用] 這項廣告插播規則可考慮的所有廣告插播時間,以分鐘為單位遞增。如果沒有設定,預設值為 |
BudgetRequirement
指定時間間隔的預算需求。
| 欄位 | |
|---|---|
total_budget |
指定間隔的總預算。如果優先順序為 如果未設定 |
start_date_time |
套用這筆預算的開始時間。如未指定開始時間,則會設為所有指定位移的最早開始時間。 |
end_date_time |
套用此預算時的結束時間。如未指定結束時間,則會設為所有指定位移的最晚結束時間。 |
priority |
在指定時間範圍內達到預算需求的優先等級。預設優先順序為 請注意,如果這個優先順序高於其他限制優先順序,且 |
CoverageRequirement
防護需求會指定特定時間範圍內和地點,為一組角色和/或技能要求員工人數。特定位置的 DateTime 間隔不得重疊。或者,您也可以提供班表 ID 清單,而非時間範圍和地點。只有可獲派特定角色 (或具備特定技能) 的員工能滿足這項條件。
就特定職務和/或技能而言,如果在指定時間範圍內,至少有 target_employee_count 名以上員工隨時工作 (或shift_ids每次輪班時),就必須滿足保固服務要求。相較之下,如果在時間範圍內的任何時間點 (或shift_ids地區的任何輪班) 工作,則員工人數少於 target_employee_count 名,即屬於違反保固範圍。比 target_employee_count 更多的在職員工仍能滿足這項需求,但解題工具將員工配置的過量降到最低。
| 欄位 | |
|---|---|
start_date_time |
涵蓋範圍規定的開始時間 (含)。如果設定, |
end_date_time |
涵蓋範圍規定的結束時間 (不含)。如果設定, |
location_id |
員工所需地點。 |
shift_ids[] |
在設定之後,角色和技能要求會分別套用至這份清單中的每個輪班 ID。如果 shift_ids 為非空值,則 |
role_requirements[] |
指定時間範圍內指派給指定角色的員工人數。每個角色 ID 最多只能有一個 |
skill_requirements[] |
指定時間內獲派負責任職的指定技能的員工人數。每個技能 ID 最多只能提供一個 |
RoleRequirement
指定時間範圍內指派給指定角色的員工人數。
| 欄位 | |
|---|---|
role_id |
要求的角色 ID。 |
target_employee_count |
指定時間範圍內指派給該角色的員工人數。 |
priority |
這項要求限制的優先等級。所有資源限制的預設優先順序為 |
SkillRequirement
在指定時間範圍內具備特定技能的員工所需人數。
| 欄位 | |
|---|---|
skill_id |
要求技能 ID。 |
target_employee_count |
指定時間內有多少員工具備特定技能。 |
priority |
這項要求限制的優先等級。所有資源限制的預設優先順序為 |
DemandCoverageViolation
指出特定時間間隔違反的需求涵蓋範圍違規情況。整個指定間隔的員工需求都相同。
| 欄位 | |
|---|---|
start_date_time |
需求間隔的開始日期和時間 (含)。這個值可以指定為分鐘。 |
end_date_time |
需求間隔的結束日期和時間 (不含)。這個值可以指定為分鐘。 |
coverage_violation |
在指定時間範圍內違反涵蓋率政策。正值表示需求遭到忽略,負值則代表需求未涵蓋。 |
員工
要排定工作團隊的員工。
| 欄位 | |
|---|---|
id |
指派給這位員工的專屬 ID。 |
role_ids[] |
這位員工可執行的角色 ID。至少須指定一個角色。員工被指派值時,也會同時指派給此清單中的一個角色。在排程期間,系統可能會將員工指派給不同角色。 |
skill_ids[] |
這位員工擁有的技能 ID。這份清單可以留空。指派職務給員工時,員工會在指派輪班期間運用這裡列出的所有技能,滿足相關技能要求。 |
shift_preferences[] |
此員工的輪班偏好。此處指定的輪班代表了員工在表定期間要指派的位班。 |
scheduling_constraints[] |
這位員工的排程限制清單。這些限制的預設優先順序等級為 |
resource_constraints[] |
未在 |
shift_requests[] |
員工的輪班要求清單。您可以為員工指派或非指派到特定輪班。凡是要為員工安排固定時段指派的工作,都能以 |
hourly_contract |
指明員工按時每小時收費的合約。 |
EmployeeDemand
說明在指定日期時間間隔內滿足需求的員工人數。
| 欄位 | |
|---|---|
start_date_time |
指定需求的時間間隔開始時間 (含頭尾)。這些值會讀出到分鐘,秒和所有較小的單位都會遭到忽略。 |
end_date_time |
指定需求的時間間隔結束時間 (不含)。這些值會讀出到分鐘,秒和所有較小的單位都會遭到忽略。 |
employee_count |
滿足這段期間需求的員工人數。 |
EmployeeSchedule
一份經過排序的清單,內容對應至單一 ShiftTemplate,要指派給多名員工。
| 欄位 | |
|---|---|
shift_template_id |
用於產生這組移位的範本 ID。 |
shifts[] |
獲派 |
employee_count |
應該指派給員工人數,以因應需求。 |
ShiftWithEvents
指定開始與結束日期,並列出解題工具產生的位移事件清單。
| 欄位 | |
|---|---|
start_date_time |
轉換的開始日期和時間。這個值會指定為分,秒和較小的單位。 |
end_date_time |
轉換的結束日期和時間。這個值會指定為分,秒和較小的單位。 |
events[] |
此轉變中包含且與 |
活動
在解題工具產生的偏移中,指定特定事件的開始與結束 DateTime。
| 欄位 | |
|---|---|
event_template_id |
用於產生此事件的範本 ID。 |
start_date_time |
事件的開始日期和時間。這個值會指定為分,秒和較小的單位。 |
end_date_time |
事件的結束日期和時間。這個值會指定為分,秒和較小的單位。 |
EventTemplate
範本指定規則,用於產生位移期間發生的單一事件。活動可以代表會議、休息時間、午餐等等。
| 欄位 | |
|---|---|
id |
此範本的專屬 ID。 |
minimum_minutes_after_shift_start |
此事件開始的改變之後的最少分鐘數。 |
maximum_minutes_after_shift_start |
這項活動可在位移開始後開始的分鐘數 (以分鐘為單位)。 |
duration_minutes |
此事件的固定時間長度 (以分鐘為單位)。 |
start_time_increment_minutes |
用於產生介於 |
HourlyContract
指定基本每小時費率、匯率差異和加時係數,以判斷員工的薪酬。請注意,不同地點的法規可能需要分別計算加班報酬。這個解題工具可用來估算過渡期補償,藉此降低總成本或達到預算的金額 (請參閱 BudgetRequirement)。此功能並非用來計算薪資的工具。
| 欄位 | |
|---|---|
base_hourly_rate |
非加班時數的補償。如果員工適用多種費率,則會根據這個基本每小時費率計算費率差異。此外,如果有多個費率,基本每小時費率應為這些費率的最低值。 |
hourly_rate_shift_differentials |
根據 |
overtime_periods[] |
所有必須計算超時期間的清單。這些時段不得重疊。 |
OvertimePeriod
固定且定期 (通常為 168 小時或連續 24 小時的 7 個訂閱週期) 週期,用於決定加班薪酬金額。每個週期都有加時係數 (例如1.5) 以相對於 base_hourly_rate,且視為一般 (非加班) 工作的時數限制。任何與 start_date_time (含) 和 end_date_time (不含) 時間範圍重疊的位移,都會計入指定時間範圍內的總時數。如果只有重疊的時段,系統只會計算重疊的時段。
| 欄位 | |
|---|---|
overtime_multiplier |
計算長期每小時費率的乘數 (必須大於或等於 1.0)。每小時加班費用通常會以 |
start_date_time |
延長賽的開始時間。如果這次的位移時間重疊,這類位移的總時數就會從 |
end_date_time |
延長賽的結束時間。如果這次的位移時間重疊,這類調節時間的時數就會計入 |
maximum_regular_hours |
以一般 (非加班) 費率支付的工作時數上限。數量必須為正數。 |
優先順序
員工時間表或防護需求方面的限制優先等級。包括 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 |
這項資源限制的優先順序等級。所有資源限制的預設優先順序為 |
resource_usages |
班表使用的資源量。例如,如果此限制適用於某位員工在特定週可工作的時間下限和上限,則此地圖將包含當週發生的變動,以及每個輪班的時間 (以小時為單位)。 |
minimum_resource_usage |
要滿足資源限制的最低資源用量。 |
maximum_resource_usage |
滿足資源限制的資源用量上限。 |
SchedulingConstraint
特定員工的具體排程限制。指定的限制只會在指定的間隔 [start_date_time,
end_date_time) 期間套用。
| 欄位 | |
|---|---|
priority |
這個排程限制的優先等級。所有排程限制的預設優先順序為 |
start_date_time |
套用這項排程限制的開始時間 (含)。 |
end_date_time |
這項排程限制生效時的結束時間 (不含)。 |
聯集欄位 type。指定的限制類型。每項限制都只會在上方指定的時間範圍內套用。type 只能是下列其中一項: |
|
minimum_minutes |
員工至少能工作幾分鐘。如果員工獲派的輪班時間與時間範圍重疊 (完全或部分),則該位移與時間範圍重疊的分鐘數會納入計算。 |
maximum_minutes |
員工在時間範圍內可工作的分鐘數上限。如果員工獲派的輪班時間與時間範圍重疊 (完全或部分),則該位移與時間範圍重疊的分鐘數會納入計算。 |
minimum_consecutive_work_days |
至少員工可以連續工作的天數。如果員工被分配在當天開始的輪班,就會在特定日期進行工作。這段期間內指派給員工的任何輪班都會計入這項數據。 |
maximum_consecutive_work_days |
員工可連續工作的天數上限。如果員工被分配在當天開始的輪班,就會在特定日期進行工作。這段期間內指派給員工的任何輪班都會計入這項數據。 |
minimum_shift_count |
員工可進行的輪班次數下限。任何與職員完全重疊的輪班,都會計入這個次數。 |
maximum_shift_count |
員工可進行的輪班次數上限。任何與職員完全重疊的輪班,都會計入這個次數。 |
minimum_rest_minutes |
兩次輪班後,員工必須至少停留幾分鐘的時間,才能分配到其他輪班。這項限制適用於 [ |
Shift
班表是指員工在一段固定的期間內工作。
| 欄位 | |
|---|---|
id |
指派給這個變動的專屬 ID。 |
location_id |
這項變動生效的地區 ID。這個參數可以留空。 |
start_date_time |
變動的開始時間 (含頭尾)。 |
end_date_time |
變動的結束時間 (不含)。解題工具目前僅允許長度小於 24 小時的位移。 |
break_rules[] |
在轉移期間發生的破壞規則清單。執行這項轉變的員工每 |
ShiftAssignment
員工擔任輪班指派。
| 欄位 | |
|---|---|
employee_id |
指派的員工 ID。 |
shift_id |
指派給員工的班表 ID。 |
role_id |
員工為輪班指派的角色 ID。 |
breaks[] |
這份排班指派的間隔清單。 |
ShiftGenerationSolutionStatus
解題工具回應中提供的解決方案狀態。
| 列舉 | |
|---|---|
SHIFT_GENERATION_SOLUTION_STATUS_UNSPECIFIED |
回應的狀態不明。 |
SHIFT_GENERATION_SOLVED |
解題工具在規定的時間限制內找到解決方案。 |
SHIFT_GENERATION_NOT_SOLVED |
發生問題,導致解題工具無法產生位移。 |
SHIFT_GENERATION_NOT_SOLVED_DEADLINE_EXCEEDED |
無法產生價格調整,以因應指定時限內的需求。 |
ShiftPreference
特定偏移 ID 的數值偏好設定。
| 欄位 | |
|---|---|
shift_id |
指定偏好設定的 Shift ID。 |
preference |
較高的偏好值表示更理想的偏移值。 |
ShiftRequest
將員工的要求分配或未指派給特定輪班。
| 欄位 | |
|---|---|
priority |
此排程要求的優先等級。所有排程要求的預設優先順序為 |
shift_ids[] |
排程要求的轉移 ID。 |
type |
要求類型,例如是否指派要求給這組位移。 |
ShiftTemplate
指定產生位移規則的範本。輪班是一組工作,指明開始時間和結束時間,且可能含有活動 (例如午餐、休息時間等)。系統會將位移指派給回覆中的特定日期。
| 欄位 | |
|---|---|
id |
此範本的專屬 ID。 |
earliest_start_time |
一天內開始輪班的最早時間。此值指定的時長包含小時和分鐘,會忽略秒數和 nano。 |
latest_start_time |
一天內開始輪值的時間。此值指定的時長包含小時和分鐘,會忽略秒數和 nano。如果這個值小於 |
duration_minutes |
修正這個範本產生的位移持續時間。 |
start_time_increment_minutes |
用於產生介於 |
days_off_count_per_week |
固定每週休假天數。如果員工未獲派當天的輪班,則員工有指定休息日。一週是 7 天,從星期日開始。 |
event_templates[] |
每個班次產生事件的規則。在每個指定事件的轉變中,只會納入一個事件。 |
minimum_interevent_gap_minutes |
事件開始後至少需要幾分鐘。 |
maximum_employee_count |
可指派給這個範本產生所有輪班的員工人數上限。 |
SolutionStatus
解題工具回應中提供的解決方案 (亦即時間表) 狀態。
| 列舉 | |
|---|---|
SOLUTION_STATUS_UNSPECIFIED |
回應的狀態不明。 |
FEASIBLE |
系統回傳的時間表可行,但可能並未達到最佳設定。 |
OPTIMAL |
傳回的時間表是最佳設定。 |
INFEASIBLE |
指定的限制沒有可行的排程。如果無法滿足優先等級 PRIORITY_MANDATORY 的任一限制,解析器可能會傳回這個值。 |
NOT_SOLVED |
找不到任何排程。 |
NOT_SOLVED_DEADLINE_EXCEEDED |
在指定時間範圍內找不到任何排程。 |
SolveParameters
用於控制排班排程問題單解的參數。
| 欄位 | |
|---|---|
time_limit |
解題工具應在問題上花費的時間上限。如果未設定,預設為 1 分鐘。 這個值並非硬性上限,且不會計入通訊負荷。解決問題的預期延遲時間可能會稍微超過這個值。 |
SolverConfig
指定其他參數以解決位移產生問題。
| 欄位 | |
|---|---|
time_limit |
解題工具應在問題上花費的時間上限。如果未設定,預設為 1 分鐘。選擇時間限制應取決於問題的大小。舉例來說,如果要用 2 這個值並非硬性上限,且不會計入通訊負荷。解決問題的預期延遲時間可能會稍微超過這個值。 |
multi_day_schedule |
如果為 true,解析器會產生包含數個輪班的 |
shift_events_can_change |
如果為 true,多日 |
WorkStatus
員工是否正常運作。
| 列舉 | |
|---|---|
WORK_STATUS_UNSPECIFIED |
工作狀態不明。 |
STATUS_WORK |
工作員工的狀態。 |
STATUS_NOT_WORK |
代表非工作員工的狀態。 |