Weźmy przykład centrum obsługi, które działa od 8:30 do 18:00 i składa się którzy mogą odbierać połączenia w różnych językach. Dostępne są 3 opcje między godzinami 8:30–16:30, 9:00–17:00, 10:00-18:00. Z poprzednich prognoz wynika, że popyt na zależy od dnia tygodnia. W poniedziałki rozmowy są zwykle po angielsku, portugalskim, więc przynajmniej jeden pracownik obsługi klienta zna te języki. We wtorki połączenia są zwykle po hiszpańsku i francusku, więc trzeba podać co najmniej po jednym biegłym w każdym z tych języków. Niezależnie od tego, języka, przez cały czas muszą być dostępne co najmniej 2 agenty.
Kilka zmian dziennie
W tym przykładzie centrum obsługi pracuje 3 zmiany dziennie. Planowanie horyzont obejmuje dwa dni. Na przykład przesunięcie w godzinach 8:30–16:30 w określony poniedziałek jest reprezentowany jako:
{
"shifts": [
{
"id": "Monday-2024-7-1 8:30-16:30",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 8,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 16,
"minutes": 30
}
}
]
}
Przykład z 6 zmianami
{
"shifts": [
{
"id": "Monday-2024-7-1 8:30-16:30",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 8,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 16,
"minutes": 30
}
},
{
"id": "Monday-2024-7-1 9:00-17:00",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 9
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 17
}
},
{
"id": "Monday-2024-7-1 10:00-18:00",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 10
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 18
}
},
{
"id": "Tuesday-2024-7-2 8:30-16:30",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 8,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 16,
"minutes": 30
}
},
{
"id": "Tuesday-2024-7-2 9:00-17:00",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 9
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 17
}
},
{
"id": "Tuesday-2024-7-2 10:00-18:00",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 10
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 18
}
}
]
}
Języki jako umiejętności pracowników
Języki, które zna agent, są przedstawiane za pomocą skill
. Pierwszy pracownik obsługi klienta,
Laura zna język hiszpański i portugalski. Jest prezentowana jako:
{
"employees": [
{
"id": "Lauren",
"role_ids": [
"Agent"
],
"skill_ids": [
"ES",
"PR"
]
}
]
}
Można też dodać inne ograniczenia planowania, żądanie zmiany i preferencji pracowników, jak opisano w innych przykładów.
Przykład ze wszystkimi 4 pracownikami
{
"employees": [
{
"id": "Lauren",
"role_ids": [
"Agent"
],
"skill_ids": [
"ES",
"PR"
]
},
{
"id": "Markus",
"role_ids": [
"Agent"
],
"skill_ids": [
"EN",
"PR"
]
},
{
"id": "Hans",
"role_ids": [
"Agent"
],
"skill_ids": [
"EN",
"ES"
],
"shiftRequests": [
{
"shiftIds": [
"Monday-2024-7-1 10:00-18:00"
],
"type": "STATUS_NOT_WORK"
}
]
},
{
"id": "Peter",
"role_ids": [
"Agent"
],
"skill_ids": [
"EN",
"FR"
],
"shiftPreferences": [
{
"shiftId": "Monday-2024-7-1 10:00-18:00",
"preference": 1
}
]
}
]
}
Pokrycie popytu dla agentów i języków
Zapotrzebowanie na pracowników obsługi klienta lub określone języki jest określane za pomocą pokrycia
. Potrzeba 2 agentów jest określona w
roleRequirements
, a wymagania dotyczące języków są określone w
skillRequirements
Wymagania dotyczące ubezpieczenia w poniedziałek i wtorek:
reprezentowane jako:
{
"coverageRequirements": [
{
"startDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 8,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 18
},
"roleRequirements": [
{
"role_id": "Agent",
"target_employee_count": 1,
"priority": "PRIORITY_HIGH"
}
],
"skillRequirements": [
{
"skill_id": "EN",
"target_employee_count": 1
},
{
"skill_id": "PR",
"target_employee_count": 1
}
]
},
{
"startDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 8,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 18,
"minutes": 0
},
"roleRequirements": [
{
"role_id": "Agent",
"target_employee_count": 1,
"priority": "PRIORITY_HIGH"
}
],
"skillRequirements": [
{
"skill_id": "ES",
"target_employee_count": 1
},
{
"skill_id": "FR",
"target_employee_count": 1
}
]
}
],
"role_ids": [
"Agent"
],
"skill_ids": [
"EN",
"ES",
"FR",
"PR"
]
}
Pamiętaj, że w prośbie musisz zdefiniować wszystkie identyfikatory ról i umiejętności. Muszą być zgodne identyfikatorów używanych do zdefiniowania pracowników.
Przykład kompletnego żądania
{
{
"requestId": "contact_center_examples",
"solve_parameters": {
"time_limit": {
"seconds": 60
}
},
"employees": [
{
"id": "Lauren",
"role_ids": [
"Agent"
],
"skill_ids": [
"ES",
"PR"
]
},
{
"id": "Markus",
"role_ids": [
"Agent"
],
"skill_ids": [
"EN",
"PR"
]
},
{
"id": "Hans",
"role_ids": [
"Agent"
],
"skill_ids": [
"EN",
"ES"
],
"shiftRequests": [
{
"shiftIds": [
"Monday-2024-7-1 10:00-18:00"
],
"type": "STATUS_NOT_WORK"
}
]
},
{
"id": "Peter",
"role_ids": [
"Agent"
],
"skill_ids": [
"EN",
"FR"
],
"shiftPreferences": [
{
"shiftId": "Monday-2024-7-1 10:00-18:00",
"preference": 1
}
]
}
],
"shifts": [
{
"id": "Monday-2024-7-1 8:30-16:30",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 8,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 16,
"minutes": 30
}
},
{
"id": "Monday-2024-7-1 9:00-17:00",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 9
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 17
}
},
{
"id": "Monday-2024-7-1 10:00-18:00",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 10
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 18
}
},
{
"id": "Tuesday-2024-7-2 8:30-16:30",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 8,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 16,
"minutes": 30
}
},
{
"id": "Tuesday-2024-7-2 9:00-17:00",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 9
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 17
}
},
{
"id": "Tuesday-2024-7-2 10:00-18:00",
"startDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 10
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 18
}
}
],
"coverageRequirements": [
{
"startDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 8,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 1,
"hours": 18
},
"roleRequirements": [
{
"role_id": "Agent",
"target_employee_count": 1,
"priority": "PRIORITY_HIGH"
}
],
"skillRequirements": [
{
"skill_id": "EN",
"target_employee_count": 1
},
{
"skill_id": "PR",
"target_employee_count": 1
}
]
},
{
"startDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 8,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 7,
"day": 2,
"hours": 18,
"minutes": 0
},
"roleRequirements": [
{
"role_id": "Agent",
"target_employee_count": 1,
"priority": "PRIORITY_HIGH"
}
],
"skillRequirements": [
{
"skill_id": "ES",
"target_employee_count": 1
},
{
"skill_id": "FR",
"target_employee_count": 1
}
]
}
],
"role_ids": [
"Agent"
],
"skill_ids": [
"EN",
"ES",
"FR",
"PR"
]
}
}
Przykładowa odpowiedź
Odpowiedź rozwiązania zawiera przypisanie agentów do zmian, a także o stanie procedury optymalizacji.
Ten przykład pokazuje przypisane zmiany:
{
"solutionStatus": "OPTIMAL",
"shiftAssignments": [
{
"employeeId": "Lauren",
"shiftId": "Tuesday-2024-7-2 10:00-18:00",
"roleId": "Agent"
},
{
"employeeId": "Markus",
"shiftId": "Monday-2024-7-1 8:30-16:30",
"roleId": "Agent"
},
{
"employeeId": "Peter",
"shiftId": "Monday-2024-7-1 10:00-18:00",
"roleId": "Agent"
},
{
"employeeId": "Peter",
"shiftId": "Tuesday-2024-7-2 8:30-16:30",
"roleId": "Agent"
}
],
"requestId": "contact_center_examples"
}