Method: scheduling.solveShiftScheduling

कर्मचारियों को शिफ़्ट शेड्यूल करने के लिए तय किए गए SolveShiftSchedulingRequest में, शिफ़्ट शेड्यूल करने से जुड़े तय समस्या को हल किया जाता है. इससे कर्मचारियों की शेड्यूल से जुड़ी प्राथमिकताएं ज़्यादा से ज़्यादा होती हैं और शेड्यूल से जुड़ी दिक्कतों को कम किया जाता है.

एचटीटीपी अनुरोध

POST https://optimization.googleapis.com/v1/scheduling:solveShiftScheduling

यह यूआरएल gRPC ट्रांसकोडिंग सिंटैक्स का इस्तेमाल करता है.

अनुरोध का मुख्य भाग

अनुरोध के मुख्य हिस्से में, इस तरह का डेटा शामिल होता है:

जेएसओएन के काेड में दिखाना
{
  "requestId": string,
  "solveParameters": {
    object (SolveParameters)
  },
  "employees": [
    {
      object (Employee)
    }
  ],
  "shifts": [
    {
      object (Shift)
    }
  ],
  "coverageRequirements": [
    {
      object (CoverageRequirement)
    }
  ],
  "roleIds": [
    string
  ],
  "skillIds": [
    string
  ],
  "locationIds": [
    string
  ],
  "budgetRequirements": [
    {
      object (BudgetRequirement)
    }
  ],
  "assignmentsHint": [
    {
      object (ShiftAssignment)
    }
  ]
}
फ़ील्ड
requestId

string

कोई समस्या या अनुरोध का आईडी.

solveParameters

object (SolveParameters)

किसी सवाल को एक ही बार हल करने के लिए पैरामीटर.

employees[]

object (Employee)

सभी उपलब्ध कर्मचारियों को शेड्यूल किया जाएगा.

shifts[]

object (Shift)

शेड्यूल बनाने के लिए सभी शिफ़्ट.

coverageRequirements[]

object (CoverageRequirement)

प्लान की पूरी प्लानिंग के लिए, कवरेज से जुड़ी ज़रूरी शर्तें. इन कर्मचारियों की संख्या में उन कर्मचारियों की संख्या बताई जाती है जिन्हें समयावधि या शिफ़्ट आईडी की सूची में अलग-अलग भूमिका में काम करना होगा या जिन्हें इस कौशल में महारत हासिल करनी होगी. कवरेज से जुड़ी सभी ज़रूरी शर्तों को टाइम विंडो या शिफ़्ट आईडी की सूची में बताया जाना चाहिए, लेकिन दोनों नहीं. कवरेज की ज़रूरी शर्तों के लिए टाइम विंडो (अगर दी गई हो), दी गई हर जगह के लिए ओवरलैप नहीं हो सकती. इन सभी शर्तों के लिए, प्राथमिकता का डिफ़ॉल्ट लेवल, रोल से जुड़ी ज़रूरी शर्तों के लिए PRIORITY_MANDATORY और स्किल की ज़रूरी शर्तों के लिए PRIORITY_LOW है. ज़्यादा जानकारी के लिए, Priority की सूची देखें.

roleIds[]

string

संगठन में काम करने वाले लोगों से जुड़ी सभी संभावित भूमिकाओं की सूची. हर कर्मचारी को कम से कम एक भूमिका असाइन की जानी चाहिए, जो उसे किसी शिफ़्ट में दी जा सके. पद का मतलब है, शिफ़्ट के दौरान असाइन की जाने वाली खास नौकरी. जैसे, रजिस्टर की गई नर्स, एक्ज़ीक्यूटिव शेफ़, वेटर वगैरह. जब किसी कर्मचारी को शिफ़्ट में काम असाइन किया जाता है, तो उसे भी एक खास भूमिका ही असाइन की जाती है.

skillIds[]

string

संगठन के कर्मचारियों से जुड़े सभी संभावित कौशल की सूची. स्किल का मतलब ऐसी अतिरिक्त योग्यता से है जो कर्मचारी में हो सकता है कि वह असाइन की जा सकने वाली किसी खास नौकरी से न जुड़ी हो. जैसे, सर्टिफ़िकेशन, बोली गई भाषाएं वगैरह. यह सूची खाली हो सकती है. जब किसी कर्मचारी को किसी शिफ़्ट में काम दिया जाता है, तो उसे उस शिफ़्ट के लिए ज़रूरी सभी स्किल पूरे करने होते हैं.

locationIds[]

string

शेड्यूल में शिफ़्ट के सेट के लिए सभी संभावित जगहों की सूची. यह सूची खाली हो सकती है. अलग-अलग जगहों की जानकारी देना तब फ़ायदेमंद हो सकता है, जब कोई नर्स मैनेजर किसी अस्पताल के अलग-अलग यूनिट में काम करने के लिए कई नर्सों को शेड्यूल करना चाहता है या किसी दूसरे उदाहरण के लिए, कोई होटल मैनेजर अपने कर्मचारियों को एक से ज़्यादा होटलों के लिए शेड्यूल करना चाहता है.

budgetRequirements[]

object (BudgetRequirement)

