spec kit-需求文档模版
- Feature Specification: 电商客服智能体
- Overview(概述)
- User Scenarios & Testing (mandatory)
- User Story 1 - 产品价格查询 (Priority: P1)
- User Story 2 - 产品推荐 (Priority: P1)
- User Story 3 - 库存查询 (Priority: P1)
- User Story 4 - 订单和物流查询 (Priority: P1)
- User Story 5 - 产品对比 (Priority: P2)
- User Story 6 - 复杂多意图查询 (Priority: P2)
- User Story 7 - 退货流程 (Priority: P2)
- User Story 8 - 换货流程 (Priority: P2)
- User Story 9 - 维修流程 (Priority: P2)
- User Story 10 - 开发票流程 (Priority: P2)
- User Story 11 - 知识库查询 (Priority: P2)
- User Story 12 - 转人工兜底 (Priority: P1)
- Edge Cases(边界情况)
- Requirements (mandatory)
- Success Criteria (mandatory)
- Non-Functional Requirements(非功能需求)
- Constraints & Assumptions(约束与假设)
- Out of Scope(不在范围内)
- Dependencies(依赖)
- Risks(风险)
- Glossary(术语表)
- Approval(批准)
- References(参考)
Feature Specification: 电商客服智能体
Feature Branch: 001-customer-service-agent
Created: 2025-12-08
Status: Draft
Version: 1.0.0
Priority: P0 (Critical)
Overview(概述)
为 OPPO 手机制造企业打造电商平台智能客服系统,通过自然语言交互处理产品咨询、售后服务等业务活动。
User Scenarios & Testing (mandatory)
User Story 1 - 产品价格查询 (Priority: P1)
用户希望快速查询产品价格,包括优惠价和国家补贴后的价格。
Why this priority: 最基础、最高频的查询场景,是用户购买决策的第一步。
Independent Test: 用户输入"Find X8 多少钱?",系统返回准确价格,响应时间 < 500ms。
Acceptance Scenarios:
- Given 用户输入 "OPPO Find X8 多少钱?",When 系统识别为价格查询,Then 返回 "Find X8 当前售价 2999 元"
- Given 用户输入 "X9 国补后多少钱?",When 系统识别为价格查询+国补,Then 返回 "Find X9 原价 3999 元,国补 500 元,到手价 3499 元"
- Given 查询不存在的产品,When 系统查询,Then 返回 "抱歉,未找到该产品"
User Story 2 - 产品推荐 (Priority: P1)
用户根据预算和需求寻求产品推荐。
Why this priority: 帮助用户快速找到合适产品,提高转化率。
Independent Test: 用户输入"推荐4000以下的手机",系统返回符合条件的产品列表,所有产品价格 ≤ 4000。
Acceptance Scenarios:
- Given 用户输入 "推荐4000以下的手机",When 系统搜索产品,Then 返回 ≥3 款符合条件的产品,价格均 ≤ 4000
- Given 用户输入 "推荐适合女生的轻薄手机",When 系统搜索,Then 返回带"女性"、"轻薄"标签的产品
- Given 用户输入 "推荐12GB内存的手机",When 系统搜索,Then 返回内存为12GB的产品
User Story 3 - 库存查询 (Priority: P1)
用户希望知道某款产品是否有货,以及特定颜色的库存情况。
Why this priority: 避免用户下单后缺货,提升购物体验。
Independent Test: 用户输入"Find X9 白色有货吗?",系统返回实时库存状态。
Acceptance Scenarios:
- Given 用户输入 "Find X9 白色有货吗?",When 系统查询库存,Then 返回 "Find X9 白色有现货,当前库存 156 台"
- Given 查询缺货产品,When 系统查询,Then 返回 "抱歉,该产品暂时缺货"
- Given 查询不存在的颜色,When 系统查询,Then 返回 "该颜色不存在,可选颜色:白色、黑色、蓝色"
User Story 4 - 订单和物流查询 (Priority: P1)
用户查询订单状态和物流信息。
Why this priority: 高频查询,减轻人工客服压力。
Independent Test: 用户输入订单号,系统返回订单状态和物流信息。
Acceptance Scenarios:
- Given 用户输入 "订单 12345 到哪了?",When 系统查询,Then 返回订单状态、快递单号、预计送达时间
- Given 用户输入 "快递单号 SF123456",When 系统查询,Then 返回物流轨迹和当前位置
- Given 查询不存在的订单,When 系统查询,Then 返回 "未找到该订单"
User Story 5 - 产品对比 (Priority: P2)
用户对比多个产品的差异,帮助购买决策。
Why this priority: 提升用户决策效率,提高客单价。
Independent Test: 用户输入"对比 Find X8 和 X9",系统返回对比表格。
Acceptance Scenarios:
- Given 用户输入 "Find X8 和 X9 哪个更好?",When 系统对比,Then 返回参数对比表(处理器、内存、价格等)
- Given 用户输入 "对比 X8、X9 和 Reno 12 Pro",When 系统对比,Then 返回3款产品对比表
- Given 用户输入对比不存在的产品,When 系统查询,Then 提示"未找到产品 XXX"
User Story 6 - 复杂多意图查询 (Priority: P2)
用户在一句话中包含多个查询意图。
Why this priority: 提升用户体验,减少多轮对话。
Independent Test: 用户输入"对比 X8 和 X9,告诉我 X9 国补后多少钱",系统返回对比表和国补价格。
Acceptance Scenarios:
- Given 用户输入 "对比 X8 和 X9 的区别,并告诉我 X9 国补后多少钱",When 系统识别2个意图,Then 返回对比表 + X9 国补价格(3499元)
- Given 用户输入 "Find X9 有货吗?多少钱?",When 系统识别2个意图,Then 返回库存状态 + 价格信息
- Given 多意图查询,When 系统处理,Then 响应时间 < 1s
User Story 7 - 退货流程 (Priority: P2)
用户发起退货申请,系统引导完成退货流程。
Why this priority: 标准售后服务,必须支持。
Independent Test: 用户输入"我要退货",系统引导完成7步退货流程,最终生成退货单。
Acceptance Scenarios:
- Given 用户输入 "我要退货",When 系统收集订单号、验证资格、收集原因,Then 生成退货单并提供退货地址
- Given 订单已签收7天内,When 用户发起退货,Then 退货申请通过
- Given 订单超过7天,When 用户发起退货,Then 提示 "已超过退货期限(7天无理由退货)"
- Given 用户中途取消,When 输入"取消",Then 退出流程并保存进度
流程步骤:
- 收集订单号
- 验证订单资格(已签收 且 ≤7天)
- 收集退货原因
- 上传商品照片(可选)
- 生成退货单
- 提供退货地址和说明
- 完成
User Story 8 - 换货流程 (Priority: P2)
用户发起换货申请(颜色、容量不满意或质量问题)。
Why this priority: 标准售后服务。
Independent Test: 用户输入"我要换货",系统引导完成换货流程,采用先退后换模式。
Acceptance Scenarios:
- Given 用户输入 "我要换货",When 系统收集信息,Then 生成退货单,提示先退回商品
- Given 订单已签收15天内,When 用户发起换货,Then 换货申请通过
- Given 目标商品无货,When 用户选择换货商品,Then 提示 "目标商品暂时缺货"
流程模式:先退后换(用户先退回旧商品 → 验货通过 → 发出新商品)
User Story 9 - 维修流程 (Priority: P2)
用户手机出现故障,申请维修服务。
Why this priority: 售后服务核心场景。
Independent Test: 用户输入"手机需要维修",系统判断保修状态并引导完成维修预约。
Acceptance Scenarios:
- Given 用户输入 "手机需要维修",When 系统验证保修状态为保内,Then 提示 "保内免费维修"
- Given 用户购买超过1年,When 系统验证保修,Then 提示 "保外维修,预估费用 800 元"
- Given 用户确认维修方案,When 用户选择到店/寄修,Then 生成维修工单号
流程步骤:
- 收集设备信息(订单号或IMEI)
- 验证保修状态(保内/保外)
- 故障诊断(描述+照片)
- 评估维修方案和费用
- 用户确认
- 预约维修(到店/寄修)
- 完成
保修规则:
- 购买 ≤1年 → 保内
- 购买 >1年 → 保外
- 人为损坏 → 即使保内也收费
User Story 10 - 开发票流程 (Priority: P2)
用户申请开具发票(个人/企业)。
Why this priority: 财务合规需求。
Independent Test: 用户输入"我要开发票",系统引导完成开票流程。
Acceptance Scenarios:
- Given 用户输入 "我要开发票",When 用户选择个人普票,Then 自动生成电子发票发送邮箱
- Given 用户选择企业专票,When 用户填写完整企业信息,Then 3-5个工作日邮寄纸质发票
- Given 订单未支付,When 用户申请开票,Then 提示 "订单还未支付,无法开具发票"
- Given 订单已开过票,When 用户再次申请,Then 提示 "该订单已开具发票"
发票类型:
- 个人增值税普通发票(电子)
- 企业增值税普通发票(电子)
- 企业增值税专用发票(纸质邮寄)
User Story 11 - 知识库查询 (Priority: P2)
用户查询使用教程、故障排查、政策咨询等知识类问题。
Why this priority: 减少重复性问题,提升用户自助率。
Independent Test: 用户输入"手机发热怎么办?",系统从知识库检索并返回故障排查建议。
Acceptance Scenarios:
- Given 用户输入 "手机发热怎么办?",When 系统检索知识库,Then 返回故障排查步骤
- Given 用户输入 "如何设置指纹解锁?",When 系统检索,Then 返回设置教程
- Given 用户输入 "退货政策是什么?",When 系统检索,Then 返回退货政策说明
- Given 知识库无相关答案,When 系统检索失败,Then 提示 "建议转接人工客服"
知识类型:
- 使用教程
- 故障排查
- 政策咨询
- 常见问题(FAQ)
User Story 12 - 转人工兜底 (Priority: P1)
当系统无法处理时,转接人工客服。
Why this priority: 保证用户体验的兜底机制,防止用户流失。
Independent Test: 用户输入无法识别的问题或明确要求人工,系统转接人工客服。
Acceptance Scenarios:
- Given 用户输入 "这个东西怎么弄啊?"(意图不明确),When 系统识别置信度 < 0.5,Then 转接人工客服
- Given 用户输入 "转人工",When 系统识别转人工意图,Then 立即转接
- Given 系统3次无法回答,When 用户继续询问,Then 自动转接人工
转人工触发条件:
- 用户明确要求人工客服
- 意图识别置信度 < 0.5
- 连续3次无法给出满意答案
Edge Cases(边界情况)
数据异常
- 订单不存在 → 提示用户检查订单号,建议重新输入或联系人工
- 产品不存在 → 提示未找到该产品,推荐相似产品
- 库存为0 → 提示缺货,提供到货通知功能
时间限制
- 超过退货期限(7天) → 提示超期,建议联系人工客服处理特殊情况
- 超过换货期限(15天) → 提示超期,无法换货
- 保修期外 → 提示保外维修需要付费
权限限制
- 订单未支付 → 无法开发票、无法退货
- 订单未发货 → 无法查询物流
- 订单未签收 → 无法申请退货
并发冲突
- 订单正在处理中 → 提示"订单正在处理,请稍后再试"
- 重复申请 → 检测到已有退货单,提示"您已提交退货申请"
安全异常
- 疑似 Prompt 注入 → 拒绝处理,记录安全日志
- 超过频率限制 → 返回 429 错误,提示稍后再试
- 恶意输入 → 自动拦截,转安全审查
Requirements (mandatory)
Functional Requirements(功能需求)
意图识别与路由
- FR-001: 系统必须识别15种意图类型(查询5种、对比1种、推荐1种、流程4种、知识4种)
- FR-002: 系统必须提取关键实体(产品型号、价格范围、订单号、时间等)
- FR-003: 系统必须支持单一意图和多意图场景
- FR-004: 系统必须根据意图类型路由到合适的处理器
查询类功能
- FR-101: 系统必须支持库存查询(产品型号 + 颜色)
- FR-102: 系统必须支持价格查询(含优惠、国补)
- FR-103: 系统必须支持订单查询(订单状态、物流)
- FR-104: 系统必须支持物流查询(快递单号)
- FR-105: 系统必须支持参数查询(处理器、内存、摄像头等)
推荐类功能
- FR-201: 系统必须根据价格范围推荐产品
- FR-202: 系统必须根据配置需求推荐产品(内存、标签)
- FR-203: 系统必须支持多维度筛选(价格 + 内存 + 标签)
对比类功能
- FR-301: 系统必须支持2-5个产品的参数对比
- FR-302: 系统必须生成清晰的对比表格
- FR-303: 对比必须包含关键参数(价格、处理器、内存、摄像头、电池)
流程类功能
- FR-401: 系统必须支持退货流程(7天无理由)
- 收集订单号
- 验证退货资格
- 收集退货原因和照片
- 生成退货单和退货地址
- FR-402: 系统必须支持换货流程(15天换货期,先退后换)
- 收集订单号
- 验证换货资格
- 收集目标商品信息
- 生成退货单(先退回旧商品)
- FR-403: 系统必须支持维修流程(保内/保外)
- 验证保修状态
- 故障诊断
- 评估维修方案和费用
- 预约维修(到店/寄修)
- FR-404: 系统必须支持开发票流程
- 支持3种发票类型
- 验证订单已支付
- 收集发票信息(抬头、税号)
- 生成并发送发票
知识库功能
- FR-501: 系统必须从知识库检索相关文档
- FR-502: 系统必须支持使用教程查询
- FR-503: 系统必须支持故障排查指导
- FR-504: 系统必须支持政策咨询
- FR-505: 系统必须返回准确且结构化的答案
转人工功能
- FR-601: 系统必须在无法识别意图时转人工
- FR-602: 系统必须在用户明确要求时立即转人工
- FR-603: 系统必须记录转人工原因用于分析优化
Key Entities (business concepts)
Intent(意图)
- 定义: 用户输入的意图类型
- 属性: 意图类型(15种)、实体信息、置信度
- 关系: 一个用户输入可能包含1-N个意图
Order(订单)
- 定义: 用户的购买订单
- 属性: 订单号、用户信息、商品列表、订单状态、支付状态、签收时间
- 生命周期: 待支付 → 已支付 → 已发货 → 运输中 → 已签收 → 已完成
Product(产品)
- 定义: 手机产品
- 属性: 型号、价格、参数(处理器、内存、摄像头、电池)、颜色、库存
- 关系: 产品与订单是多对多关系
ReturnOrder(退货单)
- 定义: 退货申请记录
- 属性: 退货单号、原订单号、退货原因、照片、退货状态、创建时间
- 生命周期: 已创建 → 待寄回 → 已收货 → 验货中 → 已退款
RepairOrder(维修工单)
- 定义: 维修申请记录
- 属性: 工单号、设备信息、故障描述、维修方案、费用、预约信息、维修状态
- 生命周期: 已创建 → 待维修 → 维修中 → 已完成
Invoice(发票)
- 定义: 发票记录
- 属性: 发票号、订单号、发票类型、发票抬头、税号、金额、开票时间
- 类型: 个人普票、企业普票、企业专票
Success Criteria (mandatory)
Measurable Outcomes(可测量的结果)
准确性指标
- SC-001: 单一意图识别准确率 ≥ 95%
- SC-002: 多意图识别准确率 ≥ 90%
- SC-003: 实体提取准确率 ≥ 92%
性能指标
- SC-101: 简单查询类响应时间 P50 < 500ms, P90 < 800ms
- SC-102: 推荐类响应时间 P50 < 500ms, P90 < 1s
- SC-103: 多意图查询响应时间 P50 < 1s, P90 < 1.5s
- SC-104: 知识库查询响应时间 P50 < 800ms, P90 < 1.2s
- SC-105: 流程类单步响应时间 P50 < 1s, P90 < 1.5s
- SC-106: 首 Token 延迟 < 300ms(流式响应)
并发性能
- SC-201: 支持 500+ 并发用户
- SC-202: QPS ≥ 1000
- SC-203: 吞吐量 ≥ 100,000 tokens/s
缓存效率
- SC-301: 意图识别缓存命中率 > 60%
- SC-302: 向量检索缓存命中率 > 50%
- SC-303: API 响应缓存命中率 > 70%
用户体验
- SC-401: 用户满意度 ≥ 90%
- SC-402: 转人工率 < 10%
- SC-403: 错误率 < 0.5%
- SC-404: 系统可用性 ≥ 99.9%
业务指标
- SC-501: 减少人工客服咨询量 50%
- SC-502: 平均对话轮次 ≤ 3 轮
- SC-503: 问题解决率 ≥ 85%
Non-Functional Requirements(非功能需求)
Performance(性能)
查询类型定义:
-
简单查询: 单一意图 + 单次工具调用的查询
- 示例:价格查询("Find X8 多少钱?")、库存查询("Find X9 有货吗?")、订单查询("订单 12345 到哪了?")
- 特征:只调用 ReactAgent,只执行 1 个工具(get_price_info、get_inventory_info、get_order_info 等)
-
复杂查询: 多意图或需要多次工具调用的查询
- 示例:多意图查询("对比 Find X8 和 X9 的区别,并告诉我 X9 国补后多少钱")、产品推荐(需要过滤和排序)
- 特征:调用 Orchestrator(并行多个 Agent)或单个 Agent 需要多次工具调用
性能要求:
- 简单查询必须在 500ms 内响应(P50),800ms 内响应(P90)
- 复杂查询必须在 1s 内响应(P50)
- 系统必须支持 500+ 并发用户
- 缓存命中率必须 > 60%(意图识别缓存)、> 70%(响应缓存)
Security(安全)
- 系统必须防御 Prompt 注入攻击
- 系统必须对敏感数据脱敏(手机号、身份证)
- 系统必须验证输入长度(< 1000字符)
- 系统必须实施频率限制(100 req/min per user)
- 系统必须记录所有工具调用日志
- 系统必须隔离工具权限(只读 vs 写入)
Scalability(可扩展性)
- 系统必须支持水平扩展
- 系统必须使用异步处理(asyncio)
- 系统必须使用连接池
- 系统必须实现多层缓存(内存 + Redis)
Reliability(可靠性)
- 系统可用性必须 ≥ 99.9%
- 系统必须实现错误重试(最多3次,指数退避)
- 系统必须有降级策略
- 系统必须有熔断机制
Observability(可观测性)
- 系统必须记录详细日志
- 系统必须提供分布式追踪
- 系统必须提供实时监控指标
- 系统必须配置告警规则
Constraints & Assumptions(约束与假设)
Technical Constraints
- 使用 Python 3.12+
- 使用 LangGraph 作为编排框架
- 使用 FastAPI 作为 Web 框架
- LLM 调用延迟 200-500ms
Business Constraints
- 退货期限:7天无理由
- 换货期限:15天
- 保修期限:1年
- 发票必须符合税务规定
Assumptions
- 用户输入为中文
- 产品数据已存在
- 知识库已构建
- 订单系统 API 可用
Out of Scope(不在范围内)
- ❌ 语音交互(仅支持文本)
- ❌ 图片识别(照片仅作为附件上传)
- ❌ 视频客服
- ❌ 真实订单修改(仅查询,不支持取消/修改订单)
- ❌ 支付功能(不涉及支付流程)
- ❌ 用户账号管理
- ❌ 商品管理后台
Dependencies(依赖)
External Services(外部服务)
- 向量数据库(知识库存储)
- 缓存服务(意图缓存、结果缓存)
- LLM API(意图识别、知识问答)
- 订单系统(订单查询、退货单生成)
- 物流系统(物流查询)
- 发票系统(发票生成)
Data Dependencies(数据依赖)
- 产品数据(型号、价格、参数、库存)
- 知识库文档(教程、FAQ、政策)
- 订单数据(订单状态、支付状态)
- 物流数据(快递轨迹)
Risks(风险)
| 风险 | 影响 | 概率 | 缓解措施 |
|---|---|---|---|
| 意图识别错误 | 高 | 中 | 多轮确认、置信度阈值、人工兜底 |
| 响应时间超标 | 中 | 中 | 缓存、并行调用、降级策略 |
| LLM 成本过高 | 高 | 中 | 意图缓存、智能路由、使用更便宜模型 |
| 知识库召回不准 | 中 | 中 | 使用 Reranker、持续优化索引 |
| 安全攻击 | 高 | 低 | 输入验证、权限隔离、审计日志 |
| 外部服务不可用 | 高 | 低 | 重试机制、降级策略、熔断器 |
Glossary(术语表)
| 术语 | 定义 | 别名 |
|---|---|---|
| 意图(Intent) | 用户输入的目的或需求类型 | - |
| 实体(Entity) | 从用户输入中提取的关键信息 | 槽位(Slot) |
| 置信度(Confidence) | 意图识别的确定性程度(0.0-1.0) | - |
| 国补 | 国家补贴,政府对特定产品的价格补贴 | 以旧换新补贴 |
| 保内/保外 | 在保修期内/保修期外 | - |
| 专票 | 增值税专用发票 | - |
| 普票 | 增值税普通发票 | - |
Approval(批准)
| 角色 | 姓名 | 状态 | 日期 |
|---|---|---|---|
| Product Owner | - | ⏳ Pending | - |
| Tech Lead | - | ⏳ Pending | - |
| QA Lead | - | ⏳ Pending | - |
References(参考)
- Constitution - 开发规范
- Spec Kit Quickstart - 快速入门
- Plan Document - 技术方案(待创建)
Status: Draft → Review → Approved
Next Step: /speckit.plan - 创建技术实现计划

浙公网安备 33010602011771号