Package google.research.optimization.v1.workforce

Chỉ mục

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.

Trường
start_date_time

DateTime

Thời gian bắt đầu giờ nghỉ.

duration_minutes

int32

Thời lượng ngắt tính bằng phút.

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ố rule_increment_minutes. 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 điểm chèn được xem xét là: [10:00, 10:30], [10:20, 10:50], [10:40, 11], [10:40:1, 11]

Trường
earliest_start_time

DateTime

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 hoursminutes.

latest_start_time

DateTime

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 hoursminutes.

duration_minutes

int32

Thời lượng ngắt tính bằng phút.

rule_increment_minutes

int32

[Không bắt buộc] Khoảng thời gian tăng dần (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à duration_minutes.

BudgetRequirement

Yêu cầu về ngân sách trong một khoảng thời gian nhất định.

Trường
total_budget

double

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à PRIORITY_MANDATORY.

Nếu bạn không đặt total_budget, thì tổng chi phí của lịch biểu sẽ được giảm thiểu theo priority được chỉ định. Ví dụ: nếu priority cho ngân sách là PRIORITY_MEDIUM, thì trình giải quyết sẽ giảm thiểu chi phí trước khi giảm mọi lỗi vi phạm ràng buộc bằng mức độ ưu tiên PRIORITY_LOW.

start_date_time

DateTime

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.

end_date_time

DateTime

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

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à PRIORITY_LOW. Nếu đặt mức độ ưu tiên là PRIORITY_MANDATORY, thì bạn phải đặt total_budget.

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 total_budget chặt chẽ, thì lịch biểu thu được có thể vi phạm đáng kể cả yêu cầu về phạm vi áp dụng lẫn quy tắc ràng buộc đối với nhân viên.

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 target_employee_count số 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 shift_ids). 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 làm việc nào trong shift_ids) có ít hơn target_employee_count 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 target_employee_count 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.

Trường
start_date_time

DateTime

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, shift_ids phải để trống.

end_date_time

DateTime

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, shift_ids phải để trống.

location_id

string

Vị trí mà nhân viên đang cần. shift_ids không trống, trường này phải trống.

shift_ids[]

string

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 shift_ids là giá trị không trống, thì start_date_time, end_date_timelocation_id phải để trống.

role_requirements[]

RoleRequirement

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 role_requirement cho mỗi mã vai trò. Mức độ ưu tiên mặc định cho mỗi yêu cầu là PRIORITY_MANDATORY. Bạn sẽ vi phạm những quy tắc ràng buộc này nếu số lượng nhân viên được chỉ định cho các vai trò đã chỉ định thấp hơn target_employee_count tại bất kỳ thời điểm nào trong khoảng thời gian.

skill_requirements[]

SkillRequirement

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 skill_requirement cho mỗi mã kỹ năng. Mức độ ưu tiên mặc định cho mỗi yêu cầu là PRIORITY_LOW. Những hạn chế này sẽ bị vi phạm nếu có dưới target_employee_count số nhân viên sở hữu các kỹ năng đã cho tại bất kỳ thời điểm nào trong khoảng thời gian.

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.

Trường
role_id

string

Mã vai trò cho yêu cầu.

target_employee_count

int32

Số lượng nhân viên mong muốn được chỉ định cho vai trò trong khoảng thời gian.

priority

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à PRIORITY_MANDATORY.

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.

Trường
skill_id

string

Mã kỹ năng cho yêu cầu.

target_employee_count

int32

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

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à PRIORITY_LOW.

DemandCoverageViolation

Chỉ định lỗi vi phạm về mức độ phù hợp của nhu cầu trong khoảng thời gian nhất định. Nhu cầu của nhân viên là như nhau trong toàn bộ khoảng thời gian được chỉ định.

Trường
start_date_time

DateTime

Ngày và giờ bắt đầu của khoảng thời gian theo nhu cầu (bao gồm cả ngày này). Giá trị này được chỉ định theo phút.

end_date_time

DateTime