शेड्यूल करने से जुड़ी समस्या के लिए बजट की जानकारी. इनमें से हर ज़रूरी शर्त के लिए, प्राथमिकता का डिफ़ॉल्ट लेवल PRIORITY_LOW है. ज़्यादा जानकारी के लिए, Priority की सूची देखें.

assignmentsHint[]

object (ShiftAssignment)

शेड्यूल करने से जुड़ी समस्या के लिए अस्थायी समाधान (जैसे, समाधान से जुड़ा संकेत) के तौर पर इस्तेमाल करने के लिए असाइनमेंट शिफ़्ट करें. अगर असाइनमेंट, असाइन न किए जा सकने वाले शिफ़्ट या शेड्यूल करने के अनुरोध से मेल न खाता हो, तो उन संकेतों को अनदेखा कर दिया जाता है.

जवाब का मुख्य भाग

वर्कफ़ोर्स शेड्यूलिंग एपीआई से जुड़ा जवाब. अगर solutionStatus का मान NOT_SOLVED_DEADLINE_EXCEEDED या INFEASIBLE है, तो हर जवाब के लिए shiftAssignments खाली रहेगा. अगर solutionStatus का मान OPTIMAL या FEASIBLE है, तो शिफ़्ट का मान्य असाइनमेंट shiftAssignments में मिलेगा. मान्य शिफ़्ट असाइनमेंट के लिए, इन प्रॉपर्टी में ये शामिल होती हैं:

  1. हर कर्मचारी आईडी, अनुरोध में दिए गए कर्मचारियों के ग्रुप में शामिल होता है.
  2. कर्मचारी को असाइन की गई हर भूमिका आईडी, दिए गए कर्मचारी के भूमिका आईडी के सेट में शामिल होती है.
  3. हर शिफ़्ट आईडी, अनुरोध में दिए गए शिफ़्ट के सेट में शामिल होते हैं.
  4. हर शिफ़्ट आईडी, दिए गए कर्मचारी के लिए असाइन न किए जा सकने वाले शिफ़्ट आईडी में से एक नहीं होता है.
  5. किसी कर्मचारी को ओवरलैप होने वाली दो शिफ़्ट में काम नहीं असाइन किया जाएगा.
  6. दिए गए शेड्यूल के लिए, प्राथमिकता लेवल PRIORITY_MANDATORY वाले किसी भी अनुरोध या शर्त का उल्लंघन नहीं किया गया है.

अगर एपीआई सही से जुड़ जाता है, ताे जवाब के मुख्य भाग में नीचे दिए गए स्ट्रक्चर शामिल होता है.

जेएसओएन के काेड में दिखाना
{
  "requestId": string,
  "solutionStatus": enum (SolutionStatus),
  "shiftAssignments": [
    {
      object (ShiftAssignment)
    }
  ],
  "statusMessage": string
}
फ़ील्ड
requestId

string

उस अनुरोध का आईडी जिससे यह रिस्पॉन्स जुड़ा है.

solutionStatus

enum (SolutionStatus)

लौटाए गए समाधान की स्थिति. अगर समाधान व्यावहारिक या ऑप्टिमाइज़ नहीं है, तो इस प्रोटो के अन्य फ़ील्ड खाली हो सकते हैं. अगर स्थिति NOT_SOLVED_DEADLINE_EXCEEDED है, तो कोई संभव समाधान नहीं ढूंढने या यह तय किए बिना कि कोई संभव समाधान मौजूद है या नहीं, समयसीमा पूरी हो गई थी. अगर प्राथमिकता लेवल MANDATORY की सभी शर्तें पूरी नहीं की जा सकतीं, तो अनुरोध पूरे नहीं किए जा सकते.

shiftAssignments[]

object (ShiftAssignment)

सभी असाइनमेंट की सूची. हर ShiftAssignment में किसी कर्मचारी के बारे में जानकारी दी जाती है. साथ ही, यह भी बताया जाता है कि उसे किस शिफ़्ट में काम करना है, और वह कौनसी भूमिका निभानी है.

statusMessage

string

अगर solutionStatus सही नहीं है, तो इस फ़ील्ड में सॉल्वर के बारे में ज़्यादा जानकारी हो सकती है.

SolveParameters

ऐसे पैरामीटर जो शिफ़्ट शेड्यूल करने से जुड़ी समस्या के एक समाधान को कंट्रोल करते हैं.

जेएसओएन के काेड में दिखाना
{
  "timeLimit": string
}
फ़ील्ड
timeLimit

string (Duration format)

सॉल्वर को सवाल हल करने में ज़्यादा से ज़्यादा समय देना चाहिए. अगर यह अवधि सेट नहीं है, तो डिफ़ॉल्ट तौर पर एक मिनट दिखेगा.

यह वैल्यू तय सीमा से ज़्यादा नहीं होनी चाहिए और इसमें कम्यूनिकेशन से जुड़े ओवरहेड शामिल नहीं होते. समस्या हल करने में लगने वाला अनुमानित समय, इस वैल्यू से कुछ ज़्यादा हो सकता है.

सेकंड में दी गई अवधि, जिसमें नौ भिन्नांक हो सकते हैं. साथ ही, यह 's' पर खत्म होता है. उदाहरण: "3.5s".

कर्मचारी

शेड्यूल किया जाने वाला वर्कफ़ोर्स का कर्मचारी.

