مركز التواصل

ضع في اعتبارك مركز اتصال تريد إجراء نوبات عمل له بحيث تغطي الطلب على الموظفين. يعمل مركز الاتصال على مدار الساعة طوال أيام الأسبوع، ويختلف عدد الموظفين المطلوبين مع مرور الوقت. يقوم مركز الاتصال بتعيين كل من الموظفين بدوام كامل وبدوام جزئي.

يجري الموظفون بدوام كامل نوبات عمل لمدة 9 ساعات، ويكونون استراحة لمدة ساعة واحدة في غضون 4 أو 5 ساعات بعد بدء مناوبتهم، ويمكن بدء مناوبتهم في أي وقت بين 5 صباحًا و12 ظهرًا. يقوم الموظفون بدوام جزئي بإجراء نوبات عمل مدتها 4 ساعات مع استراحة لمدة 15 دقيقة في نهاية ساعة العمل الثانية، ويمكن بدء مناوبتهم في أي وقت. في كلتا الحالتين، يتم مراعاة أوقات بدء التحول المحتملة بزيادات تبلغ 15 دقيقة.

يهتم مركز الاتصال بالتخطيط لمتطلبات القوى العاملة لليومين المقبلين من العمل، مع الأخذ في الاعتبار أنه قد يكون هناك ما لا يزيد عن 20 موظفًا بدوام كامل و40 موظفًا بدوام جزئي.

تغيير نماذج الموظفين بدوام كامل وبدوام جزئي

يمكن تمثيل القواعد التي تحدّد التغيّرات الصالحة باستخدام نموذج التحول. في نموذج ورديات، يمكن تمثيل مفهوم الفاصل باستخدام نموذج حدث. على سبيل المثال، يتم تمثيل قالب الوردية لوردية موظف بدوام كامل على النحو التالي:

  {
    "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
      },
      ...
    ]
    ...
  }