تحلّ مشكلة جدولة نوبات العمل الثابتة من 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[] |
تغيير تفضيلات هذا الموظف. تمثل التحولات المحددة هنا نوبات يفضل الموظف أن يتم تعيينه أثناء فترة الجدولة. يجب أن تكون أرقام تعريف shift المحدّدة في |
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[] |
معرّفات نوبات العمل لطلب الجدولة. |
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:31،
تمثيل JSON |
---|
{ "earliestStartTime": { object ( |
الحقول | |
---|---|
earliestStartTime |
أقرب وقت لبدء الفاصل (شامل). يمكن ضبط |
latestStartTime |
تمثّل هذه السمة آخر وقت بدء للفاصل الإعلاني (شامل). يمكن ضبط |
durationMinutes |
مدة الفاصل بالدقائق. |
ruleIncrementMinutes |
[اختياري] زيادة الوقت بالدقائق لجميع الفواصل التي يمكن أخذها في الاعتبار في قاعدة الفواصل هذه. وفي حال تم ترك هذه السياسة بدون ضبط، سيتم ضبط القيمة التلقائية على |
CoverageRequirement
تحدّد متطلبات التغطية عدد الموظفين المطلوب لمجموعة من الأدوار و/أو المهارات خلال فترة زمنية معيّنة وفي موقع جغرافي معيّن. لا يمكن أن تتداخل الفواصل الزمنية للتاريخ والوقت في موقع جغرافي معين. بدلاً من ذلك، يمكن تقديم قائمة بمعرّفات نوبات العمل بدلاً من فترة زمنية وموقع جغرافي. يمكن فقط للموظفين الذين يمكن تعيينهم لدور محدد (أو يمتلكون مهارة معينة) تلبية هذا المطلب.
بالنسبة إلى دور و/أو مهارة معيّنة، يتم استيفاء متطلبات التغطية عندما يعمل عدد لا يقل عن targetEmployeeCount
من الموظفين في كل لحظة خلال الفترة الزمنية (أو لكل مناوبة عمل في shiftIds
). وفي المقابل، يتم مخالفة متطلبات التغطية في حال كان عدد الموظفين أقل من targetEmployeeCount
خلال الفترة الزمنية المحددة (أو عند أي من الورديات في shiftIds
). لا يزال عدد الموظفين العاملين أكثر من targetEmployeeCount
يستوفي المتطلبات، ولكن يتم تقليل عدد الموظفين الزائدين بسبب أداة الحلّ.
تمثيل JSON |
---|
{ "startDateTime": { object ( |
الحقول | |
---|---|
startDateTime |
وقت بدء متطلبات التغطية (شاملةً). وفي حال ضبط السياسة، يجب أن يكون الحقل |
endDateTime |
وقت انتهاء متطلبات التغطية (حصري). وفي حال ضبط السياسة، يجب أن يكون الحقل |
locationId |
الموقع الذي يوجد فيه الموظفين. |
shiftIds[] |
في حال ضبطها، يتم تطبيق متطلبات الدور والمهارة بشكل فردي على كل رقم تعريف وردية في هذه القائمة. إذا كانت معرّفات shift غير فارغة، يجب أن تكون |
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 |
لم يتم العثور على أي جدول زمني خلال الفترة الزمنية المحدّدة. |