जेएसओएन के काेड में दिखाना
{
  "id": string,
  "roleIds": [
    string
  ],
  "skillIds": [
    string
  ],
  "shiftPreferences": [
    {
      object (ShiftPreference)
    }
  ],
  "schedulingConstraints": [
    {
      object (SchedulingConstraint)
    }
  ],
  "resourceConstraints": [
    {
      object (ResourceConstraint)
    }
  ],
  "shiftRequests": [
    {
      object (ShiftRequest)
    }
  ],
  "hourlyContract": {
    object (HourlyContract)
  }
}
फ़ील्ड
id

string

इस कर्मचारी को असाइन किया गया यूनीक आईडी.

roleIds[]

string

वे भूमिका आईडी जिन्हें यह कर्मचारी परफ़ॉर्म कर सकता है. कम से कम एक भूमिका तय होनी चाहिए. जब किसी कर्मचारी को किसी शिफ़्ट में शामिल किया जाता है, तो उसे भी इस सूची में से एक ही भूमिका असाइन की जाती है. अपॉइंटमेंट शेड्यूल करने की समयसीमा के दौरान, कर्मचारी को अलग-अलग भूमिकाएं मिल सकती हैं.

skillIds[]

string

इस कर्मचारी के पास जो स्किल आईडी हैं. यह सूची खाली हो सकती है. जब किसी कर्मचारी को शिफ़्ट में काम असाइन किया जाता है, तो वह यहां दिए गए कौशल के किसी भी सबसेट का इस्तेमाल करता है. वह असाइन किए गए शिफ़्ट के दौरान स्किल की ज़रूरी शर्तों को पूरा करने के लिए, यहां दिए गए कौशल का इस्तेमाल करता है.

shiftPreferences[]

object (ShiftPreference)

इस कर्मचारी की प्राथमिकताएं बदलें. यहां बताए गए शिफ़्ट उन शिफ़्ट को दिखाते हैं जिनमें कर्मचारी शेड्यूल करने की समयसीमा के दौरान असाइन किया जाना पसंद करता है. shiftPreferences में दिए गए Shift आईडी यूनीक होने चाहिए. सॉल्वर, संतुष्ट सभी shiftPreferences में से ShiftPreference.preference की वैल्यू को ज़्यादा से ज़्यादा बढ़ाने की कोशिश करेगा.

schedulingConstraints[]

object (SchedulingConstraint)

इस कर्मचारी के लिए शेड्यूल करने से जुड़ी पाबंदियों की सूची. इनमें से हर सीमा के लिए, प्राथमिकता का डिफ़ॉल्ट लेवल PRIORITY_MEDIUM है. ज़्यादा जानकारी के लिए, Priority की सूची देखें.

resourceConstraints[]

object (ResourceConstraint)

schedulingConstraints में बताई गई कोई भी अतिरिक्त शेड्यूलिंग सीमा यहां resourceConstraints में जोड़ी जा सकती है. ResourceConstraint में किसी कर्मचारी के लिए सीमित संसाधनों का इस्तेमाल किया जाता है. इनमें से हर सीमा के लिए, प्राथमिकता का डिफ़ॉल्ट लेवल PRIORITY_MEDIUM है. ज़्यादा जानकारी के लिए, Priority की सूची देखें.

shiftRequests[]

object (ShiftRequest)

कर्मचारी के लिए, शिफ़्ट के अनुरोधों की सूची. यह हो सकता है कि किसी कर्मचारी को कुछ खास शिफ़्ट में काम असाइन किया जाए या न किया जाए. कर्मचारी के लिए तय किए गए किसी भी शेड्यूल असाइनमेंट को प्राथमिकता वाले PRIORITY_MANDATORY के साथ ShiftRequest के साथ दिखाया जा सकता है. इस कर्मचारी के लिए, शेड्यूल करने का ज़्यादा से ज़्यादा एक अनुरोध में शिफ़्ट आईडी दिख सकता है. इनमें से हर अनुरोध के लिए, प्राथमिकता का डिफ़ॉल्ट लेवल PRIORITY_LOW है. ज़्यादा जानकारी के लिए, Priority की सूची देखें.

hourlyContract

object (HourlyContract)

इसमें कर्मचारी के लिए, नियमित और ओवरटाइम के लिए घंटे के हिसाब से तय की गई दरें होती हैं.

ShiftPreference

किसी खास शिफ़्ट आईडी के लिए अंकों वाली प्राथमिकता.

जेएसओएन के काेड में दिखाना
{
  "shiftId": string,
  "preference": integer
}
फ़ील्ड
shiftId

string

वह Shift आईडी जिसके लिए प्राथमिकता तय की गई है.

preference

integer

प्राथमिकता के बड़े मान एक ज़्यादा ज़रूरी बदलाव की ओर इशारा करते हैं.

SchedulingConstraint

किसी खास कर्मचारी के लिए शेड्यूल करने से जुड़ी खास पाबंदियां. तय किया गया कंस्ट्रेंट, सिर्फ़ दिए गए इंटरवल [startDateTime, endDateTime) के दौरान लागू किया जाता है.

