Files
Fulfilled-Knowledge/wishfulfilled-wiki/05_需求文档/05-子系统-客服工单与管理.md
2026-05-27 15:40:32 +08:00

215 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
1|# 子系统 05 — 客服工单与管理 (`support`) v1.0
2|
3|## 子系统概述
4|
5|| 维度 | 说明 |
6|| --- | --- |
7|| 代号 | `support` |
8|| 核心职责 | 工单生命周期管理、自动分配、答应配合状态机、排班出勤管理、绩效统计 |
9|| 数据所有权 | `support_tickets`, `support_followups`, `support_assignment_logs`, `attendance_records`, `shift_schedules`, `support_performance_snapshots` |
10|| 启动依赖 | identity软依赖无上下文卡时可先跑工单 |
11|| 外部系统依赖 | 无直接外部依赖(电话记录来自 outreach TEL 模块) |
12|
13|---
14|
15|## 1. 模块划分
16|
17|```
18|┌─────────────────────────────────────────────────────────────┐
19|│ support 子系统 │
20|│ │
21|│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
22|│ │ M1: 工单管理 │ │ M2: 自动分配 │ │ M3: 答应配合 │ │
23|│ │ (Ticket) │→│ (Assign) │ │ 状态机 │ │
24|│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
25|│ │ │ │ │
26|│ ▼ ▼ ▼ │
27|│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
28|│ │ M4: 排班出勤 │ │ M5: 绩效统计 │ │ M6: 对外 API │ │
29|│ │ 管理 │ │ │ │ Gateway │ │
30|│ └──────────────┘ └──────────────┘ └──────────────┘ │
31|│ │
32|└─────────────────────────────────────────────────────────────┘
33|```
34|
35|| # | 模块 | 职责 |
36|| --- | --- | --- |
37|| M1 | 工单管理 | 工单创建、分类、状态流转(待分配→已分配→处理中→等待用户/等待内部→已解决/疑似诈骗→已关闭) |
38|| M2 | 自动分配 | 按班次+在线状态+当前负载+最大工单数自动分配到客服组;组长再分派到组员 |
39|| M3 | 答应配合状态机 | 独立的答应配合状态流转(已答应→待分配→待提醒→等待提交→已提交/超时→需再次联系→关闭) |
40|| M4 | 排班出勤管理 | 排班设置、出勤记录(应出勤/实际出勤/迟到/早退/请假/缺勤)、在线客服池维护 |
41|| M5 | 绩效统计 | 回复效率(回复用户数/处理工单数/首次回复时长分布转化统计RSO回评/RDO测评登记订单数/获取评价数/完成率);目标完成统计 |
42|| M6 | 对外 API Gateway | 供其他子系统创建工单、查询工单状态、查询绩效数据 |
43|
44|---
45|
46|## 2. 各模块内外说明
47|
48|### 2.1 M1: 工单管理
49|
50|| 维度 | 说明 |
51|| --- | --- |
52|| **对内** | 5 种入口(用户消息进入/推送转人工/售后触发/风险触发/电话后续);工单状态流转(待分配→已分配→处理中→等待用户/等待内部→已解决/疑似诈骗→已关闭5 种处理结果(等待用户回复/等待内部协同/答应配合/疑似诈骗/已解决) |
53|| **对外接口** | `POST /api/tickets` — 创建工单;`PUT /api/tickets/{id}/status` — 更新状态 |
54|| **数据写入** | `support_tickets` |
55|| **依赖** | `GET /api/identity/context/{person_id}` — 展示用户上下文卡 |
56|| **待确认** | 工单类型分类维度?(售后/催评/风险/其他?是否需要自定义分类?) |
57|
58|### 2.2 M2: 自动分配
59|
60|| 维度 | 说明 |
61|| --- | --- |
62|| **对内** | 分配算法(查班次+在线状态+当前负载+最大工单数→自动分配到客服组);组长可在组内重新分派到具体组员;分配日志记录 |
63|| **对外接口** | 内部服务 |
64|| **数据写入** | `support_assignment_logs` |
65|| **依赖** | M4 排班出勤数据 |
66|| **待确认** | 「当前负载」按什么计算?(未关闭工单数?最近 N 小时处理量?两者加权?) |
67|
68|### 2.3 M3: 答应配合状态机
69|
70|| 维度 | 说明 |
71|| --- | --- |
72|| **对内** | 独立于工单状态的状态机(已答应配合→待分配负责人→待提醒→等待提交→已提交评价/已提交反馈→超时→需再次联系→已关闭);防止承诺用户流失;超时提醒机制 |
73|| **对外接口** | `POST /api/support/followups` — 创建跟进任务;`PUT /api/support/followups/{id}` — 更新状态 |
74|| **数据写入** | `support_followups` |
75|| **待确认** | 答应配合后多少天未提交算超时?超时后提醒频率?多次提醒无果后是否降级? |
76|
77|### 2.4 M4: 排班出勤管理
78|
79|| 维度 | 说明 |
80|| --- | --- |
81|| **对内** | 排班设置(按日/周的班次安排);出勤记录(应出勤/实际出勤/出勤率/迟到/早退/请假/缺勤);在线客服池(排班+在线状态→可用客服列表) |
82|| **对外接口** | `GET /api/support/available-agents` — 查询当前可用客服 |
83|| **数据写入** | `attendance_records`, `shift_schedules` |
84|| **待确认** | 排班是否对接外部 HR 系统还是独立管理?客服手动签入/签出? |
85|
86|### 2.5 M5: 绩效统计
87|
88|| 维度 | 说明 |
89|| --- | --- |
90|| **对内** | 回复效率(回复用户数、处理工单数、发送消息数、首次回复时长:平均/中位数/最大/最小转化统计RSO 回评登记订单数、RDO 测评登记订单数、获取评价数、评价完成率);目标完成(月目标、当前完成、完成率、历史趋势);主管看板 |
91|| **对外接口** | `GET /api/support/stats?agent_id=&period=` — 绩效数据查询 |
92|| **数据写入** | `support_performance_snapshots`(定时快照) |
93|| **待确认** | 绩效统计周期(日/周/月?)主管看板是否需要实时数据还是 T+1 汇总? |
94|
95|---
96|
97|## 3. 对外 API 契约(草案)
98|
99|| 接口 | 方法 | 输入 | 输出 | 消费者 |
100|| --- | --- | --- | --- | --- |
101|| 创建工单 | `POST /api/tickets` | `{person_id, source, type, description}` | `{ticket_id}` | outreachTEL→工单/EDM回复→工单、risk诈骗→工单 |
102|| 工单详情 | `GET /api/tickets/{id}` | ticket_id | 完整工单+上下文卡 | 客服前端 |
103|| 查询用户打开工单 | `GET /api/tickets?person_id=&status=open` | person_id | `[{ticket_id, status}]` | outreach渠道去重、quota终校 |
104|| 客服可用性 | `GET /api/support/available-agents` | 无 | `[{agent_id, current_load}]` | outreach分配参考 |
105|| 绩效查询 | `GET /api/support/stats?agent_id=&period=` | agent_id + 周期 | 绩效数据 | 客服管理前端 |
106|
107|---
108|
109|## 4. 数据对象
110|
111|| 对象 | 核心字段 | 说明 |
112|| --- | --- | --- |
113|| `support_tickets` | ticket_id, person_id, source, type, status, assigned_agent, assigned_group, created_at, resolved_at | 工单主表 |
114|| `support_followups` | followup_id, ticket_id, person_id, status(PROMISED/ASSIGNED/WAITING/SUBMITTED/TIMEOUT/RECONTACT/CLOSED), promised_at, deadline_at, reminded_at | 答应配合跟进 |
115|| `support_assignment_logs` | log_id, ticket_id, from_agent, to_agent, reason, assigned_at | 工单分配日志 |
116|| `attendance_records` | record_id, agent_id, date, status(PRESENT/LATE/EARLY/ABSENT/LEAVE), check_in, check_out | 出勤记录 |
117|| `shift_schedules` | shift_id, agent_id, date, shift_type, start_time, end_time | 排班表 |
118|| `support_performance_snapshots` | snapshot_id, agent_id, period, tickets_handled, messages_sent, avg_first_reply, rso_orders, rdo_orders, reviews_obtained, completion_rate | 绩效快照 |
119|
120|---
121|
122|## 5. 业务澄清问题清单 — support
123|
124|### 5.1 工单管理5 项)
125|
126|| # | 问题 | 优先级 |
127|| --- | --- | --- |
128|| S-01 | 工单的来源分类有哪些IM 转人工 / 电话后续 / EDM 回复 / 用户主动联系 / 风险触发 / 其他?)每种来源的优先级是否不同? | **P0** |
129|| S-02 | 工单状态「等待用户」和「等待内部」的超时分别是多少超时后谁来提醒提醒方式IM/系统通知)? | **P0** |
130|| S-03 | 三套并行状态(工单状态/答应配合状态/风险状态)的交互规则?例如:风险状态变为「确认诈骗」时工单是否自动关闭?(目前文档说是独立拆开的) | P1 |
131|| S-04 | 工单关闭后是否允许重新打开?什么条件可重开? | P1 |
132|| S-05 | 工单是否有 SLA服务级别协议不同来源/类型的工单 SLA 不同? | P2 |
133|
134|### 5.2 自动分配4 项)
135|
136|| # | 问题 | 优先级 |
137|| --- | --- | --- |
138|| S-06 | 「当前负载」如何精确计算?(未关闭工单数 × 权重?最近 N 小时处理量?工单类型权重不同?) | **P0** |
139|| S-07 | 「最大工单数」是什么?(每个客服同时最多持有 X 个工单?)这个值是否统一还是按级别不同? | **P0** |
140|| S-08 | 在线状态如何判定?(手动签入/签出系统自动检测活跃度N 分钟无操作自动离线?) | P1 |
141|| S-09 | 自动分配如果分配给了离线/满载的客服,兜底机制是什么?(自动转移给组长?放入公共池?) | P1 |
142|
143|### 5.3 答应配合3 项)
144|
145|| # | 问题 | 优先级 |
146|| --- | --- | --- |
147|| S-10 | 答应配合后多少天未提交算超时?超时后的提醒频率?(第 1/3/7 天各提醒一次?)多次提醒无果后关闭还是降级? | **P0** |
148|| S-11 | 用户答应配合但最终提交了错误的 ASIN 评价——算不算配合完成?如何处理? | P1 |
149|| S-12 | 答应配合状态是否只针对客服工单场景IM 直推中用户答应的算不算? | P1 |
150|
151|### 5.4 排班出勤3 项)
152|
153|| # | 问题 | 优先级 |
154|| --- | --- | --- |
155|| S-13 | 排班管理是否对接外部 HR 系统?还是独立在 support 子系统内管理? | P1 |
156|| S-14 | 菲律宾客服团队的工作制度?(班次类型:早班/中班/晚班?每班时长?每周几天?) | P1 |
157|| S-15 | 出勤异常(迟到/早退/缺勤)是否需要自动通知主管?通知方式? | P2 |
158|
159|### 5.5 绩效统计3 项)
160|
161|| # | 问题 | 优先级 |
162|| --- | --- | --- |
163|| S-16 | 转化统计中 RSO回评和 RDO测评如何区分按工单来源按关联计划类型按客服标记 | P1 |
164|| S-17 | 「首次回复时长」从什么时候开始计时?(工单分配给客服的时间?用户消息到达时间?) | P1 |
165|| S-18 | 评价完成率的分母是什么?(答应配合数?登记订单数?触达数?) | P2 |
166|
### 5.6 多语言与国际化3 项)
| # | 问题 | 优先级 |
| --- | --- | --- |
| S-19 | 客服工作台需要支持哪些语言?(菲律宾客服用英语+Tagalog面向用户的消息是否需要自动翻译 | P1 |
| S-20 | 用户消息的多语言处理——用户用德语/法语/西语发消息时,客服如何理解?(是否需要集成翻译工具?) | P2 |
| S-21 | 系统管理界面(排班/绩效/设置)是否需要多语言?面向中国管理团队的是中文界面? | P2 |
### 5.7 知识库与话术3 项)
| # | 问题 | 优先级 |
| --- | --- | --- |
| S-22 | 是否需要集成知识库/FAQ客服在处理售后时快速查找产品信息、常见问题解答 | P2 |
| S-23 | 是否需要「快捷回复」功能?(预设常用回复模板——「请提供你的订单号」「我们将在 24h 内处理你的退款」等) | P1 |
| S-24 | 快捷回复模板是否支持按场景/产品分类?(不同产品的售后话术不同——模板管理和权限?) | P2 |
### 5.8 客服质量管控4 项)
| # | 问题 | 优先级 |
| --- | --- | --- |
| S-25 | 是否需要客户满意度CSAT调查工单关闭后推送满意度评分——评分方式计入绩效 | P2 |
| S-26 | 是否需要质检功能?(组长抽查客服的对话记录进行评分——质检抽样比例?质检标准?) | P2 |
| S-27 | 客服技能分组——不同客服擅长不同类型工单(售后/催评/风控)——是否需要基于技能的自动分配? | P1 |
| S-28 | 升级工单的处理流程——什么条件下工单升级到组长/负责人?(超时?用户投诉?疑似诈骗?) | P1 |
### 5.9 排班与出勤补充3 项)
| # | 问题 | 优先级 |
| --- | --- | --- |
| S-29 | 排班是否支持轮班制?(周一到周日每天不同的班次安排)排班变更的通知方式? | P1 |
| S-30 | 临时调班/换班请求——客服之间是否可以自助换班?是否需要审批? | P2 |
| S-31 | 节假日/特殊日期的排班策略?(当地节假日——菲律宾假日 vs 美国假日 vs 中国假日——按哪国日历?) | P1 |
### 5.10 绩效统计补充3 项)
| # | 问题 | 优先级 |
| --- | --- | --- |
| S-32 | 绩效考核周期?(日/周/月/季度?)绩效数据是否需要导出为报表? | P1 |
| S-33 | 绩效目标是否可自定义?(不同组的目标不同?新人目标低于老员工?)目标由谁设置? | P1 |
| S-34 | 绩效看板是否需要实时数据还是 T+1 汇总?(主管需要实时看到当前客服处理了多少工单?) | P2 |
### 5.11 实施层面3 项)
| # | 问题 | 优先级 |
| --- | --- | --- |
| S-35 | 客服使用的 IM 工具——是独立于 outreach 的客服专用 IM 还是嵌入在客服工作台内的 Web IM | P1 |
| S-36 | 工单数据是否需要与 outreach 的交互记录打通?(同一个用户在 IM 的聊天记录是否需要关联到工单?) | P1 |
| S-37 | 客服工作台的实时性要求——新工单到达后多少秒内需要在客服界面显示WebSocket 推送 vs 轮询?) | P2 |