Giải quyết vấn đề khắc phục vấn đề về việc lên lịch ca làm việc từ SolveShiftSchedulingRequest
đã cho bằng cách phân công nhân viên vào các ca làm việc sao cho lựa chọn ưu tiên về việc lên lịch của nhân viên được tối đa hoá và giảm thiểu các trường hợp vi phạm giới hạn về việc lên lịch.
Yêu cầu HTTP
POST https://optimization.googleapis.com/v1/scheduling:solveShiftScheduling
URL sử dụng cú pháp Chuyển mã gRPC.
Nội dung yêu cầu
Nội dung yêu cầu chứa dữ liệu có cấu trúc sau:
Biểu diễn dưới dạng JSON |
---|
{ "requestId": string, "solveParameters": { object ( |
Trường | |
---|---|
requestId |
Mã yêu cầu hoặc sự cố có vấn đề. |
solveParameters |
Các tham số để kiểm soát một bài toán duy nhất. |
employees[] |
Tất cả nhân viên hiện có sẽ được lên lịch. |
shifts[] |
Tất cả các ca làm việc để lập lịch biểu. |
coverageRequirements[] |
Yêu cầu về mức độ phù hợp cho toàn bộ phạm vi lập kế hoạch. Quy tắc này chỉ định số lượng nhân viên phải thực hiện từng vai trò hoặc có kỹ năng trong khoảng thời gian hoặc danh sách mã ca làm việc. Tất cả các yêu cầu về mức độ sử dụng phải được chỉ định cùng với khung thời gian hoặc danh sách mã ca làm việc (nhưng không được chỉ định cả hai). Khoảng thời gian (nếu có) cho các yêu cầu về phạm vi bao phủ không được trùng lặp ở từng vị trí cụ thể. Mức độ ưu tiên mặc định cho từng điều kiện ràng buộc này là |
roleIds[] |
Danh sách tất cả vai trò có thể có trong lực lượng lao động. Mỗi nhân viên phải có ít nhất một vai trò mà họ có thể được chỉ định cho một ca làm việc. Vai trò là một công việc cụ thể được phân công trong ca làm việc (chẳng hạn như y tá đã đăng ký kinh doanh, đầu bếp điều hành, phục vụ bàn, v.v.). Khi một nhân viên được phân công ca làm việc, họ cũng được chỉ định một vai trò cụ thể. |
skillIds[] |
Danh sách tất cả các kỹ năng có thể có trong lực lượng lao động. Kỹ năng là bất kỳ bằng cấp nào mà một nhân viên có thể có mà không liên quan đến một công việc được giao cụ thể (ví dụ: chứng chỉ, ngôn ngữ nói, v.v.). Danh sách này có thể trống. Khi một nhân viên được phân công vào ca làm việc, họ phải hoàn thành mọi kỹ năng cần thiết cho ca làm việc đó. |
locationIds[] |
Danh sách tất cả vị trí có thể thực hiện các ca thay đổi trong lịch biểu. Danh sách này có thể trống. Việc chỉ định các vị trí khác nhau có thể hữu ích khi người quản lý y tá muốn lên lịch cho nhiều y tá ở nhiều bộ phận tại một bệnh viện hoặc một ví dụ khác là người quản lý khách sạn muốn lên lịch cho nhân viên ở nhiều khách sạn. |
budgetRequirements[] |
Đặc tả ngân sách cho vấn đề về việc lập lịch. Mức độ ưu tiên mặc định cho từng yêu cầu này là |
assignmentsHint[] |
Thay đổi các bài tập để sử dụng làm giải pháp dự kiến (còn gọi là gợi ý giải pháp) cho bài toán về việc lên lịch. Gợi ý chỉ định sẽ bị bỏ qua nếu việc chỉ định mâu thuẫn với một ca làm việc không thể chỉ định hoặc một yêu cầu lên lịch. |
Nội dung phản hồi
Phản hồi cho API lên lịch cho lực lượng lao động. Đối với mỗi phản hồi, shiftAssignments
sẽ trống nếu solutionStatus
trả về là NOT_SOLVED_DEADLINE_EXCEEDED
hoặc INFEASIBLE
. Nếu solutionStatus
được trả về là OPTIMAL
hoặc FEASIBLE
, thì một lượt chỉ định ca làm việc hợp lệ sẽ được trả về trong shiftAssignments
. Để chỉ định ca làm việc hợp lệ, các thuộc tính sau sẽ giữ nguyên:
- Mỗi mã nhân viên nằm trong nhóm nhân viên được cung cấp trong yêu cầu.
- Mỗi mã vai trò được chỉ định cho nhân viên đó sẽ có trong tập hợp mã vai trò của nhân viên đó.
- Mỗi mã ca làm việc nằm trong tập hợp các ca làm việc được đưa ra trong yêu cầu.
- Mỗi mã ca làm việc không phải là một trong các mã ca làm việc không thể chỉ định cho một nhân viên cụ thể.
- Một nhân viên sẽ không bao giờ được phân vào hai ca làm việc chồng chéo nhau.
- Đối với lịch biểu đã cho, không có điều kiện ràng buộc hoặc yêu cầu nào có mức độ ưu tiên
PRIORITY_MANDATORY
bị vi phạm.
Nếu thành công, phần nội dung phản hồi sẽ chứa dữ liệu có cấu trúc sau:
Biểu diễn dưới dạng JSON |
---|
{ "requestId": string, "solutionStatus": enum ( |
Trường | |
---|---|
requestId |
Mã của yêu cầu liên kết với phản hồi này. |
solutionStatus |
Trạng thái của giải pháp được trả về. Nếu giải pháp không FEASIBLE hoặc OPTIMAL, các trường khác trong proto này có thể trống. Nếu trạng thái là NOT_SOLVED_DEADLINE_EXCEEDED, tức là đã đạt đến giới hạn thời gian mà không tìm thấy giải pháp khả thi hoặc không xác định được giải pháp khả thi hay không. Yêu cầu có thể không khả thi nếu không đáp ứng được tất cả các ràng buộc của mức độ ưu tiên BẮT BUỘC. |
shiftAssignments[] |
Danh sách tất cả bài tập. Mỗi |
statusMessage |
Nếu |
SolveParameters
Các tham số kiểm soát một giải pháp duy nhất của vấn đề lên lịch ca làm việc.
Biểu diễn dưới dạng JSON |
---|
{ "timeLimit": string } |
Trường | |
---|---|
timeLimit |
Thời gian tối đa mà trình giải toán cần dành cho bài toán. Nếu bạn không đặt chính sách này, chế độ cài đặt mặc định sẽ là 1 phút. Giá trị này không phải là giới hạn cố định và không tính đến chi phí truyền thông. Độ trễ dự kiến để giải quyết vấn đề có thể vượt quá giá trị này một chút. Thời lượng tính bằng giây với tối đa 9 chữ số thập phân, kết thúc bằng " |
Nhân viên
Một nhân viên trong lực lượng lao động được lên lịch làm việc.
Biểu diễn dưới dạng JSON |
---|
{ "id": string, "roleIds": [ string ], "skillIds": [ string ], "shiftPreferences": [ { object ( |
Trường | |
---|---|
id |
Mã nhận dạng duy nhất được gán cho nhân viên này. |
roleIds[] |
Mã vai trò mà nhân viên này có thể thực hiện. Bạn phải chỉ định ít nhất một vai trò. Khi một nhân viên được phân công ca làm việc, họ cũng được chỉ định một vai trò duy nhất trong danh sách này. Nhân viên này có thể được chỉ định vai trò khác nhau trong khung thời gian lên lịch. |
skillIds[] |
Mã kỹ năng mà nhân viên này sở hữu. Danh sách này có thể trống. Khi một nhân viên được phân công ca làm việc, họ sẽ sử dụng bất kỳ kỹ năng nào trong danh sách ở đây để đáp ứng các yêu cầu về kỹ năng trong suốt ca làm việc được giao. |
shiftPreferences[] |
Lựa chọn ưu tiên về ca làm việc của nhân viên này. Các ca làm việc được chỉ định ở đây thể hiện những ca làm việc mà nhân viên muốn được chỉ định trong khung thời gian lên lịch. Mã chuyển đổi được chỉ định trong |
schedulingConstraints[] |
Danh sách các quy tắc ràng buộc khi lên lịch cho nhân viên này. Mức độ ưu tiên mặc định cho từng điều kiện ràng buộc này là |
resourceConstraints[] |
Bạn có thể thêm mọi quy tắc ràng buộc khác về việc lập lịch chưa được chỉ định trong |
shiftRequests[] |
Danh sách yêu cầu ca làm việc của nhân viên. Yêu cầu đó có thể là cho phép hoặc không phân công một nhân viên vào các ca làm việc cụ thể. Mọi hoạt động phân công theo lịch cố định cho nhân viên đều có thể được biểu thị bằng |
hourlyContract |
Hợp đồng quy định mức giá làm việc theo giờ thường và làm thêm giờ cho nhân viên. |
ShiftPreference
Lựa chọn ưu tiên dạng số cho một mã thay đổi cụ thể.
Biểu diễn dưới dạng JSON |
---|
{ "shiftId": string, "preference": integer } |
Trường | |
---|---|
shiftId |
Mã thay đổi mà tuỳ chọn được chỉ định. |
preference |
Giá trị ưu tiên lớn hơn biểu thị sự thay đổi mong muốn hơn. |
SchedulingConstraint
Quy tắc ràng buộc cụ thể về việc lập lịch biểu cho một nhân viên cụ thể. Giới hạn đã chỉ định chỉ được áp dụng trong khoảng thời gian [startDateTime,
endDateTime)
nhất định.
Biểu diễn dưới dạng JSON |
---|
{ "priority": enum ( |
Trường | |
---|---|
priority |
Mức độ ưu tiên cho quy tắc ràng buộc về việc lập lịch này. Mức độ ưu tiên mặc định cho tất cả các quy tắc ràng buộc về việc lập lịch là |
startDateTime |
Thời gian bắt đầu khi áp dụng quy tắc ràng buộc về việc lập lịch này (bao gồm). |
endDateTime |
Thời gian kết thúc khi áp dụng quy tắc ràng buộc về lịch này (loại trừ). |
Trường hợp type . Loại quy tắc ràng buộc đang được chỉ định. Mỗi quy tắc ràng buộc chỉ được áp dụng trong khoảng thời gian được chỉ định ở trên. type chỉ có thể là một trong những trạng thái sau: |
|
minimumMinutes |
Số phút tối thiểu nhân viên có thể làm việc. Nếu nhân viên được phân công vào một ca làm việc trùng lặp (toàn bộ hoặc một phần) khoảng thời gian, thì số phút mà ca làm việc trùng lặp với khoảng thời gian này sẽ được tính vào số phút này. |
maximumMinutes |
Số phút tối đa mà nhân viên có thể làm việc trong khung thời gian. Nếu nhân viên được phân công vào một ca làm việc trùng lặp (toàn bộ hoặc một phần) khoảng thời gian, thì số phút mà ca làm việc trùng lặp với khoảng thời gian này sẽ được tính vào số phút này. |
minimumConsecutiveWorkDays |
Số ngày liên tục tối thiểu mà nhân viên có thể làm việc. Một nhân viên làm việc vào một ngày cụ thể nếu họ được phân công làm việc vào một ngày cụ thể bắt đầu vào ngày đó. Mọi ca làm việc mà nhân viên được phân công bắt đầu trong khoảng thời gian này đều được tính vào số liệu này. |
maximumConsecutiveWorkDays |
Số ngày liên tục tối đa mà nhân viên có thể làm việc. Một nhân viên làm việc vào một ngày cụ thể nếu họ được phân công làm việc vào một ngày cụ thể bắt đầu vào ngày đó. Mọi ca làm việc mà nhân viên được phân công bắt đầu trong khoảng thời gian này đều được tính vào số liệu này. |
minimumShiftCount |
Số ca làm việc tối thiểu mà nhân viên có thể làm việc. Mọi ca làm việc mà nhân viên được phân công trùng lặp hoàn toàn với khoảng thời gian đều được tính vào số liệu này. |
maximumShiftCount |
Số ca làm việc tối đa mà nhân viên có thể làm việc. Mọi ca làm việc mà nhân viên được phân công trùng lặp hoàn toàn với khoảng thời gian đều được tính vào số liệu này. |
minimumRestMinutes |
Số phút tối thiểu mà nhân viên phải nghỉ sau khi kết thúc một ca làm việc trước khi được chỉ định sang ca làm việc khác. Quy tắc ràng buộc này áp dụng cho mọi cặp lượt chuyển được đưa vào đầy đủ [ |
Mức độ ưu tiên
Mức ưu tiên đối với mọi quy tắc ràng buộc đối với lịch làm việc của nhân viên hoặc các yêu cầu về mức độ phù hợp. Các lựa chọn này bao gồm SchedulingConstraint
, ResourceConstraint
, ShiftRequest
và CoverageRequirement
. Vì có thể có các quy tắc ràng buộc xung đột, nên không phải lúc nào bạn cũng có thể đáp ứng mọi quy tắc ràng buộc. Do đó, mỗi loại quy tắc ràng buộc có một mức độ ưu tiên (do người dùng hoặc giá trị mặc định đưa ra) để thông báo cho trình giải toán về tầm quan trọng tương đối của tất cả quy tắc ràng buộc được cung cấp cho một lịch biểu hoàn chỉnh.
Enum | |
---|---|
PRIORITY_UNSPECIFIED |
Mức độ ưu tiên không xác định. |
PRIORITY_LOW |
Mức độ ưu tiên thấp nhất. Các quy tắc ràng buộc có mức độ ưu tiên này ít quan trọng hơn so với các quy tắc ràng buộc khác. Đây là những lỗi vi phạm đầu tiên được xem xét vi phạm nếu không tìm thấy giải pháp khả thi. |
PRIORITY_MEDIUM |
Mức độ ưu tiên trung bình. Các quy tắc ràng buộc có mức độ ưu tiên này quan trọng hơn các quy tắc ràng buộc có mức độ ưu tiên PRIORITY_LOW nhưng ít quan trọng hơn các quy tắc ràng buộc có mức độ ưu tiên PRIORITY_HIGH . Nếu không tìm thấy giải pháp khả thi sau khi nới lỏng tất cả các quy tắc ràng buộc với mức độ ưu tiên PRIORITY_LOW , thì các điều kiện ràng buộc có mức độ ưu tiên PRIORITY_MEDIUM sẽ được xem xét lần tiếp theo đối với lỗi vi phạm. |
PRIORITY_HIGH |
Mức độ ưu tiên cao nhất. Các hạn chế có mức độ ưu tiên này là quan trọng nhất. Đây là những lỗi vi phạm cuối cùng nếu hệ thống không tìm thấy giải pháp khả thi sau khi nới lỏng các quy tắc hạn chế của mức độ ưu tiên thấp hơn. |
PRIORITY_MANDATORY |
Mức độ ưu tiên thể hiện nội dung mà trình giải quyết không thể vi phạm. Nếu trình giải toán đang trả về SolutionStatus.INFEASIBLE , thì điều này có thể là do có quá nhiều điều kiện ràng buộc với PRIORITY_MANDATORY . |
ResourceConstraint
Một quy tắc ràng buộc chung giới hạn số lượng "tài nguyên" nhất định mà một nhân viên sử dụng. Đây là phiên bản trừu tượng của SchedulingConstraint
cụ thể hơn, linh hoạt hơn cho người dùng. Bạn có thể chỉ định nhiều quy tắc ràng buộc về việc lập lịch không thể chỉ định trong SchedulingConstraint.type
bằng thông báo này.
Biểu diễn dưới dạng JSON |
---|
{
"priority": enum ( |
Trường | |
---|---|
priority |
Mức độ ưu tiên của quy tắc ràng buộc tài nguyên này. Mức độ ưu tiên mặc định cho tất cả các điều kiện ràng buộc về tài nguyên là |
resourceUsages |
Lượng tài nguyên được sử dụng theo ca làm việc. Ví dụ: nếu giới hạn này áp dụng cho số giờ làm việc tối thiểu và tối đa mà một nhân viên làm việc trong một tuần cụ thể, thì bản đồ này sẽ chứa các ca làm việc trong tuần đó và thời lượng của mỗi ca làm việc tính theo giờ. Đối tượng chứa danh sách các cặp |
minimumResourceUsage |
Mức sử dụng tài nguyên tối thiểu để đáp ứng quy tắc ràng buộc về tài nguyên. |
maximumResourceUsage |
Mức sử dụng tài nguyên tối đa để đáp ứng quy tắc ràng buộc về tài nguyên. |
ShiftRequest
Yêu cầu phân công hoặc không phân công các ca làm việc cụ thể của nhân viên.
Biểu diễn dưới dạng JSON |
---|
{ "priority": enum ( |
Trường | |
---|---|
priority |
Mức độ ưu tiên của yêu cầu lên lịch này. Mức độ ưu tiên mặc định cho tất cả các yêu cầu lên lịch là |
shiftIds[] |
Mã ca làm việc của yêu cầu lên lịch. |
type |
Loại yêu cầu, ví dụ: yêu cầu có được chỉ định hay không được chỉ định cho nhóm ca làm việc. |
WorkStatus
Nhân viên có đang làm việc hay không.
Enum | |
---|---|
WORK_STATUS_UNSPECIFIED |
Trạng thái công việc không xác định. |
STATUS_WORK |
Trạng thái đại diện cho một nhân viên đang làm việc. |
STATUS_NOT_WORK |
Trạng thái đại diện cho một nhân viên không làm việc. |
HourlyContract
Chỉ định mức lương theo giờ cơ bản, hệ số chênh lệch giá và hệ số làm thêm giờ để xác định khoản thù lao cho một nhân viên. Xin lưu ý rằng các quy định ở mỗi nơi có thể yêu cầu cách tính tiền thù lao làm thêm giờ theo cách khác. Trình giải toán ước tính khoản bù giờ làm thêm để giảm thiểu tổng chi phí hoặc đáp ứng ngân sách (xem BudgetRequirement
). Đây không phải là công cụ tính toán bảng lương.
Biểu diễn dưới dạng JSON |
---|
{
"baseHourlyRate": number,
"hourlyRateShiftDifferentials": {
string: number,
...
},
"overtimePeriods": [
{
object ( |
Trường | |
---|---|
baseHourlyRate |
Tiền thù lao cho việc làm thêm giờ. Nếu nhân viên áp dụng nhiều mức giá, thì mức chênh lệch giá sẽ được áp dụng tương ứng với mức giá cơ bản theo giờ này. Ngoài ra, nếu có nhiều mức giá, thì mức giá cơ bản theo giờ phải là mức tối thiểu trong các mức giá này. |
hourlyRateShiftDifferentials |
Mức chênh lệch theo giờ, được thanh toán bằng Đối tượng chứa danh sách các cặp |
overtimePeriods[] |
Danh sách tất cả các khoảng thời gian phải tính thời gian bù giờ. Các khoảng thời gian này không được trùng lặp. |
OvertimePeriod
Một khoảng thời gian cố định và định kỳ thường xuyên (thường là 168 giờ hoặc 7 khoảng thời gian 24 giờ liên tiếp) được dùng để xác định số tiền bồi thường ngoài giờ. Mỗi giai đoạn sẽ có một hệ số làm thêm thời gian (ví dụ: 1.5) tương ứng với baseHourlyRate
và giới hạn về số giờ được coi là làm việc thông thường (không làm thêm giờ). Mọi lượt chuyển đổi trùng lặp với khoảng thời gian startDateTime
(bao gồm) và endDateTime
(không bao gồm) sẽ được tính vào tổng số giờ làm việc trong khoảng thời gian đó. Nếu sự trùng lặp là một phần, chỉ những giờ trùng lặp mới được tính.
Biểu diễn dưới dạng JSON |
---|
{ "overtimeMultiplier": number, "startDateTime": { object ( |
Trường | |
---|---|
overtimeMultiplier |
Hệ số để tính tỷ lệ làm thêm giờ (phải lớn hơn hoặc bằng 1). Mức phí theo giờ làm thêm thường sẽ được tính là |
startDateTime |
Thời gian bắt đầu của hiệp phụ. Nếu một ca làm việc trùng lặp vào lần này, thì số giờ của ca làm việc đó sẽ được tính từ |
endDateTime |
Thời gian kết thúc của hiệp phụ. Nếu một ca làm việc trùng lặp vào lần này, thì số giờ của một ca làm việc như vậy sẽ được tính tối đa là |
maximumRegularHours |
Số giờ làm việc tối đa được trả theo tỷ lệ thông thường (không làm thêm giờ). Số lượng này phải là số dương. |
Shift
Ca làm việc chỉ định một khoảng thời gian cố định mà nhân viên có thể làm việc.
Biểu diễn dưới dạng JSON |
---|
{ "id": string, "locationId": string, "startDateTime": { object ( |
Trường | |
---|---|
id |
Mã nhận dạng duy nhất được chỉ định cho ca làm việc này. |
locationId |
Mã vị trí có yêu cầu thay đổi này diễn ra. Bạn có thể để trống trường này. |
startDateTime |
Thời gian bắt đầu ca làm việc (bao gồm cả thời gian này). |
endDateTime |
Thời gian kết thúc ca làm việc (không bao gồm). Hiện tại, trình giải quyết chỉ cho phép những ca làm việc có thời lượng dưới 24 giờ. |
breakRules[] |
Danh sách các quy tắc chèn xuất hiện trong quá trình chuyển. Nhân viên thực hiện ca làm việc này được chỉ định một khoảng nghỉ mỗi |
BreakRule
Quy tắc xác định thời điểm nghỉ giải lao có thể bắt đầu trong một ca làm việc và khoảng thời gian của giai đoạn này. Danh sách tất cả các điểm chèn có thể được xem xét được xác định theo gia số ruleIncrementMinutes
. Ví dụ: nếu quy tắc ngắt đang lập mô hình thời gian nghỉ 30 phút có thể bắt đầu trong khoảng thời gian từ 10:00 đến 11:00 và khoảng thời gian của quy tắc là 20 phút thì danh sách các điểm chèn được xem xét là: [10:00, 10:30], [10:20, 10:50], [10:10:1,1]
Biểu diễn dưới dạng JSON |
---|
{ "earliestStartTime": { object ( |
Trường | |
---|---|
earliestStartTime |
Thời gian bắt đầu sớm nhất của điểm chèn quảng cáo (bao gồm cả thời gian này). Bạn chỉ có thể đặt |
latestStartTime |
Thời gian bắt đầu gần nhất của điểm chèn quảng cáo (bao gồm cả thời gian này). Bạn chỉ có thể đặt |
durationMinutes |
Thời lượng của điểm chèn tính bằng phút. |
ruleIncrementMinutes |
[Không bắt buộc] Mức tăng thời gian tính theo phút cho tất cả các điểm chèn có thể được xem xét trong quy tắc điểm chèn này. Nếu bạn không đặt chính sách này, chế độ cài đặt mặc định sẽ là |
CoverageRequirement
Yêu cầu về phạm vi bao phủ chỉ định số lượng nhân viên cần thiết cho một nhóm vai trò và/hoặc kỹ năng trong một khoảng thời gian cụ thể và tại một vị trí nhất định. Các khoảng thời gian ngày giờ tại một vị trí cụ thể không được trùng lặp. Ngoài ra, bạn có thể cung cấp danh sách mã ca làm việc thay vì khoảng thời gian và vị trí. Chỉ những nhân viên có thể được chỉ định vai trò cụ thể (hoặc có kỹ năng cụ thể) mới có thể đáp ứng yêu cầu này.
Đối với một vai trò và/hoặc kỹ năng nhất định, yêu cầu về phạm vi bảo hiểm được đáp ứng khi có ít nhất targetEmployeeCount
nhân viên đang làm việc tại mỗi thời điểm trong khung thời gian (hoặc mỗi ca làm việc trong shiftIds
). Ngược lại, yêu cầu về phạm vi bảo hiểm bị vi phạm nếu tại bất kỳ thời điểm nào trong khung thời gian (hoặc đối với bất kỳ ca làm việc nào trong shiftIds
), có ít hơn targetEmployeeCount
nhân viên làm việc trong khung thời gian đó. Số lượng nhân viên làm việc nhiều hơn targetEmployeeCount
vẫn đáp ứng yêu cầu, nhưng trình giải quyết sẽ giảm thiểu tình trạng quá nhiều nhân sự.
Biểu diễn dưới dạng JSON |
---|
{ "startDateTime": { object ( |
Trường | |
---|---|
startDateTime |
Thời gian bắt đầu đáp ứng yêu cầu về mức độ phù hợp (bao gồm cả thời gian này). Nếu đặt, |
endDateTime |
Thời gian kết thúc đối với yêu cầu về mức độ phù hợp (không bao gồm). Nếu đặt, |
locationId |
Địa điểm cần nhân viên. |
shiftIds[] |
Nếu bạn đặt chính sách này, thì các yêu cầu về vai trò và kỹ năng sẽ được áp dụng riêng cho mỗi mã ca làm việc trong danh sách này. Nếu shiftId không trống, thì |
roleRequirements[] |
Số lượng nhân viên cần thiết được chỉ định cho các vai trò đã chỉ định trong khoảng thời gian này. Bạn phải cung cấp tối đa một |
skillRequirements[] |
Số lượng nhân viên cần thiết có các kỹ năng cụ thể được chỉ định làm ca trong khoảng thời gian này. Bạn phải cung cấp tối đa một |
RoleRequirement
Số lượng nhân viên cần thiết được chỉ định vai trò đã chỉ định trong khoảng thời gian này.
Biểu diễn dưới dạng JSON |
---|
{
"roleId": string,
"targetEmployeeCount": integer,
"priority": enum ( |
Trường | |
---|---|
roleId |
Mã vai trò đáp ứng yêu cầu. |
targetEmployeeCount |
Số lượng nhân viên mong muốn được chỉ định vai trò này trong khung thời gian. |
priority |
Mức độ ưu tiên cho quy tắc ràng buộc về yêu cầu này. Mức độ ưu tiên mặc định cho tất cả các điều kiện ràng buộc về tài nguyên là |
SkillRequirement
Số lượng nhân viên bắt buộc đang làm việc trong khung thời gian và có kỹ năng quy định.
Biểu diễn dưới dạng JSON |
---|
{
"skillId": string,
"targetEmployeeCount": integer,
"priority": enum ( |
Trường | |
---|---|
skillId |
Mã kỹ năng cho yêu cầu. |
targetEmployeeCount |
Số nhân viên mong muốn có kỹ năng đã cho và đang làm việc trong khoảng thời gian quy định. |
priority |
Mức độ ưu tiên cho quy tắc ràng buộc về yêu cầu này. Mức độ ưu tiên mặc định cho tất cả các điều kiện ràng buộc về tài nguyên là |
BudgetRequirement
Các yêu cầu về ngân sách cho một khoảng thời gian nhất định.
Biểu diễn dưới dạng JSON |
---|
{ "totalBudget": number, "startDateTime": { object ( |
Trường | |
---|---|
totalBudget |
Tổng ngân sách cho khoảng thời gian nhất định. Bạn phải đặt tổng ngân sách nếu mức độ ưu tiên là Nếu bạn không đặt |
startDateTime |
Thời điểm bắt đầu khi ngân sách này được áp dụng. Nếu bạn không chỉ định thời gian bắt đầu, thì thời gian này sẽ được đặt là thời gian bắt đầu sớm nhất của tất cả các ca làm việc nhất định. |
endDateTime |
Thời gian kết thúc khi ngân sách này áp dụng. Nếu bạn không chỉ định thời gian kết thúc, thì thời gian kết thúc sẽ được đặt là thời gian kết thúc muộn nhất của tất cả các ca làm việc nhất định. |
priority |
Mức độ ưu tiên để đáp ứng yêu cầu về ngân sách trong khoảng thời gian được chỉ định. Mức độ ưu tiên mặc định là Xin lưu ý rằng nếu mức độ ưu tiên này cao hơn các mức độ ưu tiên ràng buộc khác và nếu |
ShiftAssignment
Một nhân viên làm việc theo ca làm việc.
Biểu diễn dưới dạng JSON |
---|
{
"employeeId": string,
"shiftId": string,
"roleId": string,
"breaks": [
{
object ( |
Trường | |
---|---|
employeeId |
Mã nhân viên đang được chỉ định. |
shiftId |
Mã ca làm việc đã chỉ định cho nhân viên. |
roleId |
Mã vai trò mà nhân viên được chỉ định cho ca làm việc. |
breaks[] |
Danh sách các thời gian nghỉ của ca làm việc này. |
Nghỉ giải lao
Khoảng thời gian một nhân viên làm gián đoạn công việc trong ca làm việc.
Biểu diễn dưới dạng JSON |
---|
{
"startDateTime": {
object ( |
Trường | |
---|---|
startDateTime |
Thời gian bắt đầu của đoạn nghỉ giải lao. |
durationMinutes |
Thời lượng của điểm chèn tính bằng phút. |
SolutionStatus
Trạng thái giải pháp (tức là lịch biểu) được cung cấp trong phản hồi của một trình giải toán.
Enum | |
---|---|
SOLUTION_STATUS_UNSPECIFIED |
Trạng thái phản hồi chưa xác định. |
FEASIBLE |
Lịch biểu được trả về khả thi, nhưng có thể không tối ưu. |
OPTIMAL |
Lịch biểu trả về là tối ưu. |
INFEASIBLE |
Không có lịch biểu khả thi nào cho những điều kiện ràng buộc đã cho. Trình giải toán có thể trả về giá trị này nếu không thoả mãn được bất kỳ quy tắc ràng buộc nào có mức độ ưu tiên PRIORITY_MANDATORY . |
NOT_SOLVED |
Không tìm thấy lịch biểu nào. |
NOT_SOLVED_DEADLINE_EXCEEDED |
Không tìm thấy lịch biểu nào trong giới hạn thời gian đã cho. |