जेएसओएन के काेड में दिखाना
{
  "priority": enum (Priority),
  "startDateTime": {
    object (DateTime)
  },
  "endDateTime": {
    object (DateTime)
  },

  // Union field type can be only one of the following:
  "minimumMinutes": integer,
  "maximumMinutes": integer,
  "minimumConsecutiveWorkDays": integer,
  "maximumConsecutiveWorkDays": integer,
  "minimumShiftCount": integer,
  "maximumShiftCount": integer,
  "minimumRestMinutes": integer
  // End of list of possible types for union field type.
}
फ़ील्ड
priority

enum (Priority)

शेड्यूल करने की इस सीमा के लिए प्राथमिकता का लेवल. शेड्यूल करने से जुड़े सभी प्रतिबंधों के लिए डिफ़ॉल्ट प्राथमिकता PRIORITY_MEDIUM है.

startDateTime

object (DateTime)

वह समय जब शेड्यूल करने से जुड़ी यह पाबंदी लागू होती है, तब शुरू होने का समय भी शामिल होता है.

endDateTime

object (DateTime)

खत्म होने का वह समय जब शेड्यूल करने से जुड़ी यह पाबंदी लागू होती है (खास तौर पर).

यूनियन फ़ील्ड type. तय किए जा रहे कंस्ट्रेंट का टाइप. हर कंस्ट्रेंट सिर्फ़ ऊपर बताई गई टाइम विंडो के अंदर लागू किया जाता है. type इनमें से सिर्फ़ एक हो सकती है:
minimumMinutes

integer

कर्मचारी कम से कम कितने मिनट तक काम कर सकता है. अगर कर्मचारी को कोई ऐसी शिफ़्ट असाइन की जाती है जो टाइम विंडो को ओवरलैप (पूरी तरह या कुछ हद तक) ओवरलैप करती है, तो इसमें वे मिनट शामिल किए जाएंगे जिनमें शिफ़्ट ने टाइम विंडो को ओवरलैप किया है.

maximumMinutes

integer

समयावधि में कर्मचारी ज़्यादा से ज़्यादा मिनट में काम कर सकता है. अगर कर्मचारी को कोई ऐसी शिफ़्ट असाइन की जाती है जो टाइम विंडो को ओवरलैप (पूरी तरह या कुछ हद तक) ओवरलैप करती है, तो इसमें वे मिनट शामिल किए जाएंगे जिनमें शिफ़्ट ने टाइम विंडो को ओवरलैप किया है.

minimumConsecutiveWorkDays

integer

कर्मचारी को कम से कम कितने दिनों तक काम करना चाहिए. कर्मचारी को किसी खास दिन में काम करने का मौका मिलता है. ऐसा तब होता है, जब उसे किसी शिफ़्ट का काम असाइन किया जाता है. यह शिफ़्ट उस दिन शुरू होती है. कर्मचारी को टाइम विंडो में शुरू होने वाली किसी भी शिफ़्ट को इसमें शामिल किया जाता है.

maximumConsecutiveWorkDays

integer

कर्मचारी को ज़्यादा से ज़्यादा कितने दिनों तक काम करने की अनुमति है. कर्मचारी को किसी खास दिन में काम करने का मौका मिलता है. ऐसा तब होता है, जब उसे किसी शिफ़्ट का काम असाइन किया जाता है. यह शिफ़्ट उस दिन शुरू होती है. कर्मचारी को टाइम विंडो में शुरू होने वाली किसी भी शिफ़्ट को इसमें शामिल किया जाता है.

minimumShiftCount

integer

कर्मचारी को कम से कम कितने शिफ़्ट में काम करना चाहिए. इस गिनती में कर्मचारी को असाइन की गई ऐसी कोई भी शिफ़्ट शामिल होती है जो पूरी तरह से टाइम विंडो के साथ ओवरलैप करती है.

maximumShiftCount

integer

कर्मचारी ज़्यादा से ज़्यादा शिफ़्ट में काम कर सकते हैं. इस गिनती में कर्मचारी को असाइन की गई ऐसी कोई भी शिफ़्ट शामिल होती है जो पूरी तरह से टाइम विंडो के साथ ओवरलैप करती है.

minimumRestMinutes

integer

कर्मचारी को दूसरी शिफ़्ट में कम से कम कितने मिनट आराम करने चाहिए, वह एक शिफ़्ट के खत्म होने के बाद ही होगा. यह कंस्ट्रेंट, शिफ़्ट के हर जोड़े पर लागू होता है, जो [startDateTime, endDateTime] में पूरी तरह से शामिल है.

प्राथमिकता

कर्मचारी के शेड्यूल या कवरेज की ज़रूरी शर्तों पर किसी भी सीमा के लिए प्राथमिकता का लेवल. इनमें 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": {
    string: number,
    ...
  },
  "minimumResourceUsage": number,
  "maximumResourceUsage": number
}
फ़ील्ड
priority

enum (Priority)

इस रिसॉर्स कंस्ट्रेंट की प्राथमिकता का लेवल. सभी तरह के संसाधनों के लिए डिफ़ॉल्ट प्राथमिकता PRIORITY_MEDIUM है.

resourceUsages

map (key: string, value: number)

शिफ़्ट में इस्तेमाल किए गए संसाधन की संख्या. उदाहरण के लिए, अगर यह सीमा किसी कर्मचारी के किसी हफ़्ते में काम करने के लिए तय किए गए कम से कम और ज़्यादा से ज़्यादा घंटों पर लागू होती है, तो इस मैप में उस हफ़्ते होने वाले शिफ़्ट और घंटों के हिसाब से हर शिफ़्ट की अवधि शामिल होगी.