Ngày và giờ kết thúc của khoảng thời gian theo nhu cầu (không bao gồm). Giá trị này được chỉ định theo phút.

coverage_violation

int32

Vi phạm mức độ phù hợp trong khoảng thời gian chỉ định. Giá trị dương cho biết nhu cầu bị vượt quá và giá trị âm cho biết nhu cầu không được khai thác.

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.

Trường
id

string

ID duy nhất được chỉ định cho nhân viên này.

role_ids[]

string

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.

skill_ids[]

string

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 đó.

shift_preferences[]

ShiftPreference

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 shift_preferences phải là duy nhất. Trình giải này sẽ cố gắng tối đa hoá tổng giá trị ShiftPreference.preference trên tất cả shift_preferences được thoả mãn.

scheduling_constraints[]

SchedulingConstraint

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à PRIORITY_MEDIUM. Hãy xem enum Priority để biết thêm thông tin chi tiết.

resource_constraints[]

ResourceConstraint

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 scheduling_constraints tại đây vào resource_constraints. ResourceConstraint là một bản trình bày trừu tượng hơn để giới hạn tài nguyên cho một nhân viên. Mức độ ưu tiên mặc định cho mỗi quy tắc ràng buộc trong số này là PRIORITY_MEDIUM. Hãy xem enum Priority để biết thêm thông tin chi tiết.

shift_requests[]

ShiftRequest

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 ShiftRequest có mức độ ưu tiên PRIORITY_MANDATORY. Mã ca làm việc có thể xuất hiện trong tối đa một yêu cầu lên lịch của nhân viên này. Mức độ ưu tiên mặc định cho mỗi yêu cầu trong số này là PRIORITY_LOW. Hãy xem enum Priority để biết thêm thông tin chi tiết.

hourly_contract

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.

EmployeeDemand

Chỉ định số lượng nhân viên cần thiết để đáp ứng nhu cầu trong khoảng thời gian DateTime đã cho.

Trường
start_date_time

DateTime

Bắt đầu khoảng thời gian cho nhu cầu đã cho (bao gồm cả hai giá trị này). Các giá trị này được đọc xuống phút; giây và tất cả các đơn vị nhỏ hơn sẽ bị bỏ qua.

end_date_time

DateTime

Kết thúc khoảng thời gian cho nhu cầu đã cho (không bao gồm). Các giá trị này được đọc xuống phút; giây và tất cả các đơn vị nhỏ hơn sẽ bị bỏ qua.

employee_count

int32

Số lượng nhân viên cần thiết để đáp ứng nhu cầu cho khoảng thời gian này.

EmployeeSchedule

Danh sách các ca làm việc theo thứ tự tương ứng với một ShiftTemplate được chỉ định cho một số nhân viên.

Trường
shift_template_id

string

Mã của mẫu được dùng để tạo nhóm ca làm việc này.

shifts[]

ShiftWithEvents

Danh sách ca làm việc mà employee_count nhân viên được chỉ định. Các ca và sự kiện được chọn cho lịch biểu được tạo từ một mẫu duy nhất. Các ca làm việc được sắp xếp theo trình tự thời gian và không chồng chéo nhau. Nếu SolverConfig.multi_day_schedule là đúng, thì một ngày nghỉ sẽ được biểu thị ngầm khi không có ca làm việc bắt đầu vào ngày đó.

employee_count

int32

Số lượng nhân viên cần được chỉ định cho nhóm ca làm việc này để đáp ứng nhu cầu.

ShiftWithEvents

Cho biết ngày bắt đầu và ngày kết thúc cùng với danh sách các sự kiện cố định của ca làm việc do người giải quyết tạo ra.

Trường
start_date_time

DateTime

Ngày và giờ bắt đầu ca làm việc. Giá trị này được chỉ định theo phút; giây và các đơn vị nhỏ hơn không được cung cấp.

end_date_time

DateTime

Ngày và giờ kết thúc ca làm việc. Giá trị này được chỉ định theo phút; giây và các đơn vị nhỏ hơn không được cung cấp.

