索引
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 |
代表非工作員工的狀態。 |