Giải quyết vấn đề lên lịch ca làm việc cố định từ SolveShiftSchedulingRequest
cho trước bằng cách phân công nhân viên vào ca làm việc sao cho các lựa chọn ưu tiên về lịch biểu được tối đa hoá và giảm thiểu các lỗi vi phạm đối với giới hạn về lịch biểu.
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ố. |
solveParameters |
Các tham số để kiểm soát một lượt giải duy nhất của bài toán. |
employees[] |
Tất cả nhân viên đang rảnh đều cần được lên lịch. |
shifts[] |
Tất cả các ca làm việc để tạo thành lịch biểu. |
coverageRequirements[] |
Yêu cầu về mức độ phù hợp trong toàn bộ thời gian lập kế hoạch. Tiêu chí này chỉ định số lượng nhân viên phải thực hiện từng vai trò hoặc sở hữu một kỹ năng trong một khoảng thời gian hoặc trong một danh sách mã ca làm việc. Bạn phải chỉ định tất cả các yêu cầu về mức độ phù hợp bằng khoảng thời gian hoặc danh sách mã ca làm việc (nhưng không được dùng cả hai). Khung thời gian (nếu có) cho các yêu cầu về phạm vi phủ sóng không được trùng lặp cho từng vị trí cụ thể. Mức độ ưu tiên mặc định cho mỗi quy tắc ràng buộc trong số này là |
roleIds[] |
Danh sách tất cả các vai trò có thể có trong toàn bộ nhân viên. Mỗi nhân viên phải có ít nhất một vai trò có thể được chỉ định cho một ca làm việc. Vai trò là một nhiệm vụ cụ thể trong ca làm việc (ví dụ: y tá đã đăng ký, đầu bếp điều hành, nhân viên phục vụ, v.v.). Khi một nhân viên được phân vào ca, họ cũng được chỉ định vào một vai trò cụ thể duy nhất. |
skillIds[] |
Danh sách tất cả các kỹ năng có thể có trong toàn bộ nhân viên. Kỹ năng là bất kỳ bằng cấp bổ sung 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ụ thể được giao (ví dụ: chứng chỉ, ngôn ngữ nói, v.v.). Danh sách này có thể trống. Khi được phân công vào ca, một nhân viên phải hoàn thành tất cả các kỹ năng cần thiết cho ca làm việc đó. |
locationIds[] |
Danh sách tất cả các vị trí có thể thực hiện các ca làm việc 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, chẳng hạn như khi người quản lý điều dưỡng muốn lên lịch cho nhiều y tá cho các phòng khám khác nhau tại một bệnh viện hoặc khi một 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 đề lập lịch. Mức độ ưu tiên mặc định cho từng yêu cầu trong số này là |
assignmentsHint[] |
Chuyển các phép gán để sử dụng như một giải pháp dự kiến (còn gọi là gợi ý giải pháp) cho vấn đề về lịch biểu. Gợi ý bài tập sẽ bị bỏ qua nếu bài tập xung đột với ca làm việc không thể giao hoặc 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
được 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ệnh gán ca hợp lệ sẽ được trả về trong shiftAssignments
. Để gán ca làm việc hợp lệ, các thuộc tính sau sẽ được giữ lại:
- Mỗi mã nhân viên đều 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 đó đều có trong bộ mã vai trò của nhân viên đó.
- Mỗi mã ca làm việc nằm trong tập hợp 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 nhân viên cụ thể.
- Một nhân viên sẽ không bao giờ được chỉ định vào 2 ca làm việc chồng chéo.
- Đối với lịch biểu đã cho, không có quy tắc 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 mà phản hồi này được liên kết. |
solutionStatus |
Trạng thái của giải pháp được trả về. Nếu giải pháp không khả thi hoặc TỐI ƯU HOÁ, các trường khác trong giao thức này có thể bị trống. Nếu trạng thái là NOT_SOLVED_DEADLINE_EXCEEDED, đã đạt đến giới hạn thời gian mà không tìm ra giải pháp khả thi hoặc xác định xem giải pháp khả thi có tồn tại hay không. Các yêu cầu có thể không khả thi nếu các ràng buộc về mức độ ưu tiên BẮT BUỘC không thể được đáp ứng. |
shiftAssignments[] |
Danh sách tất cả bài tập. Mỗi |
statusMessage |
Nếu |
SolveParameters
Các thông số kiểm soát việc giải quyết duy nhất cho 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à người giải toán nên dành cho bài toán đó. Nếu bạn không đặt chính sách này, thì thời gian 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í liên lạc. Độ trễ dự kiến để giải quyết vấn đề có thể hơi vượt quá giá trị này. Thời lượng tính bằng giây với tối đa 9 chữ số phân số, kết thúc bằng " |
Nhân viên
Một nhân viên thuộc lực lượng lao động cần được lên lịch.
Biểu diễn dưới dạng JSON |
---|
{ "id": string, "roleIds": [ string ], "skillIds": [ string ], "shiftPreferences": [ { object ( |
Trường | |
---|---|
id |
ID duy nhất được chỉ định cho nhân viên này. |
roleIds[] |
Mã vai trò mà nhân viên này có thể thực hiện. Phải có ít nhất một vai trò được chỉ định. Khi một nhân viên được chỉ định vào 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 có thể được chỉ định cho các 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 vào ca làm việc, họ sẽ sử dụng bất kỳ kỹ năng nào được liệt kê ở đây để đáp ứng các yêu cầu về kỹ năng trong suốt thời gian làm ca làm việc đó. |
shiftPreferences[] |
Thay đổi lựa chọn ưu tiên của nhân viên này. Những 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ã ca làm việc được chỉ định trong |
schedulingConstraints[] |
Danh sách các điều kiện ràng buộc về việc lên lịch đối với nhân viên này. Mức độ ưu tiên mặc định cho mỗi quy tắc ràng buộc trong số này là |
resourceConstraints[] |
Bạn có thể thêm mọi điều kiện ràng buộc khác về việc lập lịch biểu không được chỉ định trong |
shiftRequests[] |
Danh sách các yêu cầu chuyển ca cho nhân viên. Yêu cầu có thể là để chỉ định hoặc không chỉ định cho một nhân viên vào các ca làm việc cụ thể. Mọi hoạt động chỉ định lịch biểu cố định cho nhân viên đều có thể được biểu thị bằng |
hourlyContract |
Hợp đồng xác định mức lương chính xác 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ã ca làm việc cụ thể.
Biểu diễn dưới dạng JSON |
---|
{ "shiftId": string, "preference": integer } |
Trường | |
---|---|
shiftId |
ID ca làm việc mà lựa chọn ưu tiên được chỉ định. |
preference |
Giá trị ưu tiên lớn hơn biểu thị sự dịch chuyển mong muốn hơn. |
SchedulingConstraint
Ràng buộc cụ thể về việc lên lịch cho một nhân viên cụ thể. Quy tắc ràng buộc đã 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ả quy tắc ràng buộc về việc lập lịch là |
startDateTime |
Thời gian bắt đầu khi điều kiện ràng buộc về lịch biểu này được áp dụng (bao gồm cả thời gian này). |
endDateTime |
Thời gian kết thúc khi áp dụng giới hạn lập lịch này (loại trừ). |
Trường kết 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 đã chỉ định ở trên. type chỉ có thể là một trong những trạng thái sau đây: |
|
minimumMinutes |
Số phút tối thiểu mà nhân viên có thể làm việc. Nếu nhân viên được chỉ định làm ca trùng lặp (hoàn toàn hoặc một phần) với khoảng thời gian, thì số phút mà ca làm việc đó trùng với khoảng thời gian sẽ được tính vào số lượng 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 chỉ định làm ca trùng lặp (hoàn toàn hoặc một phần) với khoảng thời gian, thì số phút mà ca làm việc đó trùng với khoảng thời gian sẽ được tính vào số lượng này. |
minimumConsecutiveWorkDays |
Số ngày tối thiểu liên tục 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 giao ca làm việc bắt đầu vào chính ngày đó. Mọi ca làm việc mà nhân viên được chỉ định bắt đầu trong khung thời gian đều được tính vào tổng số này. |
maximumConsecutiveWorkDays |
Số ngày liên tiếp 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 giao ca làm việc bắt đầu vào chính ngày đó. Mọi ca làm việc mà nhân viên được chỉ định bắt đầu trong khung thời gian đều được tính vào tổng số này. |
minimumShiftCount |
Số ca 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 chỉ định trùng lặp hoàn toàn với khung thời gian đều được tính vào giá trị 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 chỉ định trùng lặp hoàn toàn với khung thời gian đều được tính vào giá trị này. |
minimumRestMinutes |
Số phút tối thiểu mà nhân viên phải nghỉ ngơi sau khi kết thúc một ca làm việc trước khi được chỉ định vào ca làm việc khác. Quy tắc ràng buộc này áp dụng cho mọi cặp ca chuyển có đầy đủ trong [ |
Mức độ ưu tiên
Mức độ ưu tiên cho mọi ràng buộc trong lịch làm việc của nhân viên hoặc các yêu cầu về bảo hiểm. Các thuộc tính này bao gồm SchedulingConstraint
, ResourceConstraint
, ShiftRequest
và CoverageRequirement
. Do có thể có các điều kiện ràng buộc xung đột, nên không phải lúc nào cũng có thể đáp ứng mọi điều kiện ràng buộc. Do đó, mỗi loại quy tắc ràng buộc đều có một mức độ ưu tiên (do người dùng đặt hoặc theo mặc định) để thông báo cho người giải quyết về tầm quan trọng tương đối của mọi quy tắc ràng buộc được đưa ra trong 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 không quan trọng bằng các quy tắc ràng buộc khác. Các mô-đun này là những người đầ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. Quy tắc ràng buộc có mức độ ưu tiên này quan trọng hơn quy tắc ràng buộc có mức độ ưu tiên PRIORITY_LOW , nhưng không quan trọng bằng 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ả quy tắc ràng buộc với mức độ ưu tiên PRIORITY_LOW , thì các quy tắc ràng buộc có mức độ ưu tiên PRIORITY_MEDIUM sẽ được xem xét tiếp theo nếu vi phạm. |
PRIORITY_HIGH |
Mức độ ưu tiên cao nhất. Các hạn chế với mức độ ưu tiên này là quan trọng nhất. Đây là lỗi vi phạm cuối cùng nếu không tìm thấy giải pháp khả thi sau khi nới lỏng các hạn chế đối với mức độ ưu tiên thấp hơn. |
PRIORITY_MANDATORY |
Mức độ ưu tiên thể hiện những nội dung mà trình giải toán không thể vi phạm. Nếu trình giải trả về SolutionStatus.INFEASIBLE , thì có thể là do có quá nhiều quy tắc hạn chế đối với PRIORITY_MANDATORY . |
ResourceConstraint
Quy tắc ràng buộc chung giới hạn số lượng của một "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 và linh hoạt hơn cho người dùng. Thay vào đó, bạn có thể chỉ định nhiều quy tắc ràng buộc về việc lập lịch 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 mọi quy tắc ràng buộc về tài nguyên là |
resourceUsages |
Lượng tài nguyên mà các ca sử dụng. Ví dụ: nếu ràng buộc này áp dụng cho số giờ 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 theo giờ. Một đố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 một quy tắc ràng buộc tài nguyên. |
maximumResourceUsage |
Mức sử dụng tài nguyên tối đa cho một quy tắc ràng buộc tài nguyên cần đáp ứng. |
ShiftRequest
Yêu cầu của nhân viên được chỉ định hoặc không được chỉ định vào các ca làm việc cụ thể.
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ã chuyển của yêu cầu lên lịch. |
type |
Loại yêu cầu, ví dụ: liệu yêu cầu có được chỉ định hay không được chỉ định cho nhóm ca làm việc. |
WorkStatus
Liệu một 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 cơ bản theo giờ, chênh lệch giữa các mức giá và hệ số làm thêm giờ để xác định mức thù lao cho 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ờ khác. Trình giải quyết ước tính tiền công làm thêm giờ để giảm thiểu một proxy của tổng chi phí hoặc đáp ứng ngân sách (xem BudgetRequirement
). Tính năng này không được dùng làm công cụ tính 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 lương khi làm việc không làm thêm giờ. Nếu nhân viên đó có nhiều mức giá, thì sự chênh lệch về mức phí sẽ được áp dụng tương ứng với mức giá cơ sở theo giờ này. Ngoài ra, nếu có nhiều mức giá, mức giá cơ bản theo giờ phải là mức tối thiểu của các mức giá này. |
hourlyRateShiftDifferentials |
Mức chênh lệch giá theo giờ, được thanh toán ở đầu Một đố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 cần tính thời gian làm thêm giờ. Các khoảng thời gian này không được trùng lặp. |
OvertimePeriod
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) dùng để xác định số tiền thù lao làm thêm giờ. Mỗi giai đoạn có một hệ số làm thêm giờ (ví dụ: 1.5) so với baseHourlyRate
và giới hạn về số giờ được coi là công việc thông thường (không làm thêm giờ). Mọi ca làm việc 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 giai đoạn đó. Nếu sự trùng lặp là một phần, thì chỉ những giờ chồng chéo đượ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ờ theo giờ (phải lớn hơn hoặc bằng 1). Mức làm thêm giờ theo giờ thường được tính là |
startDateTime |
Thời gian bắt đầu cho hiệp phụ. Nếu một ca làm việc trùng với thời gian 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 trong thời gian thêm giờ. Nếu một ca làm việc trùng với thời gian này, thì số giờ của ca làm việc đó sẽ được tính tối đa |
maximumRegularHours |
Số giờ làm việc tối đa được trả theo mức phí 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í nơi thực hiện thay đổi này. 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ả ngày 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ỉ chấp nhận những bài làm có thời lượng dưới 24 giờ. |
breakRules[] |
Danh sách các quy tắc chèn xảy ra trong quá trình chuyển. Nhân viên làm việc này được chỉ định nghỉ giải lao theo |
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à thời lượng của nó. Danh sách tất cả điểm chèn quảng cáo có thể xảy ra đượ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 cho giờ nghỉ 30 phút có thể bắt đầu từ 10:00 đến 11:00 và khoảng nghỉ quy tắc là 20 phút, thì danh sách các khoảng nghỉ được xem xét là: [10:00, 10:30], [10:20, 10:50], [10:40:0, 11], [10:40, 11].
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ả hai thời điểm này). Bạn chỉ có thể thiết lập |
latestStartTime |
Thời gian bắt đầu muộn nhất của điểm chèn quảng cáo (bao gồm cả hai thời điểm này). Bạn chỉ có thể thiết lập |
durationMinutes |
Thời lượng ngắt tính bằng phút. |
ruleIncrementMinutes |
[Không bắt buộc] Độ dài thời gian tính bằng phút cho tất cả các điểm chèn quảng cáo có thể xem xét trong quy tắc chèn quảng cáo này. Nếu bạn không đặt chính sách này, giá trị mặc định sẽ là |
CoverageRequirement
Yêu cầu về mức độ phù hợp xác đị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 địa điểm nhất định. Khoảng thời gian ngày 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 chỉ định cho 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 cụ thể, yêu cầu về mức độ phù hợp được đáp ứng khi có ít nhất targetEmployeeCount
số lượng nhân viên làm việc tại mọi thời điểm trong khoảng thời gian (hoặc mỗi ca làm việc trong shiftIds
). Ngược lại, yêu cầu về mức độ phù hợp sẽ bị vi phạm nếu tại bất kỳ thời điểm nào trong khoảng thời gian (hoặc bất kỳ ca chuyển nào trong shiftIds
) có ít hơn targetEmployeeCount
số nhân viên làm việc trong khoảng 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 người giải quyết đã giảm thiểu được tình trạng nhân sự quá nhiều.
Biểu diễn dưới dạng JSON |
---|
{ "startDateTime": { object ( |
Trường | |
---|---|
startDateTime |
Thời gian bắt đầu đối với yêu cầu về mức độ phù hợp (bao gồm). Nếu được đặt, |
endDateTime |
Thời gian kết thúc yêu cầu về mức độ phù hợp (không bao gồm). Nếu được đặt, |
locationId |
Vị trí mà nhân viên đang cần. |
shiftIds[] |
Nếu được đặt, 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ì bạn phải để trống |
roleRequirements[] |
Số lượng nhân viên bắt buộc được chỉ định cho các vai trò đã chỉ định trong khoảng thời gian. 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 đã chỉ định được chỉ định làm việc theo ca trong khoảng thời gian làm việc. Bạn phải cung cấp tối đa một |
RoleRequirement
Số lượng nhân viên bắt buộc được chỉ định cho vai trò đã chỉ định trong khoảng thời gian.
Biểu diễn dưới dạng JSON |
---|
{
"roleId": string,
"targetEmployeeCount": integer,
"priority": enum ( |
Trường | |
---|---|
roleId |
Mã vai trò cho yêu cầu. |
targetEmployeeCount |
Số lượng nhân viên mong muốn được chỉ định cho vai trò trong khoảng thời gian. |
priority |
Mức độ ưu tiên cho quy tắc ràng buộc yêu cầu này. Mức độ ưu tiên mặc định cho mọi quy tắc ràng buộc về tài nguyên là |
SkillRequirement
Số lượng nhân viên cần thiết làm việc trong khoảng thời gian làm việc và có kỹ năng được chỉ đị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ố lượng nhân viên mong muốn có kỹ năng nhất định đang làm việc trong khoảng thời gian. |
priority |
Mức độ ưu tiên cho quy tắc ràng buộc yêu cầu này. Mức độ ưu tiên mặc định cho mọi quy tắc ràng buộc về tài nguyên là |
BudgetRequirement
Yêu cầu về ngân sách trong 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 trong khoảng thời gian đã cho. Bạn phải cung cấp tổng ngân sách nếu mức độ ưu tiên là Nếu bạn không đặt |
startDateTime |
Thời gian bắt đầu áp dụng ngân sách này. Nếu bạn không chỉ định thời gian bắt đầu, thì thời gian bắt đầu sẽ được đặt thành 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 áp dụng ngân sách này. 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 thành 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ụ thể. 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 khác của quy tắc ràng buộc và nếu |
ShiftAssignment
Một nhân viên để chuyển đổi vai trò chỉ định.
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 đượ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 giờ nghỉ giải lao cho việc chỉ định 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 của mình 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 giờ nghỉ. |
durationMinutes |
Thời lượng ngắt tính bằng phút. |
SolutionStatus
Trạng thái của lời giải (tức là một lịch biểu) được đưa ra trong câu trả lời của trình giải.
Enum | |
---|---|
SOLUTION_STATUS_UNSPECIFIED |
Trạng thái chưa xác định của phản hồi. |
FEASIBLE |
Lịch biểu được trả về có thể thực hiện được, nhưng cũng có thể không phải là lịch tối ưu. |
OPTIMAL |
Lịch biểu được trả về là lịch biểu tối ưu. |
INFEASIBLE |
Không có lịch biểu khả thi nào cho các điều kiện ràng buộc đã cho. Trình giải có thể trả về giá trị này nếu không đáp ứng được bất kỳ tập hợp con các quy tắc ràng buộc có mức độ ưu tiên PRIORITY_MANDATORY . |
NOT_SOLVED |
Không tìm thấy lịch biểu. |
NOT_SOLVED_DEADLINE_EXCEEDED |
Không tìm thấy lịch biểu trong giới hạn thời gian đã cho. |