本文档提供了呼叫中心系统的面向对象设计。它概述了主要组件、它们之间的关系以及呼叫处理工作流程。该设计解决了在具有升级能力的层级员工结构中管理来电的问题。
呼叫中心系统根据员工的可用性和级别管理呼叫的路由。它实现了三层员工层级结构,并包含呼叫升级、排队和完成的机制。
该系统主要由以下组件构成:
来源: solutions/object_oriented_design/call_center/call_center.py13-41 solutions/object_oriented_design/call_center/call_center.py43-69 solutions/object_oriented_design/call_center/call_center.py79-85 solutions/object_oriented_design/call_center/call_center.py87-122
呼叫中心雇佣了三个级别的员工,按层级组织:
每个级别都具有不断增长的权限和处理复杂呼叫的能力。该设计确保呼叫始终由适当级别的员工处理。
员工层级由Rank枚举定义
| 级别值 | 描述 | 角色 |
|---|---|---|
| 0 | OPERATOR | 处理初始呼叫 |
| 1 | SUPERVISOR | 处理操作员升级的呼叫 |
| 2 | DIRECTOR | 处理主管升级的呼叫 |
来源: solutions/object_oriented_design/call_center/call_center.py6-10
呼叫中心遵循特定的工作流程来处理来电。系统尝试根据员工的可用性和级别将呼叫分配给相应的员工。
来源: solutions/object_oriented_design/call_center/call_center.py95-98 solutions/object_oriented_design/call_center/call_center.py112-114 solutions/object_oriented_design/call_center/call_center.py122-124 solutions/object_oriented_design/call_center/call_center.py132-133 solutions/object_oriented_design/call_center/call_center.py159-170
系统中的呼叫在其生命周期中会经历不同的状态:
| 状态管理 | 描述 |
|---|---|
| READY | 呼叫准备好分配给员工 |
| IN_PROGRESS | 呼叫正在由员工处理 |
| COMPLETE | 呼叫已成功处理 |
来源: solutions/object_oriented_design/call_center/call_center.py72-76 solutions/object_oriented_design/call_center/call_center.py86-90 solutions/object_oriented_design/call_center/call_center.py92-94 solutions/object_oriented_design/call_center/call_center.py100-104
抽象基类Employee是呼叫中心所有员工类型的基础
关键方法
take_call(call):将呼叫分配给员工complete_call():将呼叫标记为已完成escalate_call():由子类实现的抽象方法,用于升级呼叫_escalate_call():用于升级过程的辅助方法来源: solutions/object_oriented_design/call_center/call_center.py13-41
每种员工类型都通过特定的升级行为扩展了基础Employee类
运算符:
主管:
总监:
来源: solutions/object_oriented_design/call_center/call_center.py43-69
Call类表示系统中的来电
来源: solutions/object_oriented_design/call_center/call_center.py79-85
CallCenter类协调整个系统
关键方法
dispatch_call(call):将呼叫路由到适当的员工_dispatch_call(call, employees):查找可用员工的辅助方法notify_call_escalated(call):处理升级呼叫的重新路由notify_call_completed(call):处理呼叫完成dispatch_queued_call_to_newly_freed_employee(call, employee):在员工可用时分配排队呼叫来源: solutions/object_oriented_design/call_center/call_center.py87-122
呼叫中心使用特定的算法来调度来电
来源: solutions/object_oriented_design/call_center/call_center.py159-170 solutions/object_oriented_design/call_center/call_center.py172-177
当员工无法处理呼叫时,他们会升级它
来源: solutions/object_oriented_design/call_center/call_center.py95-104 solutions/object_oriented_design/call_center/call_center.py112-114 solutions/object_oriented_design/call_center/call_center.py122-124
该设计在以下约束和假设下运行:
来源: solutions/object_oriented_design/call_center/call_center.ipynb20-39
呼叫中心使用双端队列(deque)来管理无法立即分配给员工的呼叫。这种数据结构提供了高效的操作,可以将呼叫添加到末尾并从开头移除。
来源: solutions/object_oriented_design/call_center/call_center.py93 solutions/object_oriented_design/call_center/call_center.py169-170
当前实现为未来的增强提供了接口: