حلّ مشكلة ثابتة في جدولة نوبات العمل من SolveShiftSchedulingRequest
من خلال إسناد نوبات عمل الموظفين إلى نوبات عمل تلك مضاعفة تفضيلات الجدولة وتقليل انتهاكات قيود الجدولة.
طلب HTTP
POST https://optimization.googleapis.com/v1/scheduling:solveShiftScheduling
يستخدِم عنوان URL بنية تحويل ترميز gRPC.
نص الطلب
يحتوي نص الطلب على بيانات بالبنية التالية:
تمثيل JSON |
---|
{ "requestId": string, "solveParameters": { object ( |
الحقول | |
---|---|
requestId |
مشكلة أو معرّف الطلب. |
solveParameters |
معلَمات للتحكم في حل فردي للمشكلة. |
employees[] |
ستتم جدولة جميع الموظفين المتاحين. |
shifts[] |
جميع الورديات لتشكيل الجدول الزمني. |
coverageRequirements[] |
متطلبات التغطية لأفق التخطيط بالكامل يحدد ذلك عدد الموظفين الذين يجب عليهم أداء كل دور، أو يمتلكون مهارة، إما خلال فترة زمنية أو قائمة بمعرفات الورديات. يجب تحديد جميع متطلبات التغطية باستخدام فترات زمنية أو قائمة بأرقام تعريف الورديات (وليس كلاهما). لا يمكن أن تتداخل الفترات الزمنية (إذا توفّرت) لمتطلبات التغطية لكل موقع جغرافي معيّن. مستوى الأولوية التلقائي لكل من هذه القيود هو |
roleIds[] |
قائمة بجميع الأدوار المحتملة لدى القوى العاملة. يجب أن يكون لكل موظف دور واحد على الأقل يمكن إسناده إليه في وردية. يشير الدور إلى مهمة وظيفية محددة أثناء المناوبة (أي ممرض مسجل، طاهٍ تنفيذي، نادل، إلخ). عندما يتم تعيين موظف إلى وردية، يتم أيضًا تعيينه إلى دور واحد محدد. |
skillIds[] |
قائمة بجميع المهارات الممكنة عبر القوى العاملة. تشير المهارة إلى أي مؤهلات إضافية قد يمتلكها الموظف والتي لا تتعلق بوظيفة محددة قابلة للتعيين (مثل الشهادات واللغات التي يتحدثها وما إلى ذلك). يمكن أن تكون هذه القائمة فارغة. عندما يتم تعيين موظف لنوبة، يجب عليه تلبية جميع المهارات اللازمة لهذا الوردية. |
locationIds[] |
قائمة بجميع المواقع الجغرافية المحتملة لمجموعة الورديات في الجدول الزمني. يمكن أن تكون هذه القائمة فارغة. يمكن أن يكون تحديد مواقع مختلفة مفيدًا عندما يرغب مدير تمريض على سبيل المثال في جدولة العديد من الممرضات عبر وحدات مختلفة في المستشفى أو، على سبيل المثال، يريد مدير الفندق جدولة الموظفين عبر فنادق متعددة. |
budgetRequirements[] |
مواصفات الميزانية لمشكلة الجدولة. مستوى الأولوية التلقائي لكل من هذه المتطلبات هو |
assignmentsHint[] |
قم بتبديل المهام لاستخدامها كحل مؤقت (أي تلميح حل) لمشكلة الجدولة. يتم تجاهل تعديلات المهمة إذا كانت المهمة تتعارض مع متغيّر غير قابل للتعيين أو طلب جدولة. |
نص الاستجابة
الاستجابة لواجهة برمجة التطبيقات لجدولة القوى العاملة. بالنسبة إلى كل ردّ، ستكون قيمة shiftAssignments
فارغة إذا كانت قيمة solutionStatus
التي تم عرضها هي NOT_SOLVED_DEADLINE_EXCEEDED
أو INFEASIBLE
. إذا كانت قيمة السمة solutionStatus
التي تم عرضها هي OPTIMAL
أو FEASIBLE
، سيتم عرض مهمة shift صالحة في shiftAssignments
. في ما يتعلّق بمهمة shift صالحة، تحتوي السمات التالية على:
- يتم تضمين كل معرّف موظف في مجموعة الموظفين المقدمة في الطلب.
- يتم تضمين كل رقم تعريف دور تم تعيينه للموظف في مجموعة من معرّفات الأدوار للموظف المعنيّ.
- يتم تضمين كل رقم تعريف نوبة عمل في مجموعة الورديات المحدّدة في الطلب.
- رقم تعريف الوردية ليس واحدًا من أرقام تعريف الورديات التي لا يمكن تعيينها للموظف المحدد.
- ولن يتم تعيين أي موظف إلى نوبتين متداخلتين مطلقًا.
- بالنسبة إلى الجدول الزمني المحدَّد، لم يتم انتهاك أي من القيود أو الطلبات ذات مستوى الأولوية
PRIORITY_MANDATORY
.
إذا كانت الاستجابة ناجحة، سيحتوي نص الاستجابة على بيانات بالبنية التالية:
تمثيل JSON |
---|
{ "requestId": string, "solutionStatus": enum ( |
الحقول | |
---|---|
requestId |
رقم تعريف الطلب المرتبط به هذه الاستجابة. |
solutionStatus |
حالة الحل الذي تم إرجاعه. إذا لم يكن الحل سهل أو مثالي، فقد تكون الحقول الأخرى في هذا النموذج فارغة. إذا كانت الحالة NOT_SOLVED_DEADLINE_EXCEEDED، يعني ذلك أنّه تم الوصول إلى الحدّ الزمني المسموح به بدون العثور على حل مناسب أو تحديد ما إذا كان هناك حل ملائم أم لا. قد تكون الطلبات غير قابلة للتنفيذ إذا لم تتم تلبية جميع قيود مستوى الأولوية MANDATORY. |
shiftAssignments[] |
قائمة بكل المهام تحدّد كل سمة |
statusMessage |
إذا لم يكن |
SolveParameters
المَعلمات التي تتحكّم في حل واحد لمشكلة جدولة نوبات العمل
تمثيل JSON |
---|
{ "timeLimit": string } |
الحقول | |
---|---|
timeLimit |
الحد الأقصى للوقت الذي يجب أن تقضيه أداة الحلّ في المسألة وفي حال ترك هذه السياسة بدون ضبط، سيتم ضبط القيمة التلقائية على دقيقة واحدة. هذه القيمة ليست حدًا صارمًا ولا تأخذ في الاعتبار النفقات العامة للاتصال. قد يتجاوز وقت الاستجابة المتوقّع لحل المشكلة هذه القيمة قليلاً. مدة بالثواني مكونة من تسعة أرقام كسور كحد أقصى وتنتهي بالأرقام " |
الموظف
لنفترض أن هناك موظفًا من القوى العاملة.
تمثيل JSON |
---|
{ "id": string, "roleIds": [ string ], "skillIds": [ string ], "shiftPreferences": [ { object ( |
الحقول | |
---|---|
id |
تم تعيين المعرّف الفريد لهذا الموظف. |
roleIds[] |
معرّفات الأدوار التي يمكن لهذا الموظف تنفيذها. يجب تحديد دور واحد على الأقل. عندما يتم تعيين موظف إلى وردية، يتم أيضًا تعيينه إلى دور واحد من هذه القائمة. قد يتم تعيين الموظف لأدوار مختلفة أثناء نافذة الجدولة. |
skillIds[] |
معرّفات المهارات التي يمتلكها هذا الموظف. يمكن أن تكون هذه القائمة فارغة. عندما يتم تعيين موظف لنوبة، فإنه يستخدم أي مجموعة فرعية من المهارات المدرجة هنا لتغطية متطلبات المهارة طوال مدة النوبة المعينة. |
shiftPreferences[] |
تبديل الإعدادات المفضّلة لهذا الموظف تمثل الورديات المحددة هنا الورديات التي يفضل الموظف أن يتم التكليف بها خلال مهلة الجدولة. يجب أن تكون أرقام تعريف الورديات المحدّدة في |
schedulingConstraints[] |
قائمة قيود الجدولة لهذا الموظف. مستوى الأولوية التلقائي لكل من هذه القيود هو |
resourceConstraints[] |
يمكن إضافة أي قيود إضافية لم يتم تحديدها في |
shiftRequests[] |
قائمة بطلبات نوبات العمل للموظف يمكن أن يكون الطلب هو تعيين أحد الموظفين أو عدم تعيينه لنوبات محددة. يمكن تمثيل أي مهام جدولة ثابتة للموظف باستخدام |
hourlyContract |
عقد يحدد معدلات العمل المنتظم والإضافي بالساعة للموظف. |
ShiftPreference
تفضيل رقمي لمعرّف تبديل معيّن.
تمثيل JSON |
---|
{ "shiftId": string, "preference": integer } |
الحقول | |
---|---|
shiftId |
رقم تعريف Shift الذي تم تحديد التفضيل له. |
preference |
تشير القيم الأكبر للتفضيل إلى التغيير المطلوب بشكل أكثر. |
SchedulingConstraint
قيد الجدولة المحدد لموظف معين. لا يتم تطبيق القيد المحدّد إلا خلال الفاصل الزمني المحدّد [startDateTime,
endDateTime)
.
تمثيل JSON |
---|
{ "priority": enum ( |
الحقول | |
---|---|
priority |
مستوى الأولوية لقيد الجدولة هذا. إنّ الأولوية التلقائية لجميع قيود الجدولة هي |
startDateTime |
وقت البدء الذي ينطبق فيه قيد الجدولة هذا (شامل) |
endDateTime |
وقت الانتهاء الذي ينطبق فيه قيد الجدولة هذا (غير شامل) |
حقل الاتحاد type . نوع القيد الذي يتم تحديده. لا يتم تطبيق كل قيد إلا خلال الفترة الزمنية المحدّدة أعلاه. يمكن أن يكون type واحدًا فقط مما يلي: |
|
minimumMinutes |
الحد الأدنى لعدد الدقائق التي يمكن للموظف العمل فيها. إذا تم تعيين موظف إلى وردية تتداخل (كليًا أو جزئيًا) مع الفترة الزمنية، سيتم تضمين عدد الدقائق التي تتداخل فيها الوردية مع الفترة الزمنية في هذا العدد. |
maximumMinutes |
الحد الأقصى لعدد الدقائق التي يمكن للموظف العمل فيها في الفترة الزمنية. إذا تم تعيين موظف إلى وردية تتداخل (كليًا أو جزئيًا) مع الفترة الزمنية، سيتم تضمين عدد الدقائق التي تتداخل فيها الوردية مع الفترة الزمنية في هذا العدد. |
minimumConsecutiveWorkDays |
الحد الأدنى لعدد الأيام المتتالية التي يمكن للموظف العمل فيها. يعمل الموظف في يوم محدد إذا تم تكليفه بمناوبة تبدأ خلال ذلك اليوم. ويتم تضمين أي نوبة عمل يتم إسنادها إلى الموظف وتبدأ في الفترة الزمنية في هذا العدد. |
maximumConsecutiveWorkDays |
الحد الأقصى لعدد الأيام المتتالية التي يمكن للموظف العمل فيها. يعمل الموظف في يوم محدد إذا تم تكليفه بمناوبة تبدأ خلال ذلك اليوم. ويتم تضمين أي نوبة عمل يتم إسنادها إلى الموظف وتبدأ في الفترة الزمنية في هذا العدد. |
minimumShiftCount |
الحد الأدنى لعدد الورديات التي يمكن للموظف العمل فيها. ويتم تضمين أي نوبة عمل يتم إسنادها إلى الموظف والتي تتداخل تمامًا مع الفترة الزمنية في هذا العدد. |
maximumShiftCount |
الحد الأقصى لعدد الورديات التي يمكن أن يعمل فيها الموظف. ويتم تضمين أي نوبة عمل يتم إسنادها إلى الموظف والتي تتداخل تمامًا مع الفترة الزمنية في هذا العدد. |
minimumRestMinutes |
الحد الأدنى لعدد الدقائق التي يجب أن يستريح فيها الموظف بعد انتهاء وردية واحدة قبل أن يتم تعيينه إلى وردية أخرى. ينطبق هذا الشرط على كل نوبات عمل مضمّنة بالكامل في [ |
Priority
مستوى الأولوية لأي قيد على جدول الموظف أو متطلبات التغطية. ويشمل ذلك SchedulingConstraint
وResourceConstraint
وShiftRequest
وCoverageRequirement
. نظرًا لإمكانية وجود قيود متضاربة، فليس من الممكن دائمًا تلبية كل قيد. على هذا النحو، فإن لكل نوع من القيد أولوية (يمنحها المستخدم أو افتراضية) تخبر أداة الحلّ بالأهمية النسبية لجميع القيود المعطاة لجدول زمني كامل.
عمليات التعداد | |
---|---|
PRIORITY_UNSPECIFIED |
مستوى الأولوية غير معروف. |
PRIORITY_LOW |
تمثّل هذه السمة أدنى مستوى أولوية. القيود ذات هذه الأولوية أقل أهمية من القيود الأخرى. وهي أول ما يتم النظر فيه بسبب الانتهاك إذا لم يتم العثور على حل ممكن. |
PRIORITY_MEDIUM |
مستوى الأولوية متوسط. إنّ القيود ذات الأولوية هذه أكثر أهمية من القيود ذات الأولوية "PRIORITY_LOW "، ولكنّها أقل أهمية من القيود ذات الأولوية "PRIORITY_HIGH ". إذا تعذّر العثور على حلّ مناسب بعد تخفيف جميع القيود باستخدام أولوية PRIORITY_LOW ، سيتم عندئذٍ اعتبار قيود أولوية PRIORITY_MEDIUM هي التالية بالنسبة إلى الانتهاك. |
PRIORITY_HIGH |
أعلى مستوى من الأولوية. القيود ذات مستوى الأولوية هذا هي الأكثر أهمية. فهي الأخيرة التي يتم اعتبارها انتهاكًا إذا تعذر إيجاد حل مناسب بعد تخفيف القيود المتعلقة بمستويات الأولوية المنخفضة. |
PRIORITY_MANDATORY |
مستوى الأولوية الذي يمثّل عنصرًا لا يمكن لأداة الحلّ انتهاكه. إذا كانت أداة الحلّ تعرض السمة SolutionStatus.INFEASIBLE ، قد يرجع ذلك إلى توفّر عدد كبير جدًا من قيود PRIORITY_MANDATORY . |
ResourceConstraint
قيد عام يحد من مقدار "مورد" معين يستخدمه الموظف. هذه نسخة مجردة من SchedulingConstraint
الأكثر تحديدًا والتي تتميّز بمرونة أكبر للمستخدم. يمكن تحديد العديد من قيود الجدولة التي لا يمكن تحديدها في SchedulingConstraint.type
باستخدام هذه الرسالة.
تمثيل JSON |
---|
{
"priority": enum ( |
الحقول | |
---|---|
priority |
مستوى الأولوية لقيد المورد هذا. إنّ الأولوية التلقائية لجميع قيود الموارد هي |
resourceUsages |
مقدار الموارد التي تستخدمها نوبات العمل. على سبيل المثال، إذا كان هذا القيد ينطبق على الحد الأدنى والأقصى لساعات العمل التي يقوم بها الموظف في أسبوع معين، فستحتوي هذه الخريطة على نوبات العمل التي تحدث في هذا الأسبوع وطول كل نوبة عمل بالساعات. عنصر يحتوي على قائمة بأزواج |
minimumResourceUsage |
الحد الأدنى لاستخدام الموارد لضمان تلبية قيد مورد. |
maximumResourceUsage |
الحد الأقصى لاستخدام الموارد بالنسبة إلى قيد مورد ليتم الالتزام به. |
ShiftRequest
طلب أحد الموظفين بأن يتم تعيينه أو عدم تكليفه بنوبات معيّنة
تمثيل JSON |
---|
{ "priority": enum ( |
الحقول | |
---|---|
priority |
مستوى الأولوية لطلب الجدولة هذا. إنّ الأولوية التلقائية لجميع طلبات الجدولة هي |
shiftIds[] |
أرقام تعريف Shift لطلب الجدولة. |
type |
نوع الطلب، على سبيل المثال، ما إذا كان الطلب قد تم إسناده إلى مجموعة الورديات أم لا |
WorkStatus
ما إذا كان الموظف يعمل أم لا.
عمليات التعداد | |
---|---|
WORK_STATUS_UNSPECIFIED |
حالة العمل غير معروفة. |
STATUS_WORK |
الحالة التي تمثّل موظّفًا موظفًا |
STATUS_NOT_WORK |
حالة تمثّل موظفًا غير عامل. |
HourlyContract
تحدد السعر الأساسي بالساعة، والفروقات في الأسعار، ومضاعِفات العمل الإضافي لتحديد التعويض لموظف. لاحظ أن اللوائح في أماكن مختلفة قد تتطلب طريقة حساب مختلفة لتعويض العمل الإضافي. تقترب أداة الحلّ من تعويض العمل الإضافي إما لتقليل تكلفة إجمالي التكلفة أو استهلاك الميزانية (راجِع BudgetRequirement
). وليس الغرض منه أداة لحساب كشوف المرتبات.
تمثيل JSON |
---|
{
"baseHourlyRate": number,
"hourlyRateShiftDifferentials": {
string: number,
...
},
"overtimePeriods": [
{
object ( |
الحقول | |
---|---|
baseHourlyRate |
التعويض عن العمل في ساعة غير مرتبطة بدوام إضافي. وإذا كانت هناك أسعار متعددة تنطبق على الموظف، يتم تطبيق فروقات الأسعار بالنسبة إلى هذا السعر الأساسي بالساعة. بالإضافة إلى ذلك، إذا كانت هناك أسعار متعددة، يجب أن يكون السعر الأساسي بالساعة هو الحد الأدنى لهذه الأسعار. |
hourlyRateShiftDifferentials |
تفاضل السعر كل ساعة، ويتم دفعه بالإضافة إلى عنصر يحتوي على قائمة بأزواج |
overtimePeriods[] |
قائمة بجميع الفترات التي يلزم حساب الوقت الإضافي لها. يجب ألا تتداخل هذه الفترات. |
OvertimePeriod
فترة ثابتة ومتكررة (عادةً 168 ساعة أو سبع فترات متتالية 24 ساعة) يتم استخدامها لتحديد مقدار تعويض العمل الإضافي. ولكل فترة مضاعِف وقت إضافي (على سبيل المثال، 1.5) مقارنةً بـ baseHourlyRate
والحد الأقصى لعدد الساعات التي يمكن اعتبارها عملاً منتظمًا (بدون وقت إضافي). يتم احتساب أي نوبة تتداخل مع الفترة الزمنية startDateTime
(شاملة) وendDateTime
(حصرية) ضمن إجمالي عدد ساعات العمل خلال هذه الفترة. وفي حال كان التداخل جزئيًا، سيتم احتساب الساعات المتداخلة فقط.
تمثيل JSON |
---|
{ "overtimeMultiplier": number, "startDateTime": { object ( |
الحقول | |
---|---|
overtimeMultiplier |
المضاعف لحساب معدل الوقت الإضافي كل ساعة (يجب أن يكون أكبر أو يساوي 1.0). يتم عادةً احتساب معدل العمل الإضافي في الساعة على النحو التالي: |
startDateTime |
وقت البدء للفترة الزمنية الإضافية. إذا تداخلت نوبة عمل هذه المرة، يتم احتساب ساعات هذه الوردية من |
endDateTime |
وقت الانتهاء للفترة الزمنية الإضافية. إذا تداخلت الوردية هذه المرة، يتم احتساب ساعات هذه الوردية على الأكثر حتى |
maximumRegularHours |
يشير ذلك المصطلح إلى الحد الأقصى لعدد ساعات العمل التي يتم دفعها بمعدل منتظم (بدون وقت إضافي). يجب أن تكون هذه الكمية موجبة. |
Shift
تحدد النوبة الزمنية فترة زمنية ثابتة يمكن للموظفين من خلالها العمل.
تمثيل JSON |
---|
{ "id": string, "locationId": string, "startDateTime": { object ( |
الحقول | |
---|---|
id |
تم تخصيص معرّف فريد لهذا الوردية. |
locationId |
رقم تعريف الموقع الجغرافي الذي تعمل فيه هذه الوردية يمكن أن يكون هذا الحقل فارغًا. |
startDateTime |
وقت بدء الوردية (شامل). |
endDateTime |
وقت انتهاء التبديل (شامل) في الوقت الحالي، لا تسمح أداة الحلّ إلا بنوبات العمل التي تقلّ مدتها عن 24 ساعة. |
breakRules[] |
قائمة بقواعد الفواصل التي تحدث أثناء وردية العمل. يتم منح الموظفين الذين يجرون هذه الوردية استراحة لكل |
BreakRule
يشير ذلك المصطلح إلى قاعدة تحدِّد الوقت الذي يمكن أن تبدأ فيه الاستراحة ضِمن وردية ومدتها. يتمّ تحديد قائمة كلّ الفواصل المحتملة التي يتمّ أخذها في الاعتبار بزيادات القيمة ruleIncrementMinutes
. على سبيل المثال، إذا كانت قاعدة الفاصل تعرض نموذجًا لفاصل مدته 30 دقيقة يمكن أن يبدأ بين 10:00 و11:00، وكانت زيادة القاعدة 20 دقيقة، تكون قائمة الفواصل التي يتم أخذها في الاعتبار: [10:00، 10:30]، [10:20، 10:50]، [10:10، 0.30]، [10:10، 11].
تمثيل JSON |
---|
{ "earliestStartTime": { object ( |
الحقول | |
---|---|
earliestStartTime |
أقرب وقت لبدء الفاصل (شامل) يمكن ضبط |
latestStartTime |
آخر وقت بدء للاستراحة (شامل) يمكن ضبط |
durationMinutes |
مدة الاستراحة بالدقائق. |
ruleIncrementMinutes |
[اختياري] زيادة الوقت بالدقائق لجميع الفواصل التي يمكن اعتبارها في قاعدة الفاصل هذه. وإذا لم يتم ضبط السياسة، سيتم ضبطها تلقائيًا على " |
CoverageRequirement
يحدد متطلب التغطية عدد الموظفين المطلوبين لمجموعة من الأدوار و/أو المهارات خلال فترة زمنية معيّنة وفي موقع جغرافي معيّن. لا يمكن أن تتداخل فواصل التاريخ والوقت في موقع معيّن. يمكن بدلاً من ذلك تقديم قائمة بأرقام تعريف نوبات العمل بدلاً من فترة زمنية وموقع جغرافي. يمكن فقط للموظفين الذين يمكن تكليفهم بالدور المحدد (أو الذين يملكون المهارة المحددة) تلبية هذا الشرط.
بالنسبة إلى دور و/أو مهارة معيّنة، يتم استيفاء متطلبات التغطية عندما يعمل عدد لا يقل عن targetEmployeeCount
من الموظفين في كل لحظة خلال الفترة الزمنية المحددة (أو لكل مناوبة في shiftIds
). في المقابل، يتم مخالفة متطلبات التغطية في حال وجود أقل من targetEmployeeCount
عدد من الموظفين الذين يعملون خلال الفترة الزمنية في أي وقت من الفترة الزمنية (أو في أي من الورديات في shiftIds
). لا يزال عدد الموظفين العاملين أكثر من targetEmployeeCount
يفي بهذا الشرط، ولكن أداة الحلّ تقلِّل من المبالغة في عدد الموظفين.
تمثيل JSON |
---|
{ "startDateTime": { object ( |
الحقول | |
---|---|
startDateTime |
وقت بدء متطلبات التغطية (شامل) وفي حال ضبطها، يجب أن يكون |
endDateTime |
وقت انتهاء متطلّبات التغطية (غير شاملة) وفي حال ضبطها، يجب أن يكون |
locationId |
يشير ذلك المصطلح إلى الموقع الجغرافي الذي يوجد فيه الموظفون. الحقل " |
shiftIds[] |
وفي حال ضبطها، سيتم تطبيق متطلبات الدور والمهارة بشكلٍ فردي على كل رقم تعريف نوبة عمل في هذه القائمة. إذا كانت قيم shiftId غير فارغة، يجب أن تكون |
roleRequirements[] |
العدد المطلوب للموظفين الذين سيتم تعيينهم للأدوار المحددة خلال الفترة الزمنية. يجب تقديم |
skillRequirements[] |
يشير ذلك المصطلح إلى العدد المطلوب للموظفين الذين يتمتعون بالمهارات المحدَّدة والمخصَّصة لنوبات العمل خلال الفترة الزمنية. يجب تقديم |
RoleRequirement
العدد المطلوب للموظفين الذين يجب إسناد الدور إليهم خلال الفترة الزمنية المحددة.
تمثيل JSON |
---|
{
"roleId": string,
"targetEmployeeCount": integer,
"priority": enum ( |
الحقول | |
---|---|
roleId |
رقم تعريف الدور للشرط |
targetEmployeeCount |
العدد المطلوب للموظفين المعيَّنين للدور خلال الفترة الزمنية. |
priority |
مستوى الأولوية لقيد المتطلبات هذا. إنّ الأولوية التلقائية لجميع قيود الموارد هي |
SkillRequirement
العدد المطلوب للموظفين الذين يعملون خلال الفترة الزمنية ويتمتعون بالمهارة المحددة.
تمثيل JSON |
---|
{
"skillId": string,
"targetEmployeeCount": integer,
"priority": enum ( |
الحقول | |
---|---|
skillId |
رقم تعريف المهارة للمتطلبات |
targetEmployeeCount |
العدد المطلوب للموظفين الذين يتمتعون بالمهارة المحددة ويعملون خلال الفترة الزمنية. |
priority |
مستوى الأولوية لقيد المتطلبات هذا. إنّ الأولوية التلقائية لجميع قيود الموارد هي |
BudgetRequirement
متطلبات الميزانية لفترة زمنية معينة.
تمثيل JSON |
---|
{ "totalBudget": number, "startDateTime": { object ( |
الحقول | |
---|---|
totalBudget |
إجمالي الميزانية للفترة الزمنية المحدّدة. يجب منح الميزانية الإجمالية إذا كانت الأولوية إذا لم يتم ضبط السياسة |
startDateTime |
وقت البدء للوقت الذي تنطبق فيه هذه الميزانية. إذا لم يتم تحديد وقت البدء، سيتم ضبطه ليكون أقرب وقت بدء لجميع الورديات المحدّدة. |
endDateTime |
وقت الانتهاء الذي ينطبق فيه هذه الميزانية إذا لم يتم تحديد وقت الانتهاء، يتم تحديده ليكون آخر وقت انتهاء لجميع الورديات المحدّدة. |
priority |
مستوى الأولوية لاستيفاء متطلبات الميزانية خلال الفترة الزمنية المحدّدة. الأولوية التلقائية هي يُرجى العلم أنّه إذا كانت هذه الأولوية أعلى من أولويات القيود الأخرى، وإذا كانت |
ShiftAssignment
موظف لنقل تعيين الدور.
تمثيل JSON |
---|
{
"employeeId": string,
"shiftId": string,
"roleId": string,
"breaks": [
{
object ( |
الحقول | |
---|---|
employeeId |
رقم تعريف الموظف الذي يتم تعيينه. |
shiftId |
رقم تعريف التبديل الذي تم تخصيصه للموظف. |
roleId |
رقم تعريف الدور الذي تم تعيينه للموظف في الوردية. |
breaks[] |
قائمة الفواصل الإعلانية لإسناد الورديات هذه |
استراحة
يشير ذلك المصطلح إلى فترة زمنية يقاطع فيها الموظف عمله أثناء مناوبة العمل.
تمثيل JSON |
---|
{
"startDateTime": {
object ( |
الحقول | |
---|---|
startDateTime |
تمثّل هذه السمة وقت بدء الاستراحة. |
durationMinutes |
مدة الاستراحة بالدقائق. |
SolutionStatus
حالة الحل (أي الجدول الزمني) المقدَّمة في الردّ على أداة الحلّ
عمليات التعداد | |
---|---|
SOLUTION_STATUS_UNSPECIFIED |
حالة الردّ غير محدّدة. |
FEASIBLE |
الجدول الزمني المعروض ممكن، ولكنه قد لا يكون مثاليًا. |
OPTIMAL |
الجدول الزمني المعروض هو الأمثل. |
INFEASIBLE |
لا يوجد جدول عملي للقيود المحددة. قد تعرض أداة الحلّ هذه القيمة في حال تعذّر استيفاء أي مجموعة فرعية من القيود ذات مستوى الأولوية PRIORITY_MANDATORY . |
NOT_SOLVED |
لم يتم العثور على أي جدول زمني. |
NOT_SOLVED_DEADLINE_EXCEEDED |
لم يتم العثور على أي جدول زمني خلال الحد الزمني المحدد. |