حلّ مشكلة إنشاء التحولات من SolveShiftGenerationRequest
المحدد عن طريق إنشاء ورديات من نماذج نوبات عمل معينة من أجل تغطية طلب الموظفين.
طلب HTTP
POST https://optimization.googleapis.com/v1/scheduling:solveShiftGeneration
يستخدِم عنوان URL بنية تحويل ترميز gRPC.
نص الطلب
يحتوي نص الطلب على بيانات بالبنية التالية:
تمثيل JSON |
---|
{ "solverConfig": { object ( |
الحقول | |
---|---|
solverConfig |
اختياريّ. مَعلمات أداة الحلّ |
shiftTemplates[] |
مطلوب. مجموعة من نماذج نوبات العمل التي تحدِّد قواعد إنشاء ورديات |
employeeDemands[] |
مطلوب. إجمالي طلب الموظفين الذي يجب أن تغطّيه الورديات الناتجة عن " |
نص الاستجابة
الاستجابة لمشكلة إنشاء Shift. إذا كانت قيمة solutionStatus
التي تم عرضها هي SOLVED
، سيتم في employeeSchedules
عرض مجموعة من المتغيرات الصالحة التي أنشأتها أداة الحلّ. للحصول على جدول ورديات صالح، تحتوي السمات التالية على:
- تلتزم كل نوبة عمل يتم إنشاؤها في
employeeSchedules
بالقواعد المحدّدة فيShiftTemplate
المقابل. - يتقيّد كل حدث يتم اختياره في كل نوبة عمل بالقواعد المحدّدة في
ShiftTemplate.Event
المقابل. - لا يتجاوز إجمالي عدد الموظفين المعيّنين لمجموعة نوبات العمل التي تم إنشاؤها من نموذج ShiftTemplate نفسه
maximumEmployeeCount
من هذا النموذج. - تغطّي مجموعة الموظفين المعيّنين الطلب في كل فترة محدّدة.
إذا كانت الاستجابة ناجحة، سيحتوي نص الاستجابة على بيانات بالبنية التالية:
تمثيل JSON |
---|
{ "solutionStatus": enum ( |
الحقول | |
---|---|
solutionStatus |
حالة الحل الذي تم إرجاعه. إذا لم يكن |
employeeSchedules[] |
مجموعة من الورديات التي أنشأتها أداة الحلّ مع عدد الموظفين المخصصين لكل جدول زمني. |
demandCoverageViolations[] |
مخالفات تغطية الطلب استنادًا إلى |
SolverConfig
تُحدِّد مَعلمات إضافية لحل مشكلة إنشاء ملفات Shift.
تمثيل JSON |
---|
{ "timeLimit": string, "multiDaySchedule": boolean, "shiftEventsCanChange": boolean } |
الحقول | |
---|---|
timeLimit |
الحد الأقصى للوقت الذي يجب أن تقضيه أداة الحلّ في المسألة وفي حال ترك هذه السياسة بدون ضبط، سيتم ضبط القيمة التلقائية على دقيقة واحدة. يجب أن يعتمد اختيار حد زمني على حجم المشكلة. على سبيل المثال، عند حلّ مثيل من 7 أيام يحتوي على 2 هذه القيمة ليست حدًا صارمًا ولا تأخذ في الاعتبار النفقات العامة للاتصال. قد يتجاوز وقت الاستجابة المتوقّع لحل المشكلة هذه القيمة قليلاً. مدة بالثواني مكونة من تسعة أرقام كسور كحد أقصى وتنتهي بالأرقام " |
multiDaySchedule |
في حال كانت القيمة صحيحة، تُنشئ أداة الحلّ |
shiftEventsCanChange |
في حال كان هذا صحيحًا، قد تتضمّن |
ShiftTemplate
نموذج يحدّد قواعد إنشاء ورديات. النوبة عمل هي وحدة عمل تحدد وقت البدء ووقت الانتهاء وقد تحتوي على أحداث (مثل الغداء والاستراحات وما إلى ذلك). سيتم تخصيص الوردية لتاريخ محدد في الرد.
تمثيل JSON |
---|
{ "id": string, "earliestStartTime": { object ( |
الحقول | |
---|---|
id |
المعرّف الفريد لهذا النموذج. |
earliestStartTime |
أقرب وقت في اليوم يمكن أن تبدأ فيه الوردية. يتم تحديد هذه القيمة بالساعات والدقائق. يتم تجاهل الثواني وإطارات nanos. |
latestStartTime |
آخر وقت في اليوم يمكن أن يبدأ فيه التحويل. يتم تحديد هذه القيمة بالساعات والدقائق. يتم تجاهل الثواني وإطارات nanos. إذا كانت هذه القيمة أقل من |
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 |
تاريخ ووقت انتهاء الحدث. يتم تحديد هذه القيمة وصولاً إلى الدقيقة لا يتم تقديم الثواني والوحدات الأصغر. |
DemandCoverageViolation
تحدّد هذه السمة انتهاك "تغطية الطلب" خلال الفترة الزمنية المحدّدة. طلب الموظفين هو نفسه خلال الفاصل الزمني المحدد بأكمله.
تمثيل JSON |
---|
{ "startDateTime": { object ( |
الحقول | |
---|---|
startDateTime |
تاريخ بدء فاصل الطلب ووقته (شامل) يتم تحديد هذه القيمة وصولاً إلى الدقيقة. |
endDateTime |
تاريخ ووقت انتهاء فاصل الطلب (شامل) يتم تحديد هذه القيمة وصولاً إلى الدقيقة. |
coverageViolation |
مخالفة متعلقة بالتغطية خلال الفترة الزمنية المحدّدة. تشير القيمة الموجبة إلى أنّ الطلب مغطى، وتشير القيمة السالبة إلى أنّ الطلب مغطى. |