events[]

Event

Danh sách các sự kiện có trong lượt chuyển này, được ánh xạ chính xác đến và theo cùng thứ tự với ShiftTemplate.Event. Nếu giá trị SolverConfig.shift_events_can_change là true, thời gian bắt đầu và thời gian kết thúc của các sự kiện có thể khác nhau trên toàn bộ ShiftWithEvents của lịch biểu này.

Sự kiện

Chỉ định thời gian bắt đầu và kết thúc của một sự kiện cụ thể trong ca làm việc do trình giải quyết tạo ra.

Trường
event_template_id

string

Mã của mẫu được dùng để tạo sự kiện này.

start_date_time

DateTime

Ngày và giờ bắt đầu sự kiện. Giá trị này được chỉ định theo phút; giây và các đơn vị nhỏ hơn không được cung cấp.

end_date_time

DateTime

Ngày và giờ kết thúc sự kiện. Giá trị này được chỉ định theo phút; giây và các đơn vị nhỏ hơn không được cung cấp.

EventTemplate

Mẫu chỉ định các quy tắc để tạo một sự kiện đơn lẻ xảy ra trong một ca làm việc. Sự kiện có thể đại diện cho một cuộc họp, giờ nghỉ giải lao, bữa trưa, v.v.

Trường
id

string

Mã nhận dạng duy nhất của mẫu này.

minimum_minutes_after_shift_start

int32

Số phút tối thiểu sau khi bắt đầu ca làm việc mà sự kiện này có thể bắt đầu.

maximum_minutes_after_shift_start

int32

Số phút tối đa sau khi bắt đầu ca làm việc mà sự kiện này có thể bắt đầu.

duration_minutes

int32

Thời lượng cố định tính bằng phút của sự kiện này.

start_time_increment_minutes

int32

Độ tăng thời gian (tính bằng phút) dùng để tạo tập hợp thời gian bắt đầu sự kiện có thể xảy ra từ minimum_minutes_after_shift_start đến maximum_minutes_after_shift_start. Ví dụ: nếu số phút tối thiểu sau khi bắt đầu ca làm việc là 30, số phút tối đa sau khi bắt đầu ca làm việc là 45 và khoảng thời gian bắt đầu tăng là 5 phút, thì sự kiện có thể diễn ra sau 30, 35, 40 hoặc 45 phút sau khi bắt đầu ca 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 toán ước tính mức thù lao 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 phần BudgetRequirement). Công cụ này không nhằm mục đích tính toán bảng lương.

Trường
base_hourly_rate

double

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.

hourly_rate_shift_differentials

map<string, double>

Mức chênh lệch giá theo giờ, được thanh toán ở đầu base_hourly_rate. Ví dụ: nếu mức giá theo giờ cơ sở là 30 USD/giờ, thì "shift_1" được trả theo mức 40 USD/giờ và "shift_2" được trả theo mức 45 USD/giờ, thì giá trị đại diện cho proto sẽ là: base_hourly_rate: 30 hourly_rate_shift_differentials {key: "shift_1" value: 10} hourly_rate_shift_differentials {key: "shift_2" value: 15}.

overtime_periods[]

OvertimePeriod

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 base_hourly_rate 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 start_date_time (bao gồm) và end_date_time (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.

Trường
overtime_multiplier

double

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à base_hourly_rate * overtime_multiplier. Nếu có nhiều mức giá được đưa ra thông qua hourly_rate_shift_differentials, trình giải sẽ ước tính mức làm thêm giờ bằng mức trung bình đơn giản được áp dụng trong khoảng thời gian làm thêm giờ. Lưu ý: 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 toán ước tính mức thù lao làm thêm giờ để giảm thiểu đại diện của tổng chi phí hoặc đáp ứng ngân sách. Tuy nhiên, đây không phải là công cụ để tính bảng lương.

start_date_time

DateTime

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ừ start_date_time.

end_date_time

DateTime

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 end_date_time.

maximum_regular_hours

double

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.

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, ShiftRequestCoverageRequirement. 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 các 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à 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.

Trường
priority

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à PRIORITY_MEDIUM.

resource_usages

map<string, double>

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ờ.

minimum_resource_usage

double

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.

maximum_resource_usage

double

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.

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 [start_date_time, end_date_time) nhất định.

Trường
priority

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à PRIORITY_MEDIUM.

start_date_time

DateTime

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).

