     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 |
