कर्मचारियों को इस तरह की शिफ़्ट में असाइन करके, दिए गए SolveShiftSchedulingRequest
से तय शिफ़्ट शेड्यूलिंग से जुड़े सवाल को हल करता है शेड्यूल करने की प्राथमिकताएं बढ़ा दी गई हैं. साथ ही, शेड्यूल करने की सीमाओं का उल्लंघन कम किया गया है.
एचटीटीपी अनुरोध
POST https://optimization.googleapis.com/v1/scheduling:solveShiftScheduling
यह यूआरएल gRPC ट्रांसकोडिंग सिंटैक्स का इस्तेमाल करता है.
अनुरोध का मुख्य भाग
अनुरोध के मुख्य हिस्से में, यहां दिए गए स्ट्रक्चर का डेटा शामिल होता है:
JSON के काेड में दिखाना |
---|
{ "requestId": string, "solveParameters": { object ( |
फ़ील्ड | |
---|---|
requestId |
कोई समस्या है या आईडी के लिए अनुरोध करें. |
solveParameters |
सवाल के किसी एक हल को कंट्रोल करने के लिए पैरामीटर. |
employees[] |
सभी उपलब्ध कर्मचारियों का शेड्यूल सेट किया जाएगा. |
shifts[] |
शेड्यूल बनाने के लिए सभी शिफ़्ट. |
coverageRequirements[] |
हर प्लान के लिए कवरेज से जुड़ी ज़रूरी शर्तें. इससे उन कर्मचारियों की संख्या का पता चलता है जो एक समयावधि या शिफ़्ट आईडी की सूची के दौरान हर भूमिका को पूरा करते हैं या जिनके पास कोई कौशल होता है. कवरेज से जुड़ी सभी ज़रूरी शर्तों के बारे में, टाइम विंडो या शिफ़्ट आईडी की सूची के साथ बताया जाना चाहिए. हालांकि, दोनों को नहीं. कवरेज की ज़रूरी शर्तों के लिए तय की गई टाइम विंडो (अगर दी गई हों), हर जगह के लिए ओवरलैप नहीं हो सकतीं. इनमें से हर एक के लिए प्राथमिकता का डिफ़ॉल्ट लेवल, भूमिका से जुड़ी ज़रूरी शर्तों के लिए |
roleIds[] |
कर्मचारी की सभी संभावित भूमिकाओं की सूची. हर कर्मचारी के पास कम से कम एक ऐसी भूमिका होनी चाहिए जो उसे शिफ़्ट में असाइन की जा सके. भूमिका का मतलब है, शिफ़्ट के दौरान दिए गए किसी काम को असाइन करना. जैसे, रजिस्टर की गई नर्स, एक्ज़ीक्यूटिव शेफ़, वेटर वगैरह. जब किसी कर्मचारी को शिफ़्ट में असाइन किया जाता है, तो उसे भी एक खास भूमिका असाइन की जाती है. |
skillIds[] |
कर्मचारी के लिए सभी संभावित स्किल की सूची. स्किल का मतलब है, किसी कर्मचारी की ऐसी अतिरिक्त योग्यता जो किसी असाइन की जाने वाली नौकरी से जुड़ी नहीं है. जैसे, सर्टिफ़िकेट, भाषाएं वगैरह. यह सूची खाली हो सकती है. जब किसी कर्मचारी को शिफ़्ट के लिए असाइन किया जाता है, तो उसे उस शिफ़्ट के लिए ज़रूरी सभी कौशल पूरे करने होते हैं. |
locationIds[] |
शेड्यूल में शिफ़्ट के सेट के लिए सभी संभावित जगहों की सूची. यह सूची खाली हो सकती है. अलग-अलग जगहों की जानकारी देना तब फ़ायदेमंद हो सकता है, जब कोई नर्स मैनेजर अलग-अलग यूनिट में कई नर्सों को अस्पताल में शेड्यूल करना चाहता हो या दूसरे उदाहरण के लिए, कोई होटल मैनेजर एक से ज़्यादा होटलों में कर्मचारियों के काम शेड्यूल करना चाहता हो. |
budgetRequirements[] |
शेड्यूल करने से जुड़ी समस्या के लिए बजट की जानकारी. इन ज़रूरी शर्तों में से हर एक के लिए, प्राथमिकता का डिफ़ॉल्ट लेवल |
assignmentsHint[] |
असाइनमेंट को शेड्यूल करने से जुड़ी समस्या के समाधान (यानी समाधान संकेत) के तौर पर इस्तेमाल करने के लिए शिफ़्ट करें. अगर कोई असाइनमेंट, असाइन न किए जा सकने वाले शिफ़्ट या शेड्यूल करने के अनुरोध से मेल नहीं खाता है, तो असाइनमेंट के संकेतों को अनदेखा कर दिया जाता है. |
जवाब का मुख्य भाग
Workforce शेड्यूलिंग API के लिए रिस्पॉन्स. अगर solutionStatus
, NOT_SOLVED_DEADLINE_EXCEEDED
या INFEASIBLE
है, तो हर जवाब के लिए shiftAssignments
खाली होगा. अगर solutionStatus
, OPTIMAL
या FEASIBLE
दिखाता है, तो shiftAssignments
में शिफ़्ट का मान्य असाइनमेंट मिलता है. मान्य शिफ़्ट असाइनमेंट के लिए, इन प्रॉपर्टी में ये शामिल हैं:
- हर कर्मचारी आईडी, अनुरोध में दिए गए कर्मचारियों के सेट में होता है.
- कर्मचारी को असाइन किया गया हर भूमिका आईडी, दिए गए कर्मचारी के लिए भूमिका आईडी के सेट में शामिल होता है.
- हर शिफ़्ट आईडी, अनुरोध में दिए गए शिफ़्ट के सेट में शामिल होता है.
- दिए गए कर्मचारी के लिए, हर शिफ़्ट आईडी, असाइन नहीं किए जा सकने वाले शिफ़्ट आईडी में से एक नहीं है.
- किसी कर्मचारी को कभी भी दो ओवरलैपिंग शिफ़्ट में असाइन नहीं किया जाएगा.
- दिए गए शेड्यूल के लिए, प्राथमिकता लेवल
PRIORITY_MANDATORY
वाले किसी भी कंस्ट्रेंट या अनुरोध का उल्लंघन नहीं हुआ है.
अगर एपीआई सही से जुड़ जाता है, ताे जवाब के मुख्य भाग में नीचे दिए गए स्ट्रक्चर शामिल होता है.
JSON के काेड में दिखाना |
---|
{ "requestId": string, "solutionStatus": enum ( |
फ़ील्ड | |
---|---|
requestId |
अनुरोध का वह आईडी जिससे यह जवाब जुड़ा है. |
solutionStatus |
लौटाए गए समाधान की स्थिति. अगर समाधान सुविधाजनक या ऑप्टिमाइज़ नहीं होता है, तो इस प्रोटो में अन्य फ़ील्ड खाली हो सकते हैं. अगर स्टेटस NOT_SOLVED_DEADLINE_EXCEEDED है, तो कोई कारगर समाधान नहीं मिला या यह तय नहीं किया गया कि समाधान का कोई कारगर तरीका है या नहीं. ऐसा होने पर, समयसीमा खत्म हो गई. अगर प्राथमिकता लेवल 'ज़रूरी' की सभी पाबंदियों को पूरा नहीं किया जा सकता, तो हो सकता है कि अनुरोध काम न करें. |
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
शामिल हैं. कॉन्फ़्लिक्टिंग कंस्ट्रेंट होने की वजह से, हर कंस्ट्रेंट को पूरा करना हमेशा मुमकिन नहीं होता. इसलिए, हर तरह के कंस्ट्रेंट की अपनी प्राथमिकता (उपयोगकर्ता या डिफ़ॉल्ट सेटिंग) होती है, जो सॉल्वर को पूरे शेड्यूल के लिए दिए गए सभी कंस्ट्रेंट की अहम अहमियत के बारे में बताती है.
Enums | |
---|---|
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
कोई कर्मचारी काम कर रहा है या नहीं.
Enums | |
---|---|
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:40, 11:10] [10:40, 11: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 |
कर्मचारी को असाइन किया गया Shift आईडी. |
roleId |
वह रोल आईडी जिसे शिफ़्ट के लिए कर्मचारी को असाइन किया गया है. |
breaks[] |
शिफ़्ट के इस असाइनमेंट के लिए ब्रेक की सूची. |
ब्रेक
वह समयावधि जिसमें कर्मचारी शिफ़्ट के दौरान अपने काम में रुकावट डालता है.
JSON के काेड में दिखाना |
---|
{
"startDateTime": {
object ( |
फ़ील्ड | |
---|---|
startDateTime |
ब्रेक के शुरू होने का समय. |
durationMinutes |
ब्रेक का कुल समय, मिनट में. |
SolutionStatus
किसी सॉल्वर से मिले जवाब में मौजूद सलूशन (यानी कि शेड्यूल) का स्टेटस.
Enums | |
---|---|
SOLUTION_STATUS_UNSPECIFIED |
जवाब की स्थिति की जानकारी नहीं है. |
FEASIBLE |
वापस किया गया शेड्यूल संभव है, लेकिन हो सकता है कि यह बेहतर न हो. |
OPTIMAL |
वापस भेजा गया शेड्यूल सबसे बेहतर है. |
INFEASIBLE |
दिए गए कंस्ट्रेंट के लिए कोई संभव शेड्यूल मौजूद नहीं है. अगर प्राथमिकता लेवल PRIORITY_MANDATORY वाले कंस्ट्रेंट का कोई सबसेट पूरा नहीं हो पाता है, तो सॉल्वर यह वैल्यू दिखा सकता है. |
NOT_SOLVED |
कोई शेड्यूल नहीं मिला. |
NOT_SOLVED_DEADLINE_EXCEEDED |
दी गई समयसीमा में कोई शेड्यूल नहीं मिला. |