تحلّ مشكلة تحويل نوبات العمل من SolveShiftGenerationRequest
المحدّدة عن طريق إنشاء نوبات عمل من نماذج نوبات العمل المحدّدة لتغطية طلب الموظفين.
طلب HTTP
POST https://optimization.googleapis.com/v1/scheduling:solveShiftGeneration
يستخدم عنوان URL بنية تحويل الترميز gRPC.
نص الطلب
يحتوي نص الطلب على بيانات بالبنية التالية:
تمثيل JSON |
---|
{ "solverConfig": { object ( |
الحقول | |
---|---|
solverConfig |
اختياريّ. معلَمات أداة الحلّ |
shiftTemplates[] |
مطلوبة. مجموعة من نماذج نوبات العمل التي تحدِّد قواعد إنشاء نوبات العمل |
employeeDemands[] |
مطلوبة. يشير هذا المقياس إلى إجمالي طلبات الموظفين التي يجب أن تشملها الورديات الناتجة عن " |
نص الاستجابة
الردّ على مشكلة "إنشاء نوبات العمل" إذا كانت قيمة solutionStatus
هي SOLVED
، سيتم عرض مجموعة من التحولات الصالحة التي أنشأتها أداة الحلّ في employeeSchedules
. بالنسبة إلى جدول نوبات العمل الصالح، تحتفظ السمات التالية بما يلي:
- تتقيّد كل عملية تبديل يتم إنشاؤها في
employeeSchedules
بالقواعد المحدّدة فيShiftTemplate
المقابلة. - يتقيّد كل حدث يتم اختياره في كل وردية بالقواعد المحدّدة في
ShiftTemplate.Event
المقابلة. - لا يتجاوز إجمالي عدد الموظفين المعينين لمجموعة الورديات الناتجة من ShiftTemplate نفسه
maximumEmployeeCount
من هذا النموذج. - تقوم مجموعة الموظفين المعينين بتغطية الطلب في كل فترة زمنية محددة.
إذا كانت الاستجابة ناجحة، سيحتوي نص الاستجابة على بيانات بالبنية التالية:
تمثيل JSON |
---|
{ "solutionStatus": enum ( |
الحقول | |
---|---|
solutionStatus |
حالة الحلّ الذي تم إرجاعه وإذا لم يكن الحقل |
employeeSchedules[] |
مجموعة من نوبات العمل التي تم إنشاؤها بواسطة أداة الحلّ بالإضافة إلى عدد الموظفين المعيَّنين لكل جدول زمني |
SolverConfig
تحدد هذه السمة معلَمات إضافية لحل مشكلة "إنشاء التحول".
تمثيل JSON |
---|
{ "timeLimit": string, "multiDaySchedule": boolean, "shiftEventsCanChange": boolean } |
الحقول | |
---|---|
timeLimit |
الحدّ الأقصى للوقت الذي يجب أن يقضيه الحلّ في حلّ المسألة. وفي حال ترك هذه السياسة بدون ضبط، ستكون القيمة التلقائية دقيقة واحدة. يجب أن يعتمد اختيار الحد الزمني على حجم المشكلة. على سبيل المثال، عند حل مثيل مدته 7 أيام مع هذه القيمة ليست حدًا صارمًا ولا تأخذ في الحسبان النفقات العامة للاتصال. قد يتجاوز وقت الاستجابة المتوقع لحل المشكلة هذه القيمة قليلاً. مدة بالثواني يصل عددها إلى تسعة أرقام كسرية وتنتهي بـ " |
multiDaySchedule |
إذا كانت الإجابة "صحيح"، تنشئ أداة الحلّ |
shiftEventsCanChange |
في حال كانت القيمة صحيحة، قد تتضمّن أحداث |
ShiftTemplate
نموذج يحدِّد قواعد إنشاء نوبات العمل الوردية هي وحدة عمل تحدد وقت البدء ووقت الانتهاء وقد تحتوي على أحداث (مثل الغداء والاستراحة وما إلى ذلك). سيتم تعيين وردية إلى تاريخ محدد في الرد.
تمثيل JSON |
---|
{ "id": string, "earliestStartTime": { object ( |
الحقول | |
---|---|
id |
المعرّف الفريد لهذا النموذج. |
earliestStartTime |
أقرب وقت يمكن أن تبدأ فيه وردية بيانات خلال اليوم. يتم تحديد هذه القيمة بالساعات والدقائق، ويتم تجاهل الثواني والنانو. |
latestStartTime |
تمثّل هذه السمة آخر وقت يمكن أن تبدأ فيه وردية عملك. يتم تحديد هذه القيمة بالساعات والدقائق، ويتم تجاهل الثواني والنانو. وإذا كانت هذه القيمة أقل من |
durationMinutes |
مدة ثابتة للتغيير الذي تم إنشاؤه باستخدام هذا النموذج. |
startTimeIncrementMinutes |
تمثّل هذه السمة الفترة الزمنية (بالدقائق) المستخدَمة لإنشاء مجموعة أوقات البدء المحتمَلة بين |
daysOffCountPerWeek |
عدد أيام إجازة في الأسبوع بشكل ثابت. يحصل الموظف على يوم إجازة محدد إذا لم يتم تكليفه بمناوبة تبدأ في ذلك اليوم. الأسبوع هو 7 أيام ويبدأ يوم الأحد. |
eventTemplates[] |
قواعد إنشاء أحداث لكل نوبة عمل سيتم تضمين حدث واحد بالضبط في كل نوبة عمل لكل "حدث محدد". |
minimumIntereventGapMinutes |
الحد الأدنى للدقائق بين نهاية أحد الأحداث وبداية الحدث التالي. |
maximumEmployeeCount |
الحدّ الأقصى لعدد الموظفين الذي يمكن إسناده لجميع نوبات العمل التي تم إنشاؤها باستخدام هذا النموذج. |
TimeOfDay
تمثل وقتًا من اليوم. قد يكون التاريخ والمنطقة الزمنية غير مهمَّين أو تم تحديدهما في مكان آخر. وقد تختار واجهة برمجة التطبيقات السماح بالثواني الكبيسة. النوعان ذوا الصلة هما google.type.Date
وgoogle.protobuf.Timestamp
.
تمثيل JSON |
---|
{ "hours": integer, "minutes": integer, "seconds": integer, "nanos": integer } |
الحقول | |
---|---|
hours |
ساعات اليوم بتنسيق 24 ساعة يجب أن يتراوح الرقم بين 0 و23. قد تسمح واجهة برمجة التطبيقات بالقيمة "24:00:00" في سيناريوهات مثل وقت إغلاق النشاط التجاري. |
minutes |
دقائق من الساعة من اليوم. يجب أن تتراوح القيمة بين 0 و59. |
seconds |
ثواني من الدقائق من الوقت. يجب أن يتراوح الرقم عادةً من 0 إلى 59. قد تسمح واجهة برمجة التطبيقات بالقيمة 60 إذا كانت تتيح الثواني الكبيسة. |
nanos |
كسور الثواني بالنانوثانية. يجب أن تتراوح القيمة بين 0 و999,999,999. |
EventTemplate
نموذج يحدِّد قواعد إنشاء حدث واحد يقع أثناء وردية قد يمثل الحدث اجتماعًا أو استراحة أو غداء أو ما إلى ذلك.
تمثيل JSON |
---|
{ "id": string, "minimumMinutesAfterShiftStart": integer, "maximumMinutesAfterShiftStart": integer, "durationMinutes": integer, "startTimeIncrementMinutes": integer } |
الحقول | |
---|---|
id |
المعرّف الفريد لهذا النموذج. |
minimumMinutesAfterShiftStart |
الحد الأدنى لعدد الدقائق بعد بداية الوردية التي يمكن أن يبدأها هذا الحدث. |
maximumMinutesAfterShiftStart |
الحد الأقصى لعدد الدقائق التي يمكن أن يبدأ خلالها هذا الحدث بعد بداية الوردية. |
durationMinutes |
مدة ثابتة بالدقائق لهذا الحدث. |
startTimeIncrementMinutes |
الفترة الزمنية (بالدقائق) المستخدَمة لإنشاء مجموعة أوقات بدء الأحداث المحتملة بين |
EmployeeDemand
تحدّد هذه السمة عدد الموظفين المطلوبين لتغطية الطلب في الفترة الزمنية المحدّدة.
تمثيل JSON |
---|
{ "startDateTime": { object ( |
الحقول | |
---|---|
startDateTime |
بداية الفاصل الزمني للطلب المحدّد (شامل). وتُقرأ هذه القيم بالدقيقة، ويتم تجاهل الثواني وجميع الوحدات الأصغر. |
endDateTime |
نهاية الفاصل الزمني للطلب المحدّد (غير شامل). وتُقرأ هذه القيم بالدقيقة، ويتم تجاهل الثواني وجميع الوحدات الأصغر. |
employeeCount |
عدد الموظفين اللازمين لتغطية الطلب خلال هذه الفترة. |
ShiftGenerationSolutionStatus
يتم توفير حالة الحلّ في ردّ أداة الحلّ.
عمليات التعداد | |
---|---|
SHIFT_GENERATION_SOLUTION_STATUS_UNSPECIFIED |
حالة الردّ غير محدّدة. |
SHIFT_GENERATION_SOLVED |
عثرت أداة الحلّ على حلّ في الوقت المحدَّد. |
SHIFT_GENERATION_NOT_SOLVED |
حدثت مشكلة منعت أداة الحلّ من إجراء نوبات. |
SHIFT_GENERATION_NOT_SOLVED_DEADLINE_EXCEEDED |
تعذّر إجراء عمليات تبديل لتغطية الطلب خلال الحدّ الزمني المحدَّد. |
EmployeeSchedule
قائمة مرتَّبة بالورديات المقابلة لـ ShiftTemplate
واحد والتي يجب تخصيصها لعدد من الموظفين
تمثيل JSON |
---|
{
"shiftTemplateId": string,
"shifts": [
{
object ( |
الحقول | |
---|---|
shiftTemplateId |
رقم تعريف النموذج الذي تم استخدامه لإنشاء هذه المجموعة من التغيّرات. |
shifts[] |
قائمة الورديات التي تم تعيين عدد |
employeeCount |
عدد الموظفين الذين يجب تعيينهم لهذه المجموعة من الورديات لتغطية الطلب. |
ShiftWithEvents
تُحدِّد هذه السياسة تاريخَي البدء والانتهاء بالإضافة إلى قائمة بالأحداث الثابتة لعملية التحوّل التي أنشأتها أداة الحلّ.
تمثيل JSON |
---|
{ "startDateTime": { object ( |
الحقول | |
---|---|
startDateTime |
تاريخ بدء الوردية ووقتها ويتم تحديد هذه القيمة حتى الدقيقة، ولا يتم تحديد الثواني والوحدات الأصغر. |
endDateTime |
تاريخ ووقت انتهاء وردية العمل. ويتم تحديد هذه القيمة حتى الدقيقة، ولا يتم تحديد الثواني والوحدات الأصغر. |
events[] |
قائمة بالأحداث المضمَّنة في هذا التحوّل، والتي تم ربطها تمامًا بـ |
حدث
تحدِّد هذه السمة التاريخ والوقت لبدء حدث معيّن وانتهائه في وردية تم إنشاؤها من خلال أداة الحلّ.
تمثيل JSON |
---|
{ "eventTemplateId": string, "startDateTime": { object ( |
الحقول | |
---|---|
eventTemplateId |
رقم تعريف النموذج الذي تمّ استخدامه لإنشاء هذا الحدث |
startDateTime |
تاريخ ووقت بدء الحدث. ويتم تحديد هذه القيمة حتى الدقيقة، ولا يتم تحديد الثواني والوحدات الأصغر. |
endDateTime |
تاريخ ووقت انتهاء الحدث ويتم تحديد هذه القيمة حتى الدقيقة، ولا يتم تحديد الثواني والوحدات الأصغر. |