菜单

呼叫中心

相关源文件

本文档提供了呼叫中心系统的面向对象设计。它概述了主要组件、它们之间的关系以及呼叫处理工作流程。该设计解决了在具有升级能力的层级员工结构中管理来电的问题。

系统概览

呼叫中心系统根据员工的可用性和级别管理呼叫的路由。它实现了三层员工层级结构,并包含呼叫升级、排队和完成的机制。

关键组件

该系统主要由以下组件构成:

  • 员工层级:具有不同职责的操作员、主管和总监
  • 呼叫管理:跟踪呼叫状态和分配
  • 呼叫中心控制器:调度呼叫和管理员工池

类层级图

来源: 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

员工层级

呼叫中心雇佣了三个级别的员工,按层级组织:

  1. 操作员:处理初始呼叫的一线员工
  2. 主管:处理操作员升级呼叫的二线员工
  3. 总监:处理主管升级呼叫的最高级别员工

每个级别都具有不断增长的权限和处理复杂呼叫的能力。该设计确保呼叫始终由适当级别的员工处理。

级别枚举

员工层级由Rank枚举定义

级别值描述角色
0OPERATOR处理初始呼叫
1SUPERVISOR处理操作员升级的呼叫
2DIRECTOR处理主管升级的呼叫

来源: 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是呼叫中心所有员工类型的基础

  • 维护员工身份信息(ID、姓名、级别)
  • 跟踪当前正在处理的呼叫(如果有)
  • 提供呼叫处理操作的方法
  • 引用呼叫中心进行通知

关键方法

  • take_call(call):将呼叫分配给员工
  • complete_call():将呼叫标记为已完成
  • escalate_call():由子类实现的抽象方法,用于升级呼叫
  • _escalate_call():用于升级过程的辅助方法

来源: solutions/object_oriented_design/call_center/call_center.py13-41

员工类型实现

每种员工类型都通过特定的升级行为扩展了基础Employee

  1. 运算符:

    • 将呼叫升级到主管级别
  2. 主管:

    • 将呼叫升级到总监级别
  3. 总监:

    • 无法升级呼叫(必须处理所有呼叫)
    • 如果尝试升级,则抛出异常

来源: solutions/object_oriented_design/call_center/call_center.py43-69

呼叫类

Call类表示系统中的来电

  • 跟踪呼叫的当前状态(READY、IN_PROGRESS、COMPLETE)
  • 存储处理该呼叫所需的最低级别
  • 引用当前正在处理呼叫的员工(如果已分配)

来源: 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

呼叫中心操作

呼叫调度逻辑

呼叫中心使用特定的算法来调度来电

  1. 如果呼叫是针对操作员的,尝试分配给可用操作员
  2. 如果没有可用操作员或呼叫需要主管,尝试分配给可用主管
  3. 如果没有可用主管或呼叫需要总监,尝试分配给可用总监
  4. 如果没有适当的员工可用,将呼叫排队

来源: solutions/object_oriented_design/call_center/call_center.py159-170 solutions/object_oriented_design/call_center/call_center.py172-177

呼叫升级流程

当员工无法处理呼叫时,他们会升级它

  1. 员工更新呼叫的最低级别要求
  2. 呼叫状态重置为READY
  3. 员工将升级通知呼叫中心
  4. 呼叫中心尝试将呼叫调度给更高级别的员工

来源: 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

实现考量

设计约束和假设

该设计在以下约束和假设下运行:

  • 员工分为三个级别:操作员、主管和总监
  • 操作员总是接听初始呼叫
  • 如果操作员不可用或无法处理呼叫,则呼叫转给主管
  • 如果主管不可用或无法处理呼叫,则呼叫转给总监
  • 总监必须能够处理所有呼叫
  • 如果没有员工可以接听呼叫,则呼叫排队
  • 不对VIP呼叫进行特殊处理(无队列优先级)
  • 所有输入都被认为是有效的

来源: 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

扩展点

当前实现为未来的增强提供了接口:

  1. 队列优先级:排队系统可以扩展以支持不同的优先级级别
  2. 呼叫指标:系统可以增强以跟踪呼叫时长和解决率等指标
  3. 员工可用性:可以添加额外的状态以跟踪员工除正在处理活动呼叫之外的状态
  4. 呼叫路由规则:可以实施更复杂的规则,将呼叫匹配给最合适的员工