end_date_time

DateTime

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:
minimum_minutes

int32

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.

maximum_minutes

int32

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.

minimum_consecutive_work_days

int32

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.

maximum_consecutive_work_days

int32

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.

minimum_shift_count

int32

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.

maximum_shift_count

int32

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.

minimum_rest_minutes

int32

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 [start_date_time, end_date_time].

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.

Trường
id

string

Mã nhận dạng duy nhất được chỉ định cho ca làm việc này.

location_id

string

Mã vị trí nơi thực hiện thay đổi này. Bạn có thể để trống trường này.

start_date_time

DateTime

Thời gian bắt đầu ca làm việc (bao gồm cả ngày này).

end_date_time

DateTime

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ờ.

break_rules[]

BreakRule

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 break_rule, trong khoảng thời gian này, họ không được yêu cầu hoàn thành vai trò mà họ đang thực hiện. Bạn phải đưa đầy đủ mỗi khoảng thời gian BreakRule vào khoảng thời gian của lượt chuyển này.

ShiftAssignment

Một nhân viên để chuyển đổi vai trò chỉ định.

Trường
employee_id

string

Mã nhân viên đang được chỉ định.

shift_id

string

Mã ca làm việc được chỉ định cho nhân viên.

role_id

string

Mã vai trò mà nhân viên được chỉ định cho ca làm việc.

breaks[]

Break

Danh sách các giờ nghỉ giải lao cho việc chỉ định ca làm việc này.

ShiftGenerationSolutionStatus

Trạng thái giải pháp được đưa ra trong câu trả lời của trình giải quyết.

Enum
SHIFT_GENERATION_SOLUTION_STATUS_UNSPECIFIED Trạng thái chưa xác định của phản hồi.
SHIFT_GENERATION_SOLVED Trình giải toán đã tìm ra lời giải trong giới hạn thời gian đưa ra.
SHIFT_GENERATION_NOT_SOLVED Một vấn đề đã khiến trình giải quyết không tạo được ca làm việc.
SHIFT_GENERATION_NOT_SOLVED_DEADLINE_EXCEEDED Không thể tạo ca làm việc để đáp ứng nhu cầu này trong khoảng thời gian đã cho.

ShiftPreference

Lựa chọn ưu tiên dạng số cho một mã ca làm việc cụ thể.

Trường
shift_id

string

ID ca làm việc mà lựa chọn ưu tiên được chỉ định.

preference

int32

Giá trị ưu tiên lớn hơn biểu thị sự dịch chuyển mong muốn hơn.

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ể.

Trường
priority

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à PRIORITY_LOW.

shift_ids[]

string

Mã chuyển của yêu cầu lên lịch.

type

WorkStatus

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.

ShiftTemplate

Mẫu chỉ định quy tắc tạo ca làm việc. Ca làm việc là một đơn vị công việc chỉ định thời gian bắt đầu, thời gian kết thúc và có thể chứa các sự kiện (chẳng hạn như bữa trưa, giờ nghỉ giải lao, v.v.). Một ca làm việc sẽ được gán một ngày cụ thể trong câu trả lời.

Trường
id

string

Mã nhận dạng duy nhất của mẫu này.

earliest_start_time

TimeOfDay

Thời điểm sớm nhất trong ngày mà quá trình chuyển có thể bắt đầu. Giá trị này được chỉ định bằng giờ và phút; giây và nano sẽ bị bỏ qua.

latest_start_time

TimeOfDay

