कर्मचारियों को शिफ़्ट शेड्यूल करने के लिए तय किए गए SolveShiftSchedulingRequest
में, शिफ़्ट शेड्यूल करने से जुड़े तय समस्या को हल किया जाता है. इससे कर्मचारियों की शेड्यूल से जुड़ी प्राथमिकताएं ज़्यादा से ज़्यादा होती हैं और शेड्यूल से जुड़ी दिक्कतों को कम किया जाता है.
एचटीटीपी अनुरोध
POST https://optimization.googleapis.com/v1/scheduling:solveShiftScheduling
यह यूआरएल gRPC ट्रांसकोडिंग सिंटैक्स का इस्तेमाल करता है.
अनुरोध का मुख्य भाग
अनुरोध के मुख्य हिस्से में, इस तरह का डेटा शामिल होता है:
जेएसओएन के काेड में दिखाना |
---|
{ "requestId": string, "solveParameters": { object ( |
फ़ील्ड | |
---|---|
requestId |
कोई समस्या या अनुरोध का आईडी. |
solveParameters |
किसी सवाल को एक ही बार हल करने के लिए पैरामीटर. |
employees[] |
सभी उपलब्ध कर्मचारियों को शेड्यूल किया जाएगा. |
shifts[] |
शेड्यूल बनाने के लिए सभी शिफ़्ट. |
coverageRequirements[] |
प्लान की पूरी प्लानिंग के लिए, कवरेज से जुड़ी ज़रूरी शर्तें. इन कर्मचारियों की संख्या में उन कर्मचारियों की संख्या बताई जाती है जिन्हें समयावधि या शिफ़्ट आईडी की सूची में अलग-अलग भूमिका में काम करना होगा या जिन्हें इस कौशल में महारत हासिल करनी होगी. कवरेज से जुड़ी सभी ज़रूरी शर्तों को टाइम विंडो या शिफ़्ट आईडी की सूची में बताया जाना चाहिए, लेकिन दोनों नहीं. कवरेज की ज़रूरी शर्तों के लिए टाइम विंडो (अगर दी गई हो), दी गई हर जगह के लिए ओवरलैप नहीं हो सकती. इन सभी शर्तों के लिए, प्राथमिकता का डिफ़ॉल्ट लेवल, रोल से जुड़ी ज़रूरी शर्तों के लिए |
roleIds[] |
संगठन में काम करने वाले लोगों से जुड़ी सभी संभावित भूमिकाओं की सूची. हर कर्मचारी को कम से कम एक भूमिका असाइन की जानी चाहिए, जो उसे किसी शिफ़्ट में दी जा सके. पद का मतलब है, शिफ़्ट के दौरान असाइन की जाने वाली खास नौकरी. जैसे, रजिस्टर की गई नर्स, एक्ज़ीक्यूटिव शेफ़, वेटर वगैरह. जब किसी कर्मचारी को शिफ़्ट में काम असाइन किया जाता है, तो उसे भी एक खास भूमिका ही असाइन की जाती है. |
skillIds[] |
संगठन के कर्मचारियों से जुड़े सभी संभावित कौशल की सूची. स्किल का मतलब ऐसी अतिरिक्त योग्यता से है जो कर्मचारी में हो सकता है कि वह असाइन की जा सकने वाली किसी खास नौकरी से न जुड़ी हो. जैसे, सर्टिफ़िकेशन, बोली गई भाषाएं वगैरह. यह सूची खाली हो सकती है. जब किसी कर्मचारी को किसी शिफ़्ट में काम दिया जाता है, तो उसे उस शिफ़्ट के लिए ज़रूरी सभी स्किल पूरे करने होते हैं. |
locationIds[] |
शेड्यूल में शिफ़्ट के सेट के लिए सभी संभावित जगहों की सूची. यह सूची खाली हो सकती है. अलग-अलग जगहों की जानकारी देना तब फ़ायदेमंद हो सकता है, जब कोई नर्स मैनेजर किसी अस्पताल के अलग-अलग यूनिट में काम करने के लिए कई नर्सों को शेड्यूल करना चाहता है या किसी दूसरे उदाहरण के लिए, कोई होटल मैनेजर अपने कर्मचारियों को एक से ज़्यादा होटलों के लिए शेड्यूल करना चाहता है. |
budgetRequirements[] |
शेड्यूल करने से जुड़ी समस्या के लिए बजट की जानकारी. इनमें से हर ज़रूरी शर्त के लिए, प्राथमिकता का डिफ़ॉल्ट लेवल |
assignmentsHint[] |
शेड्यूल करने से जुड़ी समस्या के लिए अस्थायी समाधान (जैसे, समाधान से जुड़ा संकेत) के तौर पर इस्तेमाल करने के लिए असाइनमेंट शिफ़्ट करें. अगर असाइनमेंट, असाइन न किए जा सकने वाले शिफ़्ट या शेड्यूल करने के अनुरोध से मेल न खाता हो, तो उन संकेतों को अनदेखा कर दिया जाता है. |
जवाब का मुख्य भाग
वर्कफ़ोर्स शेड्यूलिंग एपीआई से जुड़ा जवाब. अगर solutionStatus
का मान NOT_SOLVED_DEADLINE_EXCEEDED
या INFEASIBLE
है, तो हर जवाब के लिए shiftAssignments
खाली रहेगा. अगर solutionStatus
का मान OPTIMAL
या FEASIBLE
है, तो शिफ़्ट का मान्य असाइनमेंट shiftAssignments
में मिलेगा. मान्य शिफ़्ट असाइनमेंट के लिए, इन प्रॉपर्टी में ये शामिल होती हैं:
- हर कर्मचारी आईडी, अनुरोध में दिए गए कर्मचारियों के ग्रुप में शामिल होता है.
- कर्मचारी को असाइन की गई हर भूमिका आईडी, दिए गए कर्मचारी के भूमिका आईडी के सेट में शामिल होती है.
- हर शिफ़्ट आईडी, अनुरोध में दिए गए शिफ़्ट के सेट में शामिल होते हैं.
- हर शिफ़्ट आईडी, दिए गए कर्मचारी के लिए असाइन न किए जा सकने वाले शिफ़्ट आईडी में से एक नहीं होता है.
- किसी कर्मचारी को ओवरलैप होने वाली दो शिफ़्ट में काम नहीं असाइन किया जाएगा.
- दिए गए शेड्यूल के लिए, प्राथमिकता लेवल
PRIORITY_MANDATORY
वाले किसी भी अनुरोध या शर्त का उल्लंघन नहीं किया गया है.
अगर एपीआई सही से जुड़ जाता है, ताे जवाब के मुख्य भाग में नीचे दिए गए स्ट्रक्चर शामिल होता है.
जेएसओएन के काेड में दिखाना |
---|
{ "requestId": string, "solutionStatus": enum ( |
फ़ील्ड | |
---|---|
requestId |
उस अनुरोध का आईडी जिससे यह रिस्पॉन्स जुड़ा है. |
solutionStatus |
लौटाए गए समाधान की स्थिति. अगर समाधान व्यावहारिक या ऑप्टिमाइज़ नहीं है, तो इस प्रोटो के अन्य फ़ील्ड खाली हो सकते हैं. अगर स्थिति NOT_SOLVED_DEADLINE_EXCEEDED है, तो कोई संभव समाधान नहीं ढूंढने या यह तय किए बिना कि कोई संभव समाधान मौजूद है या नहीं, समयसीमा पूरी हो गई थी. अगर प्राथमिकता लेवल MANDATORY की सभी शर्तें पूरी नहीं की जा सकतीं, तो अनुरोध पूरे नहीं किए जा सकते. |
shiftAssignments[] |
सभी असाइनमेंट की सूची. हर |
statusMessage |
अगर |
SolveParameters
ऐसे पैरामीटर जो शिफ़्ट शेड्यूल करने से जुड़ी समस्या के एक समाधान को कंट्रोल करते हैं.
जेएसओएन के काेड में दिखाना |
---|
{ "timeLimit": string } |
फ़ील्ड | |
---|---|
timeLimit |
सॉल्वर को सवाल हल करने में ज़्यादा से ज़्यादा समय देना चाहिए. अगर यह अवधि सेट नहीं है, तो डिफ़ॉल्ट तौर पर एक मिनट दिखेगा. यह वैल्यू तय सीमा से ज़्यादा नहीं होनी चाहिए और इसमें कम्यूनिकेशन से जुड़े ओवरहेड शामिल नहीं होते. समस्या हल करने में लगने वाला अनुमानित समय, इस वैल्यू से कुछ ज़्यादा हो सकता है. सेकंड में दी गई अवधि, जिसमें नौ भिन्नांक हो सकते हैं. साथ ही, यह ' |
कर्मचारी
शेड्यूल किया जाने वाला वर्कफ़ोर्स का कर्मचारी.
जेएसओएन के काेड में दिखाना |
---|
{ "id": string, "roleIds": [ string ], "skillIds": [ string ], "shiftPreferences": [ { object ( |
फ़ील्ड | |
---|---|
id |
इस कर्मचारी को असाइन किया गया यूनीक आईडी. |
roleIds[] |
वे भूमिका आईडी जिन्हें यह कर्मचारी परफ़ॉर्म कर सकता है. कम से कम एक भूमिका तय होनी चाहिए. जब किसी कर्मचारी को किसी शिफ़्ट में शामिल किया जाता है, तो उसे भी इस सूची में से एक ही भूमिका असाइन की जाती है. अपॉइंटमेंट शेड्यूल करने की समयसीमा के दौरान, कर्मचारी को अलग-अलग भूमिकाएं मिल सकती हैं. |
skillIds[] |
इस कर्मचारी के पास जो स्किल आईडी हैं. यह सूची खाली हो सकती है. जब किसी कर्मचारी को शिफ़्ट में काम असाइन किया जाता है, तो वह यहां दिए गए कौशल के किसी भी सबसेट का इस्तेमाल करता है. वह असाइन किए गए शिफ़्ट के दौरान स्किल की ज़रूरी शर्तों को पूरा करने के लिए, यहां दिए गए कौशल का इस्तेमाल करता है. |
shiftPreferences[] |
इस कर्मचारी की प्राथमिकताएं बदलें. यहां बताए गए शिफ़्ट उन शिफ़्ट को दिखाते हैं जिनमें कर्मचारी शेड्यूल करने की समयसीमा के दौरान असाइन किया जाना पसंद करता है. |
schedulingConstraints[] |
इस कर्मचारी के लिए शेड्यूल करने से जुड़ी पाबंदियों की सूची. इनमें से हर सीमा के लिए, प्राथमिकता का डिफ़ॉल्ट लेवल |
resourceConstraints[] |
|
shiftRequests[] |
कर्मचारी के लिए, शिफ़्ट के अनुरोधों की सूची. यह हो सकता है कि किसी कर्मचारी को कुछ खास शिफ़्ट में काम असाइन किया जाए या न किया जाए. कर्मचारी के लिए तय किए गए किसी भी शेड्यूल असाइनमेंट को प्राथमिकता वाले |
hourlyContract |
इसमें कर्मचारी के लिए, नियमित और ओवरटाइम के लिए घंटे के हिसाब से तय की गई दरें होती हैं. |
ShiftPreference
किसी खास शिफ़्ट आईडी के लिए अंकों वाली प्राथमिकता.
जेएसओएन के काेड में दिखाना |
---|
{ "shiftId": string, "preference": integer } |
फ़ील्ड | |
---|---|
shiftId |
वह Shift आईडी जिसके लिए प्राथमिकता तय की गई है. |
preference |
प्राथमिकता के बड़े मान एक ज़्यादा ज़रूरी बदलाव की ओर इशारा करते हैं. |
SchedulingConstraint
किसी खास कर्मचारी के लिए शेड्यूल करने से जुड़ी खास पाबंदियां. तय किया गया कंस्ट्रेंट, सिर्फ़ दिए गए इंटरवल [startDateTime,
endDateTime)
के दौरान लागू किया जाता है.
जेएसओएन के काेड में दिखाना |
---|
{ "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
में नहीं दिखाया जा सकता.
जेएसओएन के काेड में दिखाना |
---|
{
"priority": enum ( |
फ़ील्ड | |
---|---|
priority |
इस रिसॉर्स कंस्ट्रेंट की प्राथमिकता का लेवल. सभी तरह के संसाधनों के लिए डिफ़ॉल्ट प्राथमिकता |
resourceUsages |
शिफ़्ट में इस्तेमाल किए गए संसाधन की संख्या. उदाहरण के लिए, अगर यह सीमा किसी कर्मचारी के किसी हफ़्ते में काम करने के लिए तय किए गए कम से कम और ज़्यादा से ज़्यादा घंटों पर लागू होती है, तो इस मैप में उस हफ़्ते होने वाले शिफ़्ट और घंटों के हिसाब से हर शिफ़्ट की अवधि शामिल होगी. एक ऑब्जेक्ट, जिसमें |
minimumResourceUsage |
रिसॉर्स कंस्ट्रेंट के लिए कम से कम संसाधन इस्तेमाल करना ज़रूरी है. |
maximumResourceUsage |
किसी संसाधन की सीमा के लिए संसाधन का ज़्यादा से ज़्यादा इस्तेमाल, जिसे पूरा किया जा सके. |
ShiftRequest
किसी खास शिफ़्ट में काम असाइन किए जाने या न किए जाने के बारे में कर्मचारी का अनुरोध.
जेएसओएन के काेड में दिखाना |
---|
{ "priority": enum ( |
फ़ील्ड | |
---|---|
priority |
शेड्यूल करने के इस अनुरोध की प्राथमिकता का लेवल. शेड्यूल करने के सभी अनुरोधों की डिफ़ॉल्ट प्राथमिकता |
shiftIds[] |
शेड्यूल करने के अनुरोध का शिफ़्ट आईडी. |
type |
अनुरोध का टाइप, जैसे कि अनुरोध असाइन किया जाए या नहीं. |
WorkStatus
कर्मचारी काम करता है या नहीं.
Enums | |
---|---|
WORK_STATUS_UNSPECIFIED |
काम की स्थिति की जानकारी नहीं है. |
STATUS_WORK |
कामकाजी कर्मचारी का स्टेटस. |
STATUS_NOT_WORK |
वह कर्मचारी जो काम नहीं करने वाला कर्मचारी है. |
HourlyContract
किसी कर्मचारी का मुआवज़ा तय करने के लिए इसमें हर घंटे के हिसाब से दर, दर में अंतर, और ओवरटाइम मल्टीप्लायर की जानकारी दी जाती है. नोट: अलग-अलग जगहों पर कानूनों के तहत, ओवरटाइम मुआवज़े का हिसाब अलग-अलग लगाया जा सकता है. सॉल्वर, कुल लागत के प्रॉक्सी को कम करने या बजट को पूरा करने (BudgetRequirement
देखें) के लिए, ओवरटाइम मुआवज़े का अनुमान लगाता है. यह पेरोल का हिसाब लगाने के लिए नहीं है.
जेएसओएन के काेड में दिखाना |
---|
{
"baseHourlyRate": number,
"hourlyRateShiftDifferentials": {
string: number,
...
},
"overtimePeriods": [
{
object ( |
फ़ील्ड | |
---|---|
baseHourlyRate |
समय के साथ काम करने के बदले मिलने वाला मुआवज़ा. अगर कर्मचारी पर एक से ज़्यादा दरें लागू होती हैं, तो इस आधार हर घंटे के हिसाब से दर के अंतर लागू किए जाते हैं. इसके अलावा, अगर एक से ज़्यादा दरें हैं, तो हर घंटे की बुनियादी दर इन दरों से कम से कम होनी चाहिए. |
hourlyRateShiftDifferentials |
हर घंटे की दर का अंतर, जिसे एक ऑब्जेक्ट, जिसमें |
overtimePeriods[] |
उन सभी अवधियों की सूची जिनके लिए ओवरटाइम का हिसाब लगाना है. ये अवधियां ओवरलैप नहीं होनी चाहिए. |
OvertimePeriod
एक तय और नियमित रूप से बार-बार लगने वाला समय (आम तौर पर 168 घंटे या लगातार 24 घंटे की अवधि) जिसका इस्तेमाल ओवरटाइम मुआवज़े की रकम तय करने के लिए किया जाता है. हर अवधि में एक ओवरटाइम मल्टीप्लायर होता है (उदाहरण के लिए, 1.5) और उन घंटों की संख्या की एक सीमा जिन्हें नियमित (नॉन-ओवरटाइम) काम माना जाता है.baseHourlyRate
startDateTime
(शामिल) और endDateTime
(खास) टाइम विंडो के साथ ओवरलैप होने वाली किसी भी शिफ़्ट को, उस समयावधि में काम करने वाले कुल घंटों में गिना जाता है. अगर ओवरलैप आंशिक है, तो सिर्फ़ ओवरलैप होने वाले घंटों को गिना जाएगा.
जेएसओएन के काेड में दिखाना |
---|
{ "overtimeMultiplier": number, "startDateTime": { object ( |
फ़ील्ड | |
---|---|
overtimeMultiplier |
हर घंटे की ओवरटाइम दर का हिसाब लगाने के लिए मल्टीप्लायर (यह 1.0 से ज़्यादा या इसके बराबर होना चाहिए). ओवरटाइम की घंटे के हिसाब से दर का हिसाब आम तौर पर, |
startDateTime |
ओवरटाइम के लिए शुरू होने का समय. अगर इस बार कोई शिफ़्ट ओवरलैप होती है, तो ऐसे शिफ़्ट के घंटों की गिनती |
endDateTime |
ओवरटाइम के लिए खत्म होने का समय. अगर इस बार कोई शिफ़्ट ओवरलैप होती है, तो ऐसे शिफ़्ट के घंटों की गिनती |
maximumRegularHours |
काम के घंटों की ज़्यादा से ज़्यादा संख्या, जिनके लिए पेमेंट नियमित (नॉन-ओवरटाइम) दर पर किया जाता है. यह संख्या पॉज़िटिव होनी चाहिए. |
Shift
शिफ़्ट एक तय समयसीमा के बारे में बताती है, जिसमें कर्मचारी काम कर सकते हैं.
जेएसओएन के काेड में दिखाना |
---|
{ "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:1:1:1:
जेएसओएन के काेड में दिखाना |
---|
{ "earliestStartTime": { object ( |
फ़ील्ड | |
---|---|
earliestStartTime |
ब्रेक के शुरू होने का सबसे पहला समय (शामिल). सिर्फ़ |
latestStartTime |
ब्रेक शुरू होने का सबसे नया समय (शामिल). सिर्फ़ |
durationMinutes |
ब्रेक की अवधि (मिनट में. |
ruleIncrementMinutes |
[ज़रूरी नहीं] ब्रेक के लिए इस नियम में इस्तेमाल किए जा सकने वाले सभी ब्रेक के लिए, मिनट में समय की बढ़ोतरी. अगर यह नीति सेट नहीं है, तो डिफ़ॉल्ट रूप से |
CoverageRequirement
कवरेज से जुड़ी शर्त से यह पता चलता है कि किसी खास समयावधि में और किसी जगह पर, अलग-अलग भूमिकाओं और/या कौशल के लिए कितने कर्मचारियों की ज़रूरत पड़ती है. किसी खास जगह पर, तारीख और समय के अंतराल ओवरलैप नहीं हो सकते. इसके अलावा, टाइम विंडो और जगह के बजाय, शिफ़्ट आईडी की सूची दी जा सकती है. इस शर्त को सिर्फ़ ऐसे कर्मचारी पूरा कर सकते हैं जिन्हें कोई खास भूमिका असाइन की जा सकती हो या जिन्हें कोई खास हुनर असाइन किया गया हो.
किसी भूमिका और/या कौशल के लिए, कवरेज की ज़रूरी शर्त तब पूरी होती है, जब टाइम विंडो में हर समय (या shiftIds
में हर शिफ़्ट के लिए) कम से कम targetEmployeeCount
कर्मचारी काम कर रहे हों. इसके उलट, टाइम विंडो के दौरान किसी भी समय (या shiftIds
में किसी भी शिफ़्ट में) काम करने पर, कवरेज की ज़रूरी शर्त का उल्लंघन होता है. इस दौरान targetEmployeeCount
से कम कर्मचारी काम कर रहे हैं. targetEmployeeCount
की तुलना में ज़्यादा कामकाजी कर्मचारी अब भी इस शर्त को पूरा करते हैं, लेकिन सॉल्वर ने बहुत ज़्यादा लोगों को शामिल नहीं किया है.
जेएसओएन के काेड में दिखाना |
---|
{ "startDateTime": { object ( |
फ़ील्ड | |
---|---|
startDateTime |
कवरेज से जुड़ी ज़रूरी शर्त के शुरू होने का समय (शामिल). अगर यह नीति सेट है, तो |
endDateTime |
कवरेज से जुड़ी ज़रूरी शर्त खत्म होने का समय (खास तौर पर). अगर यह नीति सेट है, तो |
locationId |
वह जगह जहां कर्मचारियों की ज़रूरत होती है. |
shiftIds[] |
अगर भूमिका सेट हो जाती है, तो इस सूची में मौजूद हर शिफ़्ट आईडी के लिए भूमिका और कौशल से जुड़ी शर्तें अलग-अलग लागू की जाती हैं. अगर shiftId खाली नहीं हैं, तो |
roleRequirements[] |
समयावधि के दौरान बताई गई भूमिकाओं को असाइन करने के लिए कर्मचारियों की ज़रूरी संख्या. हर भूमिका आईडी के लिए, ज़्यादा से ज़्यादा एक |
skillRequirements[] |
तय कौशल वाले ऐसे कर्मचारियों की संख्या जिन्हें टाइम विंडो के दौरान शिफ़्ट में असाइन किया गया है. हर स्किल आईडी के लिए, ज़्यादा से ज़्यादा एक |
RoleRequirement
समयावधि के दौरान तय भूमिका में असाइन किए जाने वाले कर्मचारियों की ज़रूरी संख्या.
जेएसओएन के काेड में दिखाना |
---|
{
"roleId": string,
"targetEmployeeCount": integer,
"priority": enum ( |
फ़ील्ड | |
---|---|
roleId |
ज़रूरी शर्त के लिए भूमिका का आईडी. |
targetEmployeeCount |
समयावधि के दौरान भूमिका में असाइन किए गए कर्मचारियों की संख्या. |
priority |
इस ज़रूरी शर्त के लिए प्राथमिकता का लेवल. सभी तरह के संसाधनों के लिए डिफ़ॉल्ट प्राथमिकता |
SkillRequirement
ऐसे कर्मचारियों की संख्या जो टाइम विंडो के दौरान काम कर रहे हैं और जिनके पास खास कौशल है.
जेएसओएन के काेड में दिखाना |
---|
{
"skillId": string,
"targetEmployeeCount": integer,
"priority": enum ( |
फ़ील्ड | |
---|---|
skillId |
ज़रूरी शर्त के लिए स्किल आईडी. |
targetEmployeeCount |
समयावधि के दौरान काम करने वाले ज़रूरी स्किल वाले कर्मचारियों की संख्या. |
priority |
इस ज़रूरी शर्त के लिए प्राथमिकता का लेवल. सभी तरह के संसाधनों के लिए डिफ़ॉल्ट प्राथमिकता |
BudgetRequirement
किसी दिए गए इंटरवल के लिए बजट की ज़रूरतें.
जेएसओएन के काेड में दिखाना |
---|
{ "totalBudget": number, "startDateTime": { object ( |
फ़ील्ड | |
---|---|
totalBudget |
दिए गए इंटरवल के लिए कुल बजट. अगर प्राथमिकता अगर |
startDateTime |
यह बजट लागू होने का समय, शुरुआत का समय है. अगर शुरुआत का समय तय नहीं किया गया है, तो यह दी गई सभी शिफ़्ट के शुरू होने का समय सबसे पहले सेट किया जाएगा. |
endDateTime |
यह बजट लागू होने का खत्म होने का समय. अगर खत्म होने का समय तय नहीं किया गया है, तो इसे दी गई सभी शिफ़्ट के खत्म होने का सबसे नया समय माना जाएगा. |
priority |
तय की गई समयावधि के दौरान, बजट की ज़रूरी शर्त को पूरा करने के लिए प्राथमिकता का लेवल. डिफ़ॉल्ट प्राथमिकता ध्यान दें कि अगर यह प्राथमिकता अन्य कंस्ट्रेंट प्राथमिकताओं से ज़्यादा है और |
ShiftAssignment
शिफ़्ट करने के लिए एक कर्मचारी.
जेएसओएन के काेड में दिखाना |
---|
{
"employeeId": string,
"shiftId": string,
"roleId": string,
"breaks": [
{
object ( |
फ़ील्ड | |
---|---|
employeeId |
असाइन किया जा रहा कर्मचारी आईडी. |
shiftId |
कर्मचारी को असाइन किया गया Shift आईडी. |
roleId |
वह भूमिका आईडी जो कर्मचारी को शिफ़्ट के लिए असाइन किया गया है. |
breaks[] |
शिफ़्ट के इस असाइनमेंट के लिए ब्रेक की सूची. |
ब्रेक
वह समयावधि जिसमें कर्मचारी, शिफ़्ट के दौरान अपने काम में रुकावट डालता है.
जेएसओएन के काेड में दिखाना |
---|
{
"startDateTime": {
object ( |
फ़ील्ड | |
---|---|
startDateTime |
ब्रेक शुरू होने का समय. |
durationMinutes |
ब्रेक की अवधि (मिनट में. |
SolutionStatus
सॉल्वर के जवाब के तौर पर दी गई सलूशन की स्थिति. जैसे, कोई शेड्यूल.
Enums | |
---|---|
SOLUTION_STATUS_UNSPECIFIED |
जवाब के लिए स्थिति तय नहीं है. |
FEASIBLE |
दिखाए जाने वाले शेड्यूल को देखना संभव है, लेकिन हो सकता है कि यह सबसे सटीक न हो. |
OPTIMAL |
दिखाया जाने वाला शेड्यूल सबसे बेहतर है. |
INFEASIBLE |
इन सीमाओं के लिए कोई शेड्यूल मौजूद नहीं है. अगर प्राथमिकता लेवल PRIORITY_MANDATORY वाले कंस्ट्रेंट का कोई सबसेट पूरा नहीं होता, तो सॉल्वर यह वैल्यू दिखा सकता है. |
NOT_SOLVED |
कोई शेड्यूल नहीं मिला. |
NOT_SOLVED_DEADLINE_EXCEEDED |
दी गई समयसीमा के अंदर कोई शेड्यूल नहीं मिला. |