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}` | outreach(TEL→工单/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 |