किसी ऐसे संपर्क केंद्र के बारे में सोचें जिसके लिए आपको बदलाव जनरेट करने हों, ताकि कर्मचारियों की मांग पूरी रहे. संपर्क केंद्र हर समय काम करता है और ज़रूरी कर्मचारियों की संख्या समय के साथ बदलती रहती है. संपर्क केंद्र में फ़ुल-टाइम और पार्ट-टाइम, दोनों तरह के कर्मचारियों को काम पर रखा जाता है.
फ़ुल-टाइम कर्मचारी, नौ घंटे की शिफ़्ट में काम करते हैं और शिफ़्ट शुरू होने के चार या पांच घंटे बाद, एक घंटे का ब्रेक लेते हैं. वे सुबह 5 से दोपहर 12 बजे के बीच किसी भी समय शिफ़्ट शुरू कर सकते हैं. पार्ट-टाइम कर्मचारी, दूसरे काम के घंटे के आखिर में 15 मिनट के ब्रेक के साथ 4-घंटे की शिफ़्ट लागू करते हैं. वे किसी भी समय अपनी शिफ़्ट शुरू कर सकते हैं. दोनों मामलों में, शिफ़्ट शुरू होने के संभावित समय को 15 मिनट की बढ़ोतरी के हिसाब से गिना जाता है.
संपर्क केंद्र की दिलचस्पी अगले दो दिनों में, कर्मचारियों से जुड़ी ज़रूरी शर्तों के बारे में बताने के लिए है. इसमें ज़्यादा से ज़्यादा 20 फ़ुल-टाइम कर्मचारी और 40 पार्ट-टाइम कर्मचारी हो सकते हैं.
फ़ुल-टाइम और पार्ट-टाइम कर्मचारियों के लिए टेंप्लेट बदलें
मान्य शिफ़्ट तय करने वाले नियमों को शिफ़्ट टेंप्लेट से दिखाया जा सकता है. शिफ़्ट टेंप्लेट में, ब्रेक के बारे में बताने वाली जानकारी को इवेंट टेंप्लेट से दिखाया जा सकता है. उदाहरण के लिए, फ़ुल-टाइम कर्मचारी की शिफ़्ट के लिए Shift का टेंप्लेट इस तरह दिखाया जाता है:
{
"id": "full-time",
"earliestStartTime": {
"hours": 5
},
"latestStartTime": {
"hours": 12
},
"durationMinutes": 540,
"startTimeIncrementMinutes": 15,
"eventTemplates": [
{
"id": "full-time-break",
"minimumMinutesAfterShiftStart": 240,
"maximumMinutesAfterShiftStart": 300,
"durationMinutes": 60,
"startTimeIncrementMinutes": 60
}
],
"maximumEmployeeCount": 20
}
इसी तरह, पार्ट-टाइम कर्मचारी शिफ़्ट के लिए शिफ़्ट टेंप्लेट को इस तरह दिखाया जाता है:
{
"id": "part-time",
"earliestStartTime": {},
"latestStartTime": {
"hours": 23,
"minutes": 59
},
"durationMinutes": 240,
"startTimeIncrementMinutes": 15,
"eventTemplates": [
{
"id": "part-time-break",
"minimumMinutesAfterShiftStart": 120,
"maximumMinutesAfterShiftStart": 120,
"durationMinutes": 15,
"startTimeIncrementMinutes": 0
}
],
"maximumEmployeeCount": 40
}
समय के साथ कर्मचारियों की मांग
कर्मचारियों की मांग को EmployeeDemand
की सूची के साथ दिखाया जाता है. इसमें हर एलिमेंट की समयावधि और कर्मचारियों की संख्या की जानकारी होती है. इस उदाहरण में, दो दिनों के दौरान मांग में 4 से 13 कर्मचारियों के बीच उतार-चढ़ाव होता रहता है. इसे इस तरह से दिखाया जाता है:
{
...
"employeeDemands": [
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 20
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 12
},
"employeeCount": 8
},
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 12
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 20
},
"employeeCount": 12
},
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 20
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 6
},
"employeeCount": 4
},
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 6
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 22,
"hours": 0
},
"employeeCount": 13
}
]
}
पूरे अनुरोध का उदाहरण
{
"solverConfig": {
"timeLimit": "30s"
},
"shiftTemplates": [
{
"id": "full-time",
"earliestStartTime": {
"hours": 5
},
"latestStartTime": {
"hours": 12
},
"durationMinutes": 540,
"startTimeIncrementMinutes": 15,
"eventTemplates": [
{
"id": "full-time-break",
"minimumMinutesAfterShiftStart": 240,
"maximumMinutesAfterShiftStart": 300,
"durationMinutes": 60,
"startTimeIncrementMinutes": 60
}
],
"maximumEmployeeCount": 20
},
{
"id": "part-time",
"earliestStartTime": {},
"latestStartTime": {
"hours": 23,
"minutes": 59
},
"durationMinutes": 240,
"startTimeIncrementMinutes": 15,
"eventTemplates": [
{
"id": "part-time-break",
"minimumMinutesAfterShiftStart": 120,
"maximumMinutesAfterShiftStart": 120,
"durationMinutes": 15,
"startTimeIncrementMinutes": 0
}
],
"maximumEmployeeCount": 40
}
],
"employeeDemands": [
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 20
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 12
},
"employeeCount": 8
},
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 12
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 20
},
"employeeCount": 12
},
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 20
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 6
},
"employeeCount": 4
},
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 6
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 22,
"hours": 0
},
"employeeCount": 13
}
]
}
जवाब का उदाहरण
सॉल्वर के जवाब में कर्मचारियों के शेड्यूल की एक सूची होती है और उन कर्मचारियों के हिसाब से ज़रूरी कर्मचारियों की संख्या होती है. अगर ज़रूरत को पूरी तरह से पूरा करना मुमकिन नहीं है, तो जवाब में हर ज़रूरी समय के दौरान हुए उल्लंघनों को भी शामिल किया जाएगा.
इस उदाहरण में, फ़ुल-टाइम कर्मचारी के लिए तय किए गए शेड्यूल में से एक को दिखाया गया है:
{
"solutionStatus": "SHIFT_GENERATION_SOLVED",
"employeeSchedules": [
{
"shiftTemplateId": "full-time",
"shifts": [
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 7,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 16,
"minutes": 30
},
"events": [
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 12,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 13,
"minutes": 30
},
"eventTemplateId": "full-time-break"
}
]
}
],
"employeeCount": 1
},
...
]
...
}