एक ऑब्जेक्ट, जिसमें "key": value पेयर की सूची है. उदाहरण: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

minimumResourceUsage

number

रिसॉर्स कंस्ट्रेंट के लिए कम से कम संसाधन इस्तेमाल करना ज़रूरी है.

maximumResourceUsage

number

किसी संसाधन की सीमा के लिए संसाधन का ज़्यादा से ज़्यादा इस्तेमाल, जिसे पूरा किया जा सके.

ShiftRequest

किसी खास शिफ़्ट में काम असाइन किए जाने या न किए जाने के बारे में कर्मचारी का अनुरोध.

जेएसओएन के काेड में दिखाना
{
  "priority": enum (Priority),
  "shiftIds": [
    string
  ],
  "type": enum (WorkStatus)
}
फ़ील्ड
priority

enum (Priority)

शेड्यूल करने के इस अनुरोध की प्राथमिकता का लेवल. शेड्यूल करने के सभी अनुरोधों की डिफ़ॉल्ट प्राथमिकता PRIORITY_LOW है.

shiftIds[]

string

शेड्यूल करने के अनुरोध का शिफ़्ट आईडी.

type

enum (WorkStatus)

अनुरोध का टाइप, जैसे कि अनुरोध असाइन किया जाए या नहीं.

WorkStatus

कर्मचारी काम करता है या नहीं.

Enums
WORK_STATUS_UNSPECIFIED काम की स्थिति की जानकारी नहीं है.
STATUS_WORK कामकाजी कर्मचारी का स्टेटस.
STATUS_NOT_WORK वह कर्मचारी जो काम नहीं करने वाला कर्मचारी है.

HourlyContract

किसी कर्मचारी का मुआवज़ा तय करने के लिए इसमें हर घंटे के हिसाब से दर, दर में अंतर, और ओवरटाइम मल्टीप्लायर की जानकारी दी जाती है. नोट: अलग-अलग जगहों पर कानूनों के तहत, ओवरटाइम मुआवज़े का हिसाब अलग-अलग लगाया जा सकता है. सॉल्वर, कुल लागत के प्रॉक्सी को कम करने या बजट को पूरा करने (BudgetRequirement देखें) के लिए, ओवरटाइम मुआवज़े का अनुमान लगाता है. यह पेरोल का हिसाब लगाने के लिए नहीं है.

जेएसओएन के काेड में दिखाना
{
  "baseHourlyRate": number,
  "hourlyRateShiftDifferentials": {
    string: number,
    ...
  },
  "overtimePeriods": [
    {
      object (OvertimePeriod)
    }
  ]
}
फ़ील्ड
baseHourlyRate

number

समय के साथ काम करने के बदले मिलने वाला मुआवज़ा. अगर कर्मचारी पर एक से ज़्यादा दरें लागू होती हैं, तो इस आधार हर घंटे के हिसाब से दर के अंतर लागू किए जाते हैं. इसके अलावा, अगर एक से ज़्यादा दरें हैं, तो हर घंटे की बुनियादी दर इन दरों से कम से कम होनी चाहिए.

hourlyRateShiftDifferentials

map (key: string, value: number)

हर घंटे की दर का अंतर, जिसे baseHourlyRate के ऊपर दिया जाता है. उदाहरण के लिए, अगर हर घंटे की बुनियादी दर 30 डॉलर/घंटा है, तो "shift_1" के लिए 40 डॉलर/घंटा की दर से पेमेंट किया जाता है और "shift_2" का पेमेंट 45 डॉलर/घंटे की दर से किया जाता है, तो प्रोटो प्रज़ेंटेशन है: baseHourlyRate: 30 hourlyRateShiftDifferentials {key: "shift_1" value: 10} hourlyRateShiftDifferentials {key: "shift_2" value: 15}.

एक ऑब्जेक्ट, जिसमें "key": value पेयर की सूची है. उदाहरण: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

overtimePeriods[]

object (OvertimePeriod)

उन सभी अवधियों की सूची जिनके लिए ओवरटाइम का हिसाब लगाना है. ये अवधियां ओवरलैप नहीं होनी चाहिए.

OvertimePeriod

एक तय और नियमित रूप से बार-बार लगने वाला समय (आम तौर पर 168 घंटे या लगातार 24 घंटे की अवधि) जिसका इस्तेमाल ओवरटाइम मुआवज़े की रकम तय करने के लिए किया जाता है. हर अवधि में एक ओवरटाइम मल्टीप्लायर होता है (उदाहरण के लिए, 1.5) और उन घंटों की संख्या की एक सीमा जिन्हें नियमित (नॉन-ओवरटाइम) काम माना जाता है.baseHourlyRate startDateTime (शामिल) और endDateTime (खास) टाइम विंडो के साथ ओवरलैप होने वाली किसी भी शिफ़्ट को, उस समयावधि में काम करने वाले कुल घंटों में गिना जाता है. अगर ओवरलैप आंशिक है, तो सिर्फ़ ओवरलैप होने वाले घंटों को गिना जाएगा.

जेएसओएन के काेड में दिखाना
{
  "overtimeMultiplier": number,
  "startDateTime": {
    object (DateTime)
  },
  "endDateTime": {
    object (DateTime)
  },
  "maximumRegularHours": number
}
फ़ील्ड
overtimeMultiplier

