# 测试用例 - AI回复来源标识
> **REQ编号**: REQ-AI-004
> **版本**: v1.0
> **日期**: 2026-07-20
> **作者**: 许清楚
---
## 一、用例汇总
| 类别 | 用例数 | 通过 | 失败 |
|------|--------|------|------|
| 功能测试 | 8 | 0 | 0 |
| 接口测试 | 4 | 0 | 0 |
| 总计 | 12 | 0 | 0 |
---
## 二、功能测试用例
### 2.1 来源标识显示
| TC-ID | TC-001 |
|-------|--------|
| 用例名称 | 单来源 - 图谱回复显示标识 |
| 前置条件 | 用户发送"重置密码"问题,图谱路由命中 |
| 测试步骤 | 1. 用户发送问题
2. AI回复
3. 检查回复末尾是否显示🕸️ |
| 预期结果 | 回复末尾显示🕸️标识 |
| 测试结果 | ⬜ 待测试 |
---
| TC-ID | TC-002 |
|-------|--------|
| 用例名称 | 单来源 - Dify推理显示标识 |
| 前置条件 | 用户发送复杂问题,触发Dify推理 |
| 测试步骤 | 1. 用户发送复杂问题
2. AI回复
3. 检查回复末尾是否显示🤖 |
| 预期结果 | 回复末尾显示🤖标识 |
| 测试结果 | ⬜ 待测试 |
---
| TC-ID | TC-003 |
|-------|--------|
| 用例名称 | 多来源 - 业务路由+资产推荐叠加显示 |
| 前置条件 | 用户发送"推荐笔记本电脑",触发业务路由+资产推荐 |
| 测试步骤 | 1. 用户发送"推荐笔记本电脑"
2. AI回复
3. 检查是否显示📋💻 |
| 预期结果 | 回复末尾显示📋💻两个标识 |
| 测试结果 | ⬜ 待测试 |
---
| TC-ID | TC-004 |
|-------|--------|
| 用例名称 | 多来源 - 超过3个标识时只显示前3个 |
| 前置条件 | 触发3个以上来源的场景 |
| 测试步骤 | 1. 触发多来源场景
2. AI回复
3. 检查标识数量 |
| 预期结果 | 最多显示3个标识,按优先级排列 |
| 测试结果 | ⬜ 待测试 |
---
### 2.2 来源追溯
| TC-ID | TC-005 |
|-------|--------|
| 用例名称 | 坐席端 - 查看消息来源详情 |
| 前置条件 | 坐席进入会话详情 |
| 测试步骤 | 1. 坐席打开会话
2. 点击AI消息
3. 检查是否显示来源详情 |
| 预期结果 | 显示"来源:🕸️ 图谱"或"📋 业务路由 + 💻 资产推荐" |
| 测试结果 | ⬜ 待测试 |
---
| TC-ID | TC-006 |
|-------|--------|
| 用例名称 | 数据库 - reply_source字段存储正确 |
| 前置条件 | AI回复已持久化 |
| 测试步骤 | 1. 查询messages表
2. 检查reply_source字段 |
| 预期结果 | 字段存储JSON数组,如'["graph"]'或'["routing","assets"]' |
| 测试结果 | ⬜ 待测试 |
---
### 2.3 配置管理
| TC-ID | TC-007 |
|-------|--------|
| 用例名称 | 配置热更新 - 修改图标后生效 |
| 前置条件 | 修改配置文件 |
| 测试步骤 | 1. 修改config/ai_reply.yaml
2. 触发热更新
3. 发送消息测试 |
| 预期结果 | 标识图标按新配置显示 |
| 测试结果 | ⬜ 待测试 |
---
| TC-ID | TC-008 |
|-------|--------|
| 用例名称 | 无来源 - 不显示标识 |
| 前置条件 | 异常情况未获取到来源 |
| 测试步骤 | 1. 触发异常场景
2. AI回复
3. 检查是否显示标识 |
| 预期结果 | 不显示任何来源标识 |
| 测试结果 | ⬜ 待测试 |
---
## 三、接口测试用例
### 3.1 消息查询接口
| TC-ID | TC-009 |
|-------|--------|
| 用例名称 | API返回reply_source字段 |
| 前置条件 | 无 |
| 测试步骤 | 1. 调用GET /api/messages/{conversation_id}
2. 检查返回的messages中是否包含reply_source字段 |
| 预期结果 | 返回消息中包含reply_source字段 |
| 测试结果 | ⬜ 待测试 |
---
| TC-ID | TC-010 |
|-------|--------|
| 用例名称 | WebSocket推送包含标识 |
| 前置条件 | 建立WS连接 |
| 测试步骤 | 1. 建立WS连接
2. 触发AI回复
3. 检查推送消息 |
| 预期结果 | 推送消息中content带标识,reply_source为数组 |
| 测试结果 | ⬜ 待测试 |
---
### 3.2 边界情况
| TC-ID | TC-011 |
|-------|--------|
| 用例名称 | reply_source为null时 |
| 前置条件 | 历史数据reply_source为null |
| 测试步骤 | 1. 查询历史消息
2. 检查显示 |
| 预期结果 | 不显示标识,不报错 |
| 测试结果 | ⬜ 待测试 |
---
| TC-ID | TC-012 |
|-------|--------|
| 用例名称 | reply_source包含非法值时 |
| 前置条件 | 数据中存在非法来源值 |
| 测试步骤 | 1. 构造非法来源值
2. 检查显示 |
| 预期结果 | 忽略非法值,显示合法标识 |
| 测试结果 | ⬜ 待测试 |
---
## 四、关联文档
| 文档 | 路径 |
|------|------|
| PRD | `01-产品文档/03-AI服务/PRD-REQ-AI-004-AI回复来源标识-v1.0.md` |
| 技术方案 | `02-技术文档/技术架构/技术方案-REQ-AI-004-AI回复来源标识-v1.0.md` |
| 原型图 | `01-产品文档/03-AI服务/原型-REQ-AI-004-AI回复来源标识-v1.0.html` |