Thời điểm muộn nhất trong ngày mà quá trình làm việc có thể bắt đầu. Giá trị này được chỉ định bằng giờ và phút; giây và nano sẽ bị bỏ qua. Nếu giá trị này nhỏ hơn earliest_start_time, thì ca làm việc do mẫu này tạo có thể bắt đầu trước hoặc sau nửa đêm.

duration_minutes

int32

Đã sửa thời lượng thay đổi do mẫu này tạo.

start_time_increment_minutes

int32

Độ tăng thời gian (tính bằng phút) dùng để tạo tập hợp thời gian bắt đầu có thể có từ earliest_start_time đến latest_start_time. Ví dụ: nếu thời gian bắt đầu sớm nhất là 8:00, thời gian bắt đầu muộn nhất là 8:30 và thời gian bắt đầu tăng là 10 phút, thì tất cả thời gian bắt đầu có thể có cho mẫu ca làm việc này là: 8:00, 8:10, 8:20 và 8:30.

days_off_count_per_week

int32

Số ngày nghỉ mỗi tuần cố định. Nhân viên được nghỉ một ngày nếu không được phân vào ca làm việc bắt đầu vào ngày hôm đó. Một tuần có 7 ngày và bắt đầu vào Chủ Nhật.

event_templates[]

EventTemplate

Quy tắc tạo sự kiện cho mỗi lượt chuyển. Chỉ một sự kiện sẽ được đưa vào mỗi ca thực hiện đối với mỗi Sự kiện được chỉ định.

minimum_interevent_gap_minutes

int32

Số phút tối thiểu giữa thời điểm kết thúc một sự kiện và bắt đầu sự kiện tiếp theo.

maximum_employee_count

int32

Số lượng nhân viên tối đa có thể được chỉ định cho tất cả các ca làm việc do mẫu này tạo.

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.

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.

Trường
time_limit

Duration

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.

SolverConfig

Chỉ định các tham số bổ sung để giải bài tập Tạo ca làm việc.

Trường
time_limit

Duration

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. Việc lựa chọn giới hạn thời gian phải phụ thuộc vào quy mô của vấn đề. Ví dụ: khi giải quyết thực thể 7 ngày với 2 ShiftTemplates, mỗi sự kiện có khoảng 20 thời gian bắt đầu có thể và tổ chức 2 sự kiện với khoảng 30 thời gian bắt đầu có thể và hai ngày nghỉ mỗi tuần, các giá trị được đề xuất là: <10 giây cho các giải pháp nhanh (và có thể dưới 10 giây), (10 giây, 300 giây) cho các giải pháp chất lượng tốt và hơn 300 giây cho một tìm kiếm đầy đủ. Các thực thể lớn hơn có thể cần giới hạn thời gian lâu hơn.

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.

multi_day_schedule

bool

Nếu đúng, trình giải sẽ tạo các EmployeeSchedule có nhiều ca làm việc (ví dụ: để tạo lịch biểu kéo dài một tuần). Nếu không, mỗi EmployeeSchedule sẽ bao gồm đúng một ca làm việc. Lịch biểu nhiều ngày giả định rằng thời gian bắt đầu ca làm việc là như nhau qua các ngày và số ngày nghỉ trong lịch biểu như vậy được xác định bằng mẫu ca làm việc. Mặc định là sai.

shift_events_can_change

bool

Nếu đúng, các EmployeeSchedule nhiều ngày có thể bao gồm những ca làm việc có thời gian bắt đầu và kết thúc sự kiện thay đổi trong tất cả các ngày. Nếu không, tất cả các lượt chuyển của một EmployeeSchedule cụ thể phải có thời gian bắt đầu và thời gian kết thúc của cùng một sự kiện. Trong cả hai trường hợp, tất cả các ca làm việc của lịch biểu nhiều ngày đều có cùng thời gian bắt đầu và kết thúc. Do đó, tham số này sẽ bị bỏ qua nếu multi_day_schedule là false. Nếu bạn đặt thông số này thành true, thì thời gian giải quyết có thể lâu hơn. Mặc định là sai.

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.