number

हर घंटे की ओवरटाइम दर का हिसाब लगाने के लिए मल्टीप्लायर (यह 1.0 से ज़्यादा या इसके बराबर होना चाहिए). ओवरटाइम की घंटे के हिसाब से दर का हिसाब आम तौर पर, baseHourlyRate * overtimeMultiplier के तौर पर लगाया जाता है. अगर hourlyRateShiftDifferentials के ज़रिए एक से ज़्यादा दरें दी गई हैं, तो सॉल्वर ओवरटाइम की प्रति घंटे की दर का अनुमान लगाता है. साथ ही, वह ओवरटाइम अवधि के दौरान लागू होने वाले किराये के आसान औसत के साथ, उसका अनुमान लगाता है. ध्यान दें: अलग-अलग जगहों पर लागू कानूनों के तहत, ओवरटाइम मुआवज़े का हिसाब अलग तरीके से लगाया जा सकता है. सॉल्वर, कुल लागत के प्रॉक्सी को कम करने या बजट को पूरा करने के लिए ओवरटाइम मुआवज़े का अनुमान लगाता है. हालांकि, यह पेरोल का हिसाब लगाने वाले टूल के तौर पर नहीं होता है.

startDateTime

object (DateTime)

ओवरटाइम के लिए शुरू होने का समय. अगर इस बार कोई शिफ़्ट ओवरलैप होती है, तो ऐसे शिफ़्ट के घंटों की गिनती startDateTime से की जाती है.

endDateTime

object (DateTime)

ओवरटाइम के लिए खत्म होने का समय. अगर इस बार कोई शिफ़्ट ओवरलैप होती है, तो ऐसे शिफ़्ट के घंटों की गिनती endDateTime तक की जाती है.

maximumRegularHours

number

काम के घंटों की ज़्यादा से ज़्यादा संख्या, जिनके लिए पेमेंट नियमित (नॉन-ओवरटाइम) दर पर किया जाता है. यह संख्या पॉज़िटिव होनी चाहिए.

Shift

शिफ़्ट एक तय समयसीमा के बारे में बताती है, जिसमें कर्मचारी काम कर सकते हैं.

जेएसओएन के काेड में दिखाना
{
  "id": string,
  "locationId": string,
  "startDateTime": {
    object (DateTime)
  },
  "endDateTime": {
    object (DateTime)
  },
  "breakRules": [
    {
      object (BreakRule)
    }
  ]
}
फ़ील्ड
id

string

इस शिफ़्ट के लिए असाइन किया गया यूनीक आईडी.

locationId

string

वह जगह का आईडी जिसमें यह शिफ़्ट हुआ है. इसे खाली छोड़ा जा सकता है.

startDateTime

object (DateTime)

शिफ़्ट के शुरू होने का समय (शामिल).

endDateTime

object (DateTime)

शिफ़्ट के खत्म होने का समय (खास तौर पर). फ़िलहाल, सॉल्वर सिर्फ़ 24 घंटे से कम अवधि वाले शिफ़्ट में ही काम कर सकता है.

breakRules[]

object (BreakRule)

शिफ़्ट के दौरान होने वाले ब्रेक के नियमों की सूची. इस शिफ़्ट में काम करने वाले कर्मचारियों को हर break_rule के लिए एक ब्रेक असाइन किया जाता है. इस दौरान वे उस भूमिका से जुड़ी मांग को कवर नहीं करते हैं जिसे वे पूरा कर रहे हैं. इस शिफ़्ट की समय विंडो में, हर BreakRule टाइम विंडो को पूरी तरह शामिल किया जाना चाहिए.

BreakRule

वह नियम जिससे तय होता है कि किसी शिफ़्ट में ब्रेक कब शुरू हो सकता है और उसकी अवधि कब खत्म हो सकती है. सभी संभावित ब्रेक की सूची को ruleIncrementMinutes की बढ़ोतरी के हिसाब से तय किया जाता है. उदाहरण के लिए, अगर ब्रेक के लिए कोई नियम 30 मिनट का ब्रेक है, जो 10:00 से 11:00 के बीच शुरू हो सकता है और नियम में 20 मिनट की बढ़ोतरी हो सकती है, तो ऐसे ब्रेक की सूची इस तरह होगी: [10:00, 10:30], [10:20, 10:50], [10:40], 11:1:1:1:

जेएसओएन के काेड में दिखाना
{
  "earliestStartTime": {
    object (DateTime)
  },
  "latestStartTime": {
    object (DateTime)
  },
  "durationMinutes": integer,
  "ruleIncrementMinutes": integer
}
फ़ील्ड
earliestStartTime

object (DateTime)

ब्रेक के शुरू होने का सबसे पहला समय (शामिल). सिर्फ़ hours और minutes को सेट किया जा सकता है.

latestStartTime

object (DateTime)

ब्रेक शुरू होने का सबसे नया समय (शामिल). सिर्फ़ hours और minutes को सेट किया जा सकता है.

durationMinutes

integer

