פותר בעיה של תזמון משמרות קבוע מה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[] |
מעבירים מטלות לשימוש כפתרון טנטטיבי (שנקרא גם רמז לפתרון) לבעיית התזמון. אם המטלה סותרת שינוי שלא ניתן להקצאה או בקשה לתזמון, המערכת מתעלמת מרמזים של מטלות. |
גוף התשובה
תשובה לממשק ה-API של תזמון כוח העבודה. בכל תגובה, השדה shiftAssignments
יהיה ריק אם solutionStatus
שהוחזר הוא NOT_SOLVED_DEADLINE_EXCEEDED
או INFEASIBLE
. אם הערך של solutionStatus
שהוחזר הוא OPTIMAL
או FEASIBLE
, תוחזר משימת משמרות חוקית ב-shiftAssignments
. כדי להקצות משמרת חוקית, צריכים להתקיים התנאים הבאים:
- כל מזהה עובד נכלל בקבוצת העובדים שצוינה בבקשה.
- כל מזהה תפקיד שמוקצה לעובד כלול בקבוצה של מזהי התפקידים של העובד הנתון.
- כל מזהה שינוי נכלל בקבוצת השינויים שמופיעה בבקשה.
- כל מזהה משמרת הוא לא אחד מהמזהים של העובד הנתון שלא ניתן להקצות להם.
- עובד אף פעם לא יוקצה לשתי משמרות חופפות.
- בלוח הזמנים הנתון, אף אחת מהמגבלות או הבקשות ברמת העדיפות
PRIORITY_MANDATORY
לא מפירה.
אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל נתונים במבנה הבא:
ייצוג JSON |
---|
{ "requestId": string, "solutionStatus": enum ( |
שדות | |
---|---|
requestId |
מזהה הבקשה שאליה משויכת התשובה הזו. |
solutionStatus |
הסטטוס של הפתרון שהוחזר. אם הפתרון הוא לא FEASIBLE או OPTIMAL, יכול להיות ששדות אחרים ב-Proto יהיו ריקים. אם הסטטוס הוא 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 |
מספר הדקות המינימלי שהעובד צריך לנוח אחרי סיום משמרת אחת לפני שהוא יוקצה למשמרת אחרת. האילוץ הזה חל על כל צמד משמרות שכלולות באופן מלא בפונקציה [ |
עדיפות
רמת העדיפות של כל מגבלה על לוח הזמנים של העובד או הדרישות לגבי הכיסוי. למשל: SchedulingConstraint
, ResourceConstraint
, ShiftRequest
ו-CoverageRequirement
. מכיוון שיכולות להיות אילוצים מתנגשים, לא תמיד אפשר לעמוד בכל האילוץ. לכן, לכל סוג של אילוץ יש עדיפות (שנקבעת על ידי המשתמש או ברירת מחדל) כדי ליידע את הפתרון לגבי החשיבות היחסית של כל המגבלות שהוגדרו ללוח זמנים מלא.
טיפוסים בני מנייה (enum) | |
---|---|
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 |
כמות המשאבים שנעשה בהם שימוש ב-Shift. לדוגמה, אם המגבלה הזו חלה על מספר השעות המינימלי והמקסימלי שעובד עובד בשבוע מסוים, המפה הזו תכלול את השינויים שהתרחשו באותו שבוע ואת משך כל משמרת בשעות. אובייקט שמכיל רשימה של |
minimumResourceUsage |
צריכת המשאבים המינימלית הדרושה כדי לעמוד באילוץ של משאב. |
maximumResourceUsage |
ניצול מקסימלי של המשאבים במסגרת מגבלת משאבים. |
ShiftRequest
בקשה של עובד להקצות או לא להקצות אותו למשמרות ספציפיות.
ייצוג JSON |
---|
{ "priority": enum ( |
שדות | |
---|---|
priority |
רמת העדיפות של הבקשה לתזמון הזו. עדיפות ברירת המחדל לכל הבקשות לתזמון היא |
shiftIds[] |
מזהי השינוי של הבקשה לתזמון. |
type |
סוג הבקשה, למשל אם הבקשה מוקצית או לא מוקצית לקבוצת המשמרות. |
WorkStatus
האם העובד עובד או לא.
טיפוסים בני מנייה (enum) | |
---|---|
WORK_STATUS_UNSPECIFIED |
סטטוס העבודה לא ידוע. |
STATUS_WORK |
סטטוס שמייצג עובד עבודה. |
STATUS_NOT_WORK |
סטטוס שמייצג עובד שאינו עובד. |
HourlyContract
מציינת תעריף בסיס לשעת, הפרשי שערים ומכפילי זמן מסך כדי לקבוע את התגמול לעובד. חשוב לשים לב לתקנות במקומות שונים עשויה להיות דרישה לחישוב שונה של פיצוי על תוספת זמן. הפיצוי מעריך את התגמול על תוספת זמן כדי למזער עלות proxy ששולטת בעלות הכוללת או לעמוד בתקציב (ראו 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:10], [10:10], [10:10],
ייצוג JSON |
---|
{ "earliestStartTime": { object ( |
שדות | |
---|---|
earliestStartTime |
שעת ההתחלה המוקדמת ביותר של ההפסקה (כולל). אפשר להגדיר רק את |
latestStartTime |
שעת ההתחלה האחרונה של ההפסקה (כולל). אפשר להגדיר רק את |
durationMinutes |
משך ההפסקה בדקות. |
ruleIncrementMinutes |
[אופציונלי] מרווח זמן בדקות לכל ההפסקות שאפשר לכלול בכלל ההפסקה הזה. אם המדיניות לא מוגדרת, ברירת המחדל היא |
CoverageRequirement
אחת הדרישות לגבי הכיסוי מציינת את מספר העובדים שנדרשים לקבוצת תפקידים ו/או מיומנויות בחלון זמן מסוים ובמיקום נתון. מרווחי תאריך ושעה במיקום מסוים לא יכולים להיות חופפים. לחלופין, אפשר לספק רשימה של מזהי מעברים במקום חלון זמן ומיקום. רק עובדים שניתן להקצות להם את התפקיד הספציפי (או עובדים בעלי מיומנות מסוימת) יכולים לעמוד בדרישה הזו.
בכל תפקיד ו/או מיומנות, מתמלאת דרישת הכיסוי כשלפחות מספר אחד (targetEmployeeCount
) של העובדים עובדים בכל רגע נתון (או בכל משמרת בshiftIds
). לעומת זאת, הפרה של דרישת הכיסוי היא אם בשלב כלשהו בחלון הזמן (או בכל אחת מהשינויים בshiftIds
), יש פחות מ-targetEmployeeCount
עובדים שעובדים בחלון הזמן. יותר עובדים עובדים בהשוואה ל-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
סטטוס הפתרון (כלומר, לוח זמנים) שסופק בתגובה של פותר.
טיפוסים בני מנייה (enum) | |
---|---|
SOLUTION_STATUS_UNSPECIFIED |
סטטוס התגובה לא צוין. |
FEASIBLE |
לוח הזמנים שמוחזר זמין, אבל יכול להיות שהוא לא אופטימלי. |
OPTIMAL |
לוח הזמנים שמוחזר הוא אופטימלי. |
INFEASIBLE |
אין לוח זמנים מעשי למגבלות הנתונות. הפותר יכול להחזיר את הערך הזה אם לא ניתן לעמוד באחת מקבוצות המשנה של המגבלות ברמת העדיפות PRIORITY_MANDATORY . |
NOT_SOLVED |
לא נמצא לוח זמנים. |
NOT_SOLVED_DEADLINE_EXCEEDED |
לא נמצא לוח זמנים במסגרת מגבלת הזמן שהוגדרה. |