# AI-Customer-Service 测试用例

> 版本：v1.0 | 状态：初稿

---

## AC-01 多渠道消息接入

| 用例编号 | 名称 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|---------|------|---------|---------|---------|--------|
| TC-01.1 | Telegram 消息接入 | Webhook 已配置 | 1. 发送消息 "如何创建 API Key" | 系统接收，返回 200 | P0 |
| TC-01.2 | Discord 消息接入 | Webhook 已配置 | 1. 发送消息 | 系统接收，返回 200 | P0 |
| TC-01.3 | 微信消息接入 | Webhook 已配置 | 1. 发送消息 | 系统接收，返回 200 | P0 |
| TC-01.4 | Widget 消息接入 | Widget 已部署 | 1. 发送消息 | 系统接收，返回 200 | P0 |
| TC-01.5 | Webhook 验证 | Webhook 已配置 | 1. 发送签名错误的请求 | 返回 401 或 403 | P1 |

## AC-02 意图识别与知识库回复

| 用例编号 | 名称 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|---------|------|---------|---------|---------|--------|
| TC-02.1 | API Key 意图 | 知识库已配置 | 1. 发送 "如何创建 API Key" | 回复包含步骤指引、代码示例 | P0 |
| TC-02.2 | 配额查询意图 | 知识库已配置 | 1. 发送 "我的配额还剩多少" | 系统调用只读 API 查询并返回精确数值 | P0 |
| TC-02.3 | 置信度达标 | 知识库已配置 | 1. 发送标准问题 | 回复置信度 ≥ 0.85 | P1 |

## AC-03 用户数据只读查询

| 用例编号 | 名称 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|---------|------|---------|---------|---------|--------|
| TC-03.1 | Token 消耗查询 | 用户已绑定 | 1. 发送 "今天的 Token 消耗是多少" | 3s 内返回精确数值 | P0 |
| TC-03.2 | 跨用户查询阻止 | 登录用户 A | 1. 尝试查询用户 B 的数据 | 请求被拒绝，返回 403 | P0 |

## AC-04 多轮对话与上下文保持

| 用例编号 | 名称 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|---------|------|---------|---------|---------|--------|
| TC-04.1 | 上下文关联 | 用户已发送初始问题 | 1. T0 发送 "怎么设置 API Key" 2. T0+30s 追问 "那个 Key 的有效期是多久" | 正确理解 "那个 Key" 指代上文 | P0 |
| TC-04.2 | 上下文窗口 | 已进行 5 轮对话 | 1. 继续第 6 轮 | 第 1 轮消息不在上下文中 | P1 |

## AC-05 身份校验

| 用例编号 | 名称 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|---------|------|---------|---------|---------|--------|
| TC-05.1 | 邮箱验证成功 | 用户未绑定 | 1. 输入邮箱 2. 输入正确验证码 | 2s 内会话关联至账户 | P0 |
| TC-05.2 | 验证码错误 | 用户未绑定 | 1. 输入错误验证码 3 次 | 会话锁定，生成转人工工单 | P0 |

## AC-06 大模型故障 Failover

| 用例编号 | 名称 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|---------|------|---------|---------|---------|--------|
| TC-06.1 | 主模型故障 | 主模型已配置 | 1. Mock 主模型返回 500 2. 发送消息 | 5s 内切换至备用模型，回复正常 | P0 |
| TC-06.2 | 双模型故障 | 主备模型均已配置 | 1. Mock 双方均返回 500 2. 发送消息 | 返回兑底回复 + 生成工单 | P0 |

## AC-07 兑底回复与工单生成

| 用例编号 | 名称 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|---------|------|---------|---------|---------|--------|
| TC-07.1 | 兑底回复 | 双模型均故障 | 1. 发送 "我的账户被封了怎么办" | 10s 内返回兑底文本 | P0 |
| TC-07.2 | 工单生成 | 双模型均故障 | 1. 发送消息 | 自动生成工单，包含 session_id、渠道、问题 | P0 |

## AC-08 明确转人工

| 用例编号 | 名称 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|---------|------|---------|---------|---------|--------|
| TC-08.1 | 关键词触发 | 处于自动回复 | 1. 发送 "我要找人工客服" | 2s 内停止自动回复，返回排队提示 | P0 |
| TC-08.2 | 排队显示 | 工单队列有待处理 | 1. 发送转人工关键词 | 显示排队人数 | P1 |

## AC-09 敏感意图自动转人工

| 用例编号 | 名称 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|---------|------|---------|---------|---------|--------|
| TC-09.1 | 退款意图 | 用户已绑定 | 1. 发送 "我要申请退款" | 3s 内生成 P1 工单，不返回自助指引 | P0 |
| TC-09.2 | 安全意图 | 用户已绑定 | 1. 发送 "我的数据可能泄露了" | 3s 内生成 P1 工单 | P0 |

## AC-10 工单后台分配与处理

| 用例编号 | 名称 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|---------|------|---------|---------|---------|--------|
| TC-10.1 | 工单排序 | 存在多个工单 | 1. 打开工单看板 | 按优先级 P1 > P2 > P3 与时间升序排列 | P0 |
| TC-10.2 | 工单分配 | 存在未处理工单 | 1. 客服点击接收 | 1s 内状态变更为处理中并锁定 | P0 |

## AC-11 知识库条目管理

| 用例编号 | 名称 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|---------|------|---------|---------|---------|--------|
| TC-11.1 | 条目发布 | 已创建条目 | 1. 点击发布 2. 等待 30s | 30s 内生效 | P0 |
| TC-11.2 | 条目引用 | 条目已发布 | 1. 用户询问相关问题 | 回复引用该条目 | P1 |

## AC-12 对话埋点与监控

| 用例编号 | 名称 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|---------|------|---------|---------|---------|--------|
| TC-12.1 | 埋点上报 | 系统已上线 | 1. 完成一次会话 2. 等待 5s | 埋点事件上报至监控平台 | P1 |
| TC-12.2 | 监控大盘刷新 | 已上报埋点 | 1. 等待 1 分钟 | Grafana 大盘刷新展示 | P1 |

## AC-13 权限边界

| 用例编号 | 名称 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|---------|------|---------|---------|---------|--------|
| TC-13.1 | 越权写操作 | 攻击者尝试 | 1. 尝试调用非只读接口 | 100ms 内返回 403 | P0 |
| TC-13.2 | 审计记录 | 越权尝试后 | 1. 查询审计日志 | 记录包含 IP、时间、目标接口 | P0 |

## 边缘场景 / 失败路径

| 用例编号 | 名称 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|---------|------|---------|---------|---------|--------|
| TC-E1 | 超长消息 | 会话已开始 | 1. 发送 >2000 字符的消息 | 截断至 2000 字符，提示分段 | P1 |
| TC-E2 | 高频消息 | 会话已开始 | 1. 1 秒内发送 10 条消息 | 启用频率限制，合并为 1 条 | P1 |
| TC-E3 | 知识库未命中 | 知识库已配置 | 1. 发送未知问题 | 置信度 <0.60，转人工 | P1 |
| TC-E4 | 供应商查询超时 | 用户已绑定 | 1. Mock 只读 API 超时 >3s | 回复通用说明，提示稍后重试 | P1 |
| TC-E5 | 数据库连接池耗尽 | 高并发 | 1. 模拟连接池耗尽 | 降级为静态 FAQ，健康检查非 200 | P0 |
| TC-E6 | 多渠道并发 | 用户已绑定 | 1. 同时在 Telegram 和 Discord 发消息 | 各渠道独立处理 | P1 |