ब्रेक की अवधि (मिनट में.

ruleIncrementMinutes

integer

[ज़रूरी नहीं] ब्रेक के लिए इस नियम में इस्तेमाल किए जा सकने वाले सभी ब्रेक के लिए, मिनट में समय की बढ़ोतरी. अगर यह नीति सेट नहीं है, तो डिफ़ॉल्ट रूप से durationMinutes सेट होती है.

CoverageRequirement

कवरेज से जुड़ी शर्त से यह पता चलता है कि किसी खास समयावधि में और किसी जगह पर, अलग-अलग भूमिकाओं और/या कौशल के लिए कितने कर्मचारियों की ज़रूरत पड़ती है. किसी खास जगह पर, तारीख और समय के अंतराल ओवरलैप नहीं हो सकते. इसके अलावा, टाइम विंडो और जगह के बजाय, शिफ़्ट आईडी की सूची दी जा सकती है. इस शर्त को सिर्फ़ ऐसे कर्मचारी पूरा कर सकते हैं जिन्हें कोई खास भूमिका असाइन की जा सकती हो या जिन्हें कोई खास हुनर असाइन किया गया हो.

किसी भूमिका और/या कौशल के लिए, कवरेज की ज़रूरी शर्त तब पूरी होती है, जब टाइम विंडो में हर समय (या shiftIds में हर शिफ़्ट के लिए) कम से कम targetEmployeeCount कर्मचारी काम कर रहे हों. इसके उलट, टाइम विंडो के दौरान किसी भी समय (या shiftIds में किसी भी शिफ़्ट में) काम करने पर, कवरेज की ज़रूरी शर्त का उल्लंघन होता है. इस दौरान targetEmployeeCount से कम कर्मचारी काम कर रहे हैं. targetEmployeeCount की तुलना में ज़्यादा कामकाजी कर्मचारी अब भी इस शर्त को पूरा करते हैं, लेकिन सॉल्वर ने बहुत ज़्यादा लोगों को शामिल नहीं किया है.

जेएसओएन के काेड में दिखाना
{
  "startDateTime": {
    object (DateTime)
  },
  "endDateTime": {
    object (DateTime)
  },
  "locationId": string,
  "shiftIds": [
    string
  ],
  "roleRequirements": [
    {
      object (RoleRequirement)
    }
  ],
  "skillRequirements": [
    {
      object (SkillRequirement)
    }
  ]
}
फ़ील्ड
startDateTime

object (DateTime)

कवरेज से जुड़ी ज़रूरी शर्त के शुरू होने का समय (शामिल). अगर यह नीति सेट है, तो shiftIds खाली होनी चाहिए.

endDateTime

object (DateTime)

कवरेज से जुड़ी ज़रूरी शर्त खत्म होने का समय (खास तौर पर). अगर यह नीति सेट है, तो shiftIds खाली होनी चाहिए.

locationId

string

वह जगह जहां कर्मचारियों की ज़रूरत होती है. shiftIds खाली नहीं है, यह फ़ील्ड खाली होना चाहिए.

shiftIds[]

string

अगर भूमिका सेट हो जाती है, तो इस सूची में मौजूद हर शिफ़्ट आईडी के लिए भूमिका और कौशल से जुड़ी शर्तें अलग-अलग लागू की जाती हैं. अगर shiftId खाली नहीं हैं, तो startDateTime, endDateTime, और locationId खाली होने चाहिए.

roleRequirements[]

object (RoleRequirement)

समयावधि के दौरान बताई गई भूमिकाओं को असाइन करने के लिए कर्मचारियों की ज़रूरी संख्या. हर भूमिका आईडी के लिए, ज़्यादा से ज़्यादा एक role_requirement देना ज़रूरी है. हर शर्त के लिए, प्राथमिकता का डिफ़ॉल्ट लेवल PRIORITY_MANDATORY है. अगर टाइम विंडो के दौरान किसी भी समय तय भूमिकाओं के लिए, targetEmployeeCount से कम कर्मचारियों को असाइन की जाती है, तो इन पाबंदियों का उल्लंघन होता है.

skillRequirements[]

object (SkillRequirement)

तय कौशल वाले ऐसे कर्मचारियों की संख्या जिन्हें टाइम विंडो के दौरान शिफ़्ट में असाइन किया गया है. हर स्किल आईडी के लिए, ज़्यादा से ज़्यादा एक skill_requirement दिया जाना चाहिए. हर शर्त के लिए, प्राथमिकता का डिफ़ॉल्ट लेवल PRIORITY_LOW है. अगर targetEmployeeCount से कम कर्मचारियों के पास टाइम विंडो में किसी भी समय दिए गए कौशल होते हैं, तो इन सीमाओं का उल्लंघन किया जाता है.

RoleRequirement

समयावधि के दौरान तय भूमिका में असाइन किए जाने वाले कर्मचारियों की ज़रूरी संख्या.

जेएसओएन के काेड में दिखाना
{
  "roleId": string,
  "targetEmployeeCount": integer,
  "priority": enum (Priority)
}
फ़ील्ड
roleId

string

ज़रूरी शर्त के लिए भूमिका का आईडी.

targetEmployeeCount

integer

समयावधि के दौरान भूमिका में असाइन किए गए कर्मचारियों की संख्या.

priority

enum (Priority)

इस ज़रूरी शर्त के लिए प्राथमिकता का लेवल. सभी तरह के संसाधनों के लिए डिफ़ॉल्ट प्राथमिकता PRIORITY_MANDATORY है.

SkillRequirement

ऐसे कर्मचारियों की संख्या जो टाइम विंडो के दौरान काम कर रहे हैं और जिनके पास खास कौशल है.

जेएसओएन के काेड में दिखाना
{
  "skillId": string,
  "targetEmployeeCount": integer,
  "priority": enum (Priority)
}
फ़ील्ड
skillId

string

ज़रूरी शर्त के लिए स्किल आईडी.

targetEmployeeCount

integer

समयावधि के दौरान काम करने वाले ज़रूरी स्किल वाले कर्मचारियों की संख्या.

priority

enum (Priority)

इस ज़रूरी शर्त के लिए प्राथमिकता का लेवल. सभी तरह के संसाधनों के लिए डिफ़ॉल्ट प्राथमिकता PRIORITY_LOW है.

BudgetRequirement

किसी दिए गए इंटरवल के लिए बजट की ज़रूरतें.

जेएसओएन के काेड में दिखाना
{
  "totalBudget": number,
  "startDateTime": {
    object (DateTime)
  },
  "endDateTime": {
    object (DateTime)
  },
  "priority": enum (Priority)
}
फ़ील्ड
totalBudget

number

दिए गए इंटरवल के लिए कुल बजट. अगर प्राथमिकता PRIORITY_MANDATORY है, तो कुल बजट देना ज़रूरी है.

अगर totalBudget सेट नहीं है, तो शेड्यूल की कुल लागत, बताए गए priority के हिसाब से कम कर दी जाती है. उदाहरण के लिए, अगर बजट के लिए priority PRIORITY_MEDIUM है, तो सॉल्वर प्राथमिकता PRIORITY_LOW के साथ किसी भी सीमा के उल्लंघन को कम करने से पहले लागत को कम करेगा.

startDateTime

object (DateTime)

यह बजट लागू होने का समय, शुरुआत का समय है. अगर शुरुआत का समय तय नहीं किया गया है, तो यह दी गई सभी शिफ़्ट के शुरू होने का समय सबसे पहले सेट किया जाएगा.

endDateTime

object (DateTime)

यह बजट लागू होने का खत्म होने का समय. अगर खत्म होने का समय तय नहीं किया गया है, तो इसे दी गई सभी शिफ़्ट के खत्म होने का सबसे नया समय माना जाएगा.

priority

enum (Priority)

तय की गई समयावधि के दौरान, बजट की ज़रूरी शर्त को पूरा करने के लिए प्राथमिकता का लेवल. डिफ़ॉल्ट प्राथमिकता PRIORITY_LOW है. अगर प्राथमिकता PRIORITY_MANDATORY पर सेट है, तो totalBudget को सेट करना ज़रूरी है.

ध्यान दें कि अगर यह प्राथमिकता अन्य कंस्ट्रेंट प्राथमिकताओं से ज़्यादा है और totalBudget सीमित है, तो नतीजे में मिलने वाला शेड्यूल, कर्मचारियों से जुड़ी शर्तों या कवरेज से जुड़ी ज़रूरी शर्तों का काफ़ी उल्लंघन कर सकता है.

ShiftAssignment

शिफ़्ट करने के लिए एक कर्मचारी.

जेएसओएन के काेड में दिखाना
{
  "employeeId": string,
  "shiftId": string,
  "roleId": string,
  "breaks": [
    {
      object (Break)
    }
  ]
}
फ़ील्ड
employeeId

string

असाइन किया जा रहा कर्मचारी आईडी.

shiftId

string

कर्मचारी को असाइन किया गया Shift आईडी.

roleId

string

वह भूमिका आईडी जो कर्मचारी को शिफ़्ट के लिए असाइन किया गया है.

breaks[]

object (Break)

शिफ़्ट के इस असाइनमेंट के लिए ब्रेक की सूची.

ब्रेक

वह समयावधि जिसमें कर्मचारी, शिफ़्ट के दौरान अपने काम में रुकावट डालता है.

जेएसओएन के काेड में दिखाना
{
  "startDateTime": {
    object (DateTime)
  },
  "durationMinutes": integer
}
फ़ील्ड
startDateTime

object (DateTime)

ब्रेक शुरू होने का समय.

durationMinutes

integer

ब्रेक की अवधि (मिनट में.

SolutionStatus

सॉल्वर के जवाब के तौर पर दी गई सलूशन की स्थिति. जैसे, कोई शेड्यूल.

Enums
SOLUTION_STATUS_UNSPECIFIED जवाब के लिए स्थिति तय नहीं है.
FEASIBLE दिखाए जाने वाले शेड्यूल को देखना संभव है, लेकिन हो सकता है कि यह सबसे सटीक न हो.
OPTIMAL दिखाया जाने वाला शेड्यूल सबसे बेहतर है.
INFEASIBLE इन सीमाओं के लिए कोई शेड्यूल मौजूद नहीं है. अगर प्राथमिकता लेवल PRIORITY_MANDATORY वाले कंस्ट्रेंट का कोई सबसेट पूरा नहीं होता, तो सॉल्वर यह वैल्यू दिखा सकता है.
NOT_SOLVED कोई शेड्यूल नहीं मिला.
NOT_SOLVED_DEADLINE_EXCEEDED दी गई समयसीमा के अंदर कोई शेड्यूल नहीं मिला.