Contact Center

Hãy xem xét một trung tâm liên lạc mà bạn muốn tạo ca làm việc để đáp ứng được nhu cầu của nhân viên. Trung tâm liên lạc hoạt động 24/7 và số lượng nhân viên cần thiết sẽ thay đổi theo thời gian. Trung tâm liên lạc thuê cả nhân viên toàn thời gian và bán thời gian.

Nhân viên toàn thời gian tiến hành ca làm việc 9 tiếng, có 1 giờ nghỉ vào 4 hoặc 5 giờ sau khi ca làm việc bắt đầu và có thể bắt đầu ca làm việc bất cứ lúc nào trong khoảng thời gian từ 5 giờ sáng đến 12 giờ đêm. Nhân viên bán thời gian tiến hành ca làm việc 4 tiếng, nghỉ giải lao 15 phút vào cuối giờ làm việc thứ hai và có thể bắt đầu ca làm việc bất cứ lúc nào. Trong cả hai trường hợp, thời gian bắt đầu quá trình chuyển đổi có thể được cân nhắc theo mức tăng 15 phút.

Trung tâm liên lạc muốn lên kế hoạch cho các yêu cầu về nguồn nhân lực cho 2 ngày vận hành tới, vì có thể có tối đa 20 nhân viên toàn thời gian và 40 nhân viên bán thời gian.

Mẫu ca làm việc dành cho nhân viên toàn thời gian và bán thời gian

Bạn có thể biểu thị các quy tắc xác định lượt chuyển đổi hợp lệ bằng mẫu chuyển đổi. Trong mẫu ca làm việc, khái niệm điểm chèn có thể được biểu thị bằng mẫu sự kiện. Ví dụ: mẫu ca làm việc cho một nhân viên toàn thời gian được biểu thị như sau:

  {
    "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
  }

Tương tự, mẫu ca làm việc cho một nhân viên bán thời gian được trình bày như sau:

  {
      "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
    }

Nhu cầu của nhân viên theo thời gian

Nhu cầu đối với nhân viên được biểu thị bằng một danh sách EmployeeDemand, trong đó từng phần tử trong số này được biểu thị bằng một khoảng thời gian và số lượng nhân viên. Trong ví dụ này, nhu cầu dao động từ 4 đến 13 nhân viên trong khoảng thời gian 2 ngày và được biểu thị như sau:

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

Ví dụ về yêu cầu hoàn chỉnh


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

    

Ví dụ về phản hồi

Phản hồi của trình giải quyết chứa danh sách lịch biểu của nhân viên với số lượng nhân viên cần thiết tương ứng. Nếu không thể đáp ứng chính xác nhu cầu, thì phản hồi cũng sẽ liệt kê các lỗi vi phạm vào mọi khoảng thời gian phù hợp.

Ví dụ sau đây cho thấy một trong các lịch biểu đã tạo của nhân viên cho một nhân viên toàn thời gian:

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