📄 PRD 文档标准模板

Product Requirements Document Standard Template

版本 v1.0 | 2026-03-13 | 基于行业最佳实践与 AI 增强

PRD 模板概述

📋 什么是 PRD?

产品需求文档(Product Requirements Document, PRD)是产品开发过程中的核心文档, 它定义了产品的目标、功能、特性和行为,是产品团队、设计团队、开发团队和测试团队之间的沟通桥梁。

1.1 模板特点

✅ 完整性

覆盖产品需求的各个方面,从用户故事到技术实现,从业务流程到 API 协议,确保无遗漏。

🏗️ 结构化

清晰的层次结构和编号体系,便于阅读、理解和追溯,支持大型复杂产品的需求管理。

🧪 可测试

每个需求都有明确的验收标准和测试场景,确保需求可验证、可测试、可交付。

🔗 可追溯

建立用户故事→功能需求→测试用例的完整追溯链,支持影响分析和变更管理。

🎯 灵活性

支持不同规模和复杂度的产品,可根据项目特点裁剪或扩展特定章节。

🤖 AI 友好

结构化数据格式便于 AI 自动生成和处理,支持 AI Coding 全流程自动化。

📦 多格式

支持 JSON、Markdown、HTML、Excel 等多种导出格式,满足不同场景需求。

👥 协同性

明确的利益相关者和审批流程,支持多人协作和版本控制。

1.2 适用场景

🌐 Web 应用

企业级 SaaS 平台、电商网站、内容管理系统等

📱 移动应用

iOS/Android原生应用、小程序、混合应用等

🔌 API 服务

RESTful API、GraphQL、微服务、开放平台等

🤖 AI 系统

大模型应用、智能助手、推荐系统、自动化流程等

1.3 模板结构总览

章节 内容 关键产出 主要参与者
1. 文档信息 元数据、版本控制、审批流程 文档标识、变更记录 产品经理
2. 产品概述 愿景、目标、范围、受众 产品定位、边界定义 产品 + 业务
3. 用户研究 画像、故事、旅程地图 用户需求洞察 产品 + UX
4. 业务流程 流程图、用例、参与者 业务逻辑梳理 产品 + 业务
5. 功能需求 详细功能描述、验收标准 可实现的功能规格 产品 + 开发
6. 非功能需求 性能、安全、可靠性等 质量属性指标 架构 + 开发
7. 原型设计 线框图、交互、视觉规范 UI/UX设计方案 UX/UI设计师
8. 数据模型 实体、关系、约束 数据库设计基础 架构 + DBA
9. API 协议 接口定义、请求响应 前后端契约 后端开发
10-15. 其他 集成、合规、风险、发布等 全面保障 全员参与

文档信息与元数据

📝 文档元数据结构

字段 类型 必填 说明 示例
prd_id String PRD 唯一标识符 PRD-20260313-001
title String PRD 标题 电商平台用户中心 PRD
version String 版本号(语义化版本) 1.0.0
status Enum 文档状态 草稿/评审中/已批准/已归档
created_date Date 创建日期 2026-03-13
last_updated Date 最后更新日期 2026-03-13
author String 作者/负责人 张三(产品经理)
stakeholders List<String> 利益相关者列表 ["李四(技术)", "王五(设计)"]
approvers List<String> 审批人列表 ["赵六(产品总监)"]
tags List<String> 标签(便于检索) ["电商", "用户中心", "2026Q1"]

📋 示例:文档元数据

{
  "prd_id": "PRD-20260313-001",
  "title": "电商平台用户中心产品需求文档",
  "version": "1.0.0",
  "status": "评审中",
  "created_date": "2026-03-13",
  "last_updated": "2026-03-13",
  "author": "张三(高级产品经理)",
  "stakeholders": [
    "李四(技术负责人)",
    "王五(UX 设计师)",
    "赵六(运营负责人)",
    "钱七(客服主管)"
  ],
  "approvers": [
    "周八(产品副总裁)",
    "吴九(CTO)"
  ],
  "tags": ["电商", "用户中心", "CRM", "2026Q1"]
}

2.1 变更日志规范

变更记录表结构

版本 日期 作者 变更类型 变更描述 影响范围 审批人
1.0.0 2026-03-13 张三 新增 初始版本创建 全部章节 周八
1.1.0 2026-03-15 张三 修改 根据评审意见更新功能需求 第 5 章 周八
1.2.0 2026-03-18 张三 补充 添加 API 协议和数据模型 第 8-9 章 周八

产品概述

3.1 执行摘要

编写要点

  • 长度:200-300 字,简洁明了
  • 内容:核心价值主张、目标市场、预期影响
  • 读者:高管、投资人、新加入团队成员
  • 目的:快速了解产品全貌,决定是否深入阅读

📋 示例:执行摘要

本产品是一个面向中小企业的智能化电商用户中心解决方案,旨在帮助企业提升客户管理效率和用户满意度。 通过整合用户数据、优化服务流程、提供个性化推荐,我们预计可将客户留存率提升 30%, 客服响应时间缩短 50%。产品将服务于 1000+ 中小企业,覆盖电商、零售、服务业等多个行业, 预计在上线后 12 个月内实现 10 万 + 活跃用户。

3.2 问题陈述

问题陈述框架

  1. 现状描述:当前用户面临的具体情况
  2. 痛点分析:存在的问题和挑战
  3. 影响评估:问题带来的负面影响
  4. 机会识别:解决后的潜在价值

📋 示例:问题陈述

现状:目前中小企业在用户管理方面普遍使用分散的工具和手工流程, 导致数据孤岛严重、客户信息不完整、服务响应慢。

痛点

  • 客户数据分散在多个系统中,无法形成统一视图
  • 客服响应时间长,平均需要 24 小时
  • 缺乏个性化服务能力,客户体验差
  • 营销转化率低,复购率不足 20%
影响:客户流失率高(年流失率 40%+),口碑传播受限,增长乏力。

机会:通过一体化用户中心,整合数据、优化流程、智能服务,可显著提升客户满意度和商业价值。

3.3 产品愿景

📋 示例:产品愿景

成为中小企业首选的智能化用户管理平台,让每一家企业都能像大公司一样专业地服务客户。 通过 AI 驱动的数据洞察和自动化流程,帮助用户实现:

  • 客户数据 100% 整合,形成完整的 360°视图
  • 客服响应时间缩短至 2 小时内
  • 个性化推荐转化率提升至行业平均水平的 2 倍
  • 客户年留存率提升至 80%+

3.4 目标和目的(SMART 原则)

SMART 目标示例

目标 S 具体 M 可衡量 A 可实现 R 相关性 T 时限性
目标 1 提升客户留存率 从 60% 提升至 80% 基于行业标杆 直接关联收入 2026 年底前
目标 2 缩短响应时间 从 24h 降至 2h 自动化流程支持 提升满意度 2026 Q3 前
目标 3 提高转化率 从 2% 提升至 5% AI 推荐引擎 增加营收 2026 Q4 前

3.5 范围界定

✅ 包含范围 (In-Scope)

  • 用户注册与登录(含第三方登录)
  • 个人资料管理与头像上传
  • 订单历史查询与追踪
  • 收藏夹和购物车功能
  • 优惠券和积分管理
  • 在线客服与工单系统
  • 消息通知中心(邮件/短信/推送)
  • 数据导出功能(PDF/Excel)

❌ 排除范围 (Out-of-Scope)

  • 商家后台管理系统(单独 PRD)
  • 供应链和库存管理
  • 财务结算和对账系统
  • 移动端原生 App(Phase 2)
  • 线下门店 POS 集成
  • 跨境电商多语言支持(Phase 3)
  • 区块链积分系统(研究中)

用户研究

4.1 用户画像 (User Personas)

用户画像模板

字段 说明 示例
ID 唯一标识 PERSONA-001
姓名 拟人化名称 购物达人小李
角色 职业/身份 25 岁白领,电商重度用户
人口统计 年龄、性别、地域、收入等 25-30 岁,女性,一线城市,月收入 15k+
目标 使用产品想要达成什么 快速找到心仪商品、享受优惠、便捷售后
痛点 当前遇到的问题 商品信息不透明、客服响应慢、退货流程复杂
行为特征 使用习惯、偏好 移动端为主、晚间活跃、重视评价、价格敏感
代表性引言 真实用户语录 "我就想简单买个东西,别让我找半天还找不到客服"

4.2 用户故事 (User Stories)

用户故事格式

标准格式:
作为 [用户角色],我想要 [功能/特性],以便 [实现价值/解决问题]

示例:
作为 注册用户,我想要 通过手机号验证码快速登录,以便 无需记住密码即可访问我的账户

作为 购物者,我想要 查看订单实时物流信息,以便 了解包裹何时送达

作为 消费者,我想要 一键申请退货退款,以便 在不满意时快速处理

用户故事优先级排序(MoSCoW 法则)

优先级 含义 占比建议 示例
M Must Have 必须有,否则产品无法发布 40-50% 用户注册登录、浏览商品、下单支付
S Should Have 应该有,重要但不是必须 20-30% 收藏夹、优惠券、订单追踪
C Could Have 可以有,锦上添花 15-25% 个性化推荐、积分商城、社交分享
W Won't Have 本次不会有,留待未来 5-10% AR 试穿、语音购物、区块链积分

4.3 验收标准 (Acceptance Criteria)

Gherkin 格式示例(Given-When-Then)

用户故事: 作为用户,我想要通过手机号验证码登录,以便快速访问账户

验收标准:

Scenario 1: 正常登录流程
  Given 用户已注册且手机号有效
  When 用户输入手机号并请求验证码
  Then 系统发送 6 位数字验证码到手机
  And 验证码 5 分钟内有效
  
Scenario 2: 验证码验证成功
  Given 用户已收到有效验证码
  When 用户输入正确的验证码
  Then 系统验证通过并跳转到首页
  And 自动登录用户账户
  
Scenario 3: 验证码错误
  Given 用户输入错误的验证码
  When 用户提交验证
  Then 系统提示"验证码错误,请重新输入"
  And 允许用户重新尝试(剩余次数显示)
  
Scenario 4: 验证码过期
  Given 验证码已超过 5 分钟有效期
  When 用户尝试使用该验证码
  Then 系统提示"验证码已过期"
  And 提供"重新发送验证码"选项
  
Scenario 5: 防刷限制
  Given 同一手机号 1 分钟内已请求 3 次验证码
  When 用户再次请求验证码
  Then 系统提示"操作过于频繁,请稍后再试"
  And 60 秒后才允许重新请求

业务流程

5.1 业务流程模板

流程定义要素

要素 说明 示例(订单处理流程)
流程 ID 唯一标识 BP-ORDER-001
流程名称 简洁描述 订单创建与支付流程
流程描述 详细说明 用户从加入购物车到完成支付的完整流程
阶段 流程各阶段 加购 → 结算 → 支付 → 确认
参与者 涉及角色 用户、支付网关、订单系统、库存系统
输入 流程启动条件 用户点击"去结算"、购物车中有商品
输出 流程结果 已支付订单、库存扣减、支付记录
异常 可能的异常情况 支付失败、库存不足、网络超时

5.2 用例 (Use Cases)

用例模板示例

UC-001: 用户下单

参与者: 注册用户

前置条件:
- 用户已登录
- 购物车中有商品
- 商品有库存

主流程:
1. 用户进入购物车页面
2. 用户选择要购买的商品
3. 用户点击"去结算"
4. 系统显示订单确认页面(含商品清单、金额、收货地址)
5. 用户确认订单信息并选择支付方式
6. 用户点击"立即支付"
7. 系统调用支付网关
8. 用户完成支付操作
9. 支付网关返回支付成功
10. 系统创建订单并扣减库存
11. 系统显示订单成功页面
12. 系统发送订单确认通知(邮件/短信)

备选流程:
A1: 用户修改收货地址
  - 在步骤 4,用户可以点击"修改地址"
  - 系统弹出地址选择器
  - 用户选择新地址并确认
  - 返回步骤 4,更新显示

A2: 用户使用优惠券
  - 在步骤 5,用户可以点击"使用优惠券"
  - 系统显示可用优惠券列表
  - 用户选择优惠券
  - 系统重新计算订单金额
  - 继续步骤 6

异常流程:
E1: 支付失败
  - 在步骤 8,支付网关返回失败
  - 系统提示支付失败原因
  - 提供"重新支付"或"更换支付方式"选项
  - 用户可选择重试或取消订单

E2: 库存不足
  - 在步骤 6,系统检测到某商品库存不足
  - 系统提示"XX 商品库存不足"
  - 提供"移除商品"或"继续选购"选项
  - 用户调整后重新开始流程

后置条件:
- 订单状态为"已支付"
- 库存数量已扣减
- 用户账户生成订单记录
- 支付记录已保存

功能需求

6.1 功能需求模板

FR 结构详解

字段 说明 填写指南
id 唯一标识符 FR-{模块}-{序号},如 FR-USER-001
title 功能标题 简洁明确,10 字以内概括功能
description 详细描述 200-500 字,说明功能是什么、做什么用
type 需求类型 功能性/非功能性/业务/用户/系统/合规
priority 优先级 P0 关键 / P1 高 / P2 中 / P3 低
user_story_ids 关联用户故事 追溯到具体的 US-ID,建立追溯链
acceptance_criteria 验收标准 可测试的条件列表,每条独立可验证
business_rules 业务规则 业务逻辑约束、计算公式、判断条件
data_requirements 数据需求 需要存储/处理/展示的数据字段
ui_requirements UI 需求 界面元素、布局、交互方式
api_requirements API 需求 需要的接口、数据格式、调用频率
constraints 约束条件 技术限制、业务限制、法律合规要求
assumptions 假设条件 功能实现的前提假设

📋 完整功能需求示例

FR-USER-001: 手机号验证码登录

描述:
用户可以通过输入手机号和短信验证码的方式快速登录系统,无需记忆密码。
系统会向用户手机发送 6 位数字验证码,用户在有效期内输入正确验证码即可完成登录。
该功能支持新用户自动注册和老用户直接登录的无缝体验。

类型: 功能性需求

优先级: P0 - 关键

关联用户故事: ["US-LOGIN-001", "US-REGISTER-001"]

验收标准:
1. 用户输入有效手机号后,可以点击"获取验证码"按钮
2. 系统在 10 秒内发送 6 位数字验证码到用户手机
3. 验证码有效期为 5 分钟,超时后自动失效
4. 用户输入正确验证码后,系统在 2 秒内完成验证并登录
5. 新用户首次登录自动创建账户,老用户直接进入首页
6. 同一手机号 1 分钟内最多请求 3 次验证码
7. 同一手机号每天最多接收 20 条验证码
8. 验证码输入错误 5 次后,该验证码失效,需重新获取
9. 登录成功后,系统记录登录日志(时间、IP、设备)
10. 支持验证码语音播报功能(无障碍需求)

业务规则:
- 验证码格式:6 位纯数字
- 验证码生成算法:加密随机数生成
- 手机号格式校验:符合中国大陆手机号规则(11 位,1 开头)
- 自动注册规则:新用户登录后,系统自动创建账户,默认用户名=手机号
- 登录态有效期:7 天免登录(本地存储 Token)
- 频次限制:基于 IP+ 手机号双重限制

数据需求:
- 用户表:mobile(手机号), verify_code(验证码), code_expire_time(过期时间), 
          verify_attempts(验证尝试次数), last_login_time(最后登录时间)
- 验证码发送记录:mobile, send_time, ip_address, device_id, status(成功/失败)
- 登录日志:user_id, login_time, ip_address, device_info, login_type

UI 需求:
- 登录页面包含:手机号输入框、验证码输入框、获取验证码按钮、登录按钮
- 手机号输入框:实时格式校验,错误时红色边框提示
- 验证码输入框:6 个独立格子或连续输入框,支持自动聚焦下一格
- 获取验证码按钮:点击后进入 60 秒倒计时,期间禁用
- 登录按钮:输入完整前禁用,输入完成后启用
- 错误提示:输入框下方红色文字提示具体错误原因
- 加载状态:登录过程中按钮显示 loading 动画并禁用
- 成功反馈:登录成功后显示绿色对勾动画,然后跳转

API 需求:
- POST /api/v1/auth/send-code: 发送验证码
  请求:{mobile: string}
  响应:{success: boolean, message: string}
- POST /api/v1/auth/verify-code: 验证验证码
  请求:{mobile: string, code: string}
  响应:{success: boolean, token: string, user: object}
- 速率限制:每个接口独立限流,防止恶意调用

约束条件:
- 技术约束:必须使用公司指定的短信服务商(阿里云短信)
- 安全约束:验证码在数据库中必须加密存储
- 合规约束:必须符合《网络安全法》实名制要求
- 性能约束:验证码发送延迟<10 秒,验证响应时间<2 秒
- 兼容性约束:支持 iOS Safari、Android Chrome、微信内置浏览器

假设条件:
- 假设短信服务商可用性>99.9%
- 假设用户输入的手机号为其本人所有
- 假设用户手机能正常接收短信
- 假设网络环境稳定,无严重丢包

非功能需求

7.1 非功能需求分类

⚡ 性能 (Performance)

响应时间、吞吐量、并发能力、资源利用率

示例:页面加载<2 秒,API 响应<200ms

🔒 安全 (Security)

认证授权、数据加密、漏洞防护、审计日志

示例:HTTPS 传输、密码哈希存储

📈 可扩展性 (Scalability)

水平扩展、垂直扩展、弹性伸缩

示例:支持 10 倍流量增长的弹性架构

🛡️ 可靠性 (Reliability)

可用性、容错性、恢复能力

示例:99.9% 可用性,故障自动恢复

👁️ 可用性 (Usability)

易用性、学习曲线、用户满意度

示例:新用户 5 分钟内完成首次操作

♿ 无障碍 (Accessibility)

残障人士支持、WCAG 合规

示例:符合 WCAG 2.1 AA 标准

🌍 国际化 (Internationalization)

多语言、多时区、本地化

示例:支持中英双语,自动时区转换

📊 可维护性 (Maintainability)

代码质量、文档完善度、监控能力

示例:代码覆盖率>80%,全链路监控

7.2 NFR 模板示例

NFR 结构

NFR-PERF-001: API 响应时间

类别: Performance

标题: API 接口响应时间要求

描述:
所有对外提供的 API 接口必须在规定负载条件下满足响应时间要求,
确保用户体验和系统性能。

度量指标: 平均响应时间、P95 响应时间、P99 响应时间

目标值:
- 平均响应时间:< 200ms
- P95 响应时间:< 500ms
- P99 响应时间:< 1000ms
- 错误率:< 0.1%

测量方法:
- 使用 APM 工具(如 New Relic/DataDog)持续监控
- 压测工具(如 JMeter/k6)定期压力测试
- 按接口维度统计,区分读/写操作
- 数据统计周期:按小时聚合,按天报告

优先级: P0 - 关键

测试场景:
1. 基准测试:单用户、理想网络条件下的响应时间
2. 负载测试:1000 并发用户,持续 30 分钟
3. 压力测试:逐步增加并发直到系统崩溃,找出瓶颈
4. 稳定性测试:80% 最大负载,持续 24 小时
5. 峰值测试:模拟促销活动时的突发流量(10 倍正常流量)

依赖条件:
- 网络延迟:< 50ms(国内)
- 数据库响应:< 50ms
- 缓存命中率:> 90%

例外情况:
- 文件上传/下载接口不适用此标准
- 复杂报表生成接口单独定义(<5 秒)
- 第三方 API 调用时间不计入(但需监控)

7.3 安全需求示例

🔒 NFR-SEC-001: 数据安全

类别: Security

标题: 用户数据加密存储与传输

描述:
所有敏感用户数据必须在存储和传输过程中进行加密,
防止数据泄露和未授权访问。

度量指标: 加密覆盖率、密钥轮换周期、安全审计通过率

目标值:
- 敏感数据加密存储率:100%
- HTTPS 覆盖率:100%
- 密钥轮换周期:≤90 天
- 安全漏洞修复时间:高危<24 小时,中危<7 天

测量方法:
- 代码审查检查加密实现
- 渗透测试验证安全性
- 自动化扫描工具检测漏洞
- 安全审计报告跟踪

优先级: P0 - 关键

测试场景:
1. 数据传输抓包分析,验证 HTTPS 加密
2. 数据库直接查询,验证敏感字段加密存储
3. 中间人攻击模拟测试
4. SQL 注入、XSS、CSRF 等常见攻击防护测试
5. 权限绕过测试

合规要求:
- 符合《网络安全法》要求
- 符合 GDPR 数据保护规定(如适用)
- 符合 PCI DSS 支付卡行业标准(如处理支付)

原型与设计规范

8.1 原型保真度级别

三种保真度对比

级别 特点 用途 工具 耗时
低保真
(Low-Fi)
草图、线框图
黑白灰、简单形状
无交互或简单跳转
早期概念验证
快速迭代想法
内部讨论
纸笔、Balsamiq
Figma 线框模式
分钟~小时
中保真
(Mid-Fi)
接近最终布局
基本颜色和字体
可点击交互原型
用户测试
利益相关者评审
交互流程验证
Figma、Sketch
Adobe XD、Axure
小时~天
高保真
(Hi-Fi)
与最终产品一致
完整视觉设计
真实内容和动效
最终评审
开发参考
市场宣传
Figma、Sketch
+ Principle/ProtoPie
天~周

8.2 原型规范模板

原型定义要素

要素 说明 示例
原型 ID 唯一标识 PROTO-CHECKOUT-001
名称 原型名称 结账流程原型
保真度 Low/Mid/High Mid-Fi(中保真)
屏幕列表 包含的所有页面 购物车页、地址选择页、支付页、成功页
交互说明 用户操作与系统响应 点击"去结算"→跳转地址选择页
用户流程 完整任务路径 查看购物车→选择地址→选择支付方式→确认支付→完成
设计系统组件 使用的 UI 组件 按钮、输入框、卡片、导航栏等
无障碍要求 Accessibility 考虑 键盘导航、屏幕阅读器支持、色盲友好
响应式断点 适配的屏幕尺寸 Mobile (<768px)、Tablet (768-1024px)、Desktop (>1024px)

8.3 设计规范

🎨 设计系统要素

色彩系统:
- 主色:#6366f1 (Indigo)
  - 用于主要按钮、链接、重要图标
  - Hover 状态:#4f46e5 (加深 10%)
  - Active 状态:#4338ca (加深 20%)
  
- 辅助色:#8b5cf6 (Purple)
  - 用于次要操作、装饰元素
  
- 强调色:#06b6d4 (Cyan)
  - 用于提示、高亮、特殊状态
  
- 成功色:#10b981 (Green)
  - 用于成功提示、完成状态
  
- 警告色:#f59e0b (Amber)
  - 用于警告提示、注意信息
  
- 危险色:#ef4444 (Red)
  - 用于错误提示、删除操作
  
- 中性色:
  - 文字主色:#1e293b
  - 文字次要:#64748b
  - 边框色:#e2e8f0
  - 背景色:#f8fafc

字体系统:
- 英文字体:Inter, system-ui, sans-serif
- 中文字体:'PingFang SC', 'Microsoft YaHei', sans-serif
- 字号规范:
  - 超大标题:32px / 2.5rem (H1)
  - 大标题:24px / 2rem (H2)
  - 中标题:20px / 1.5rem (H3)
  - 小标题:16px / 1.25rem (H4)
  - 正文:14px / 1rem (Base)
  - 辅助文字:12px / 0.875rem (Small)
- 字重:
  - Regular: 400
  - Medium: 500
  - Semibold: 600
  - Bold: 700

间距系统:
- 基于 8px 网格系统
- 间距值:4, 8, 12, 16, 24, 32, 48, 64, 96, 128 px
- 组件内边距:16px (标准), 24px (大)
- 组件外边距:24px (标准), 32px (大)

圆角规范:
- 小圆角:4px (按钮、输入框)
- 中圆角:8px (卡片、弹窗)
- 大圆角:16px (模态框、特殊组件)
- 全圆角:9999px (头像、徽章)

阴影层级:
- Shadow Sm: 0 1px 2px rgba(0,0,0,0.05)
- Shadow Md: 0 4px 6px rgba(0,0,0,0.1)
- Shadow Lg: 0 10px 15px rgba(0,0,0,0.1)
- Shadow Xl: 0 20px 25px rgba(0,0,0,0.15)
- Shadow 2xl: 0 25px 50px rgba(0,0,0,0.25)

动效规范:
- 缓动函数:cubic-bezier(0.4, 0, 0.2, 1)
- 持续时间:
  - 快速:150ms (Hover、Focus)
  - 标准:300ms (一般过渡)
  - 慢速:500ms (大型动画)
- 动效原则:
  - 有意义:每个动画都有明确目的
  - 自然:符合物理规律
  - 克制:不过度使用动画

数据模型

9.1 实体定义模板

数据模型结构

字段 类型 必填 默认值 说明 示例
id UUID / BIGINT auto 主键 ID 550e8400-e29b-41d4-a716-446655440000
created_at DATETIME NOW() 创建时间 2026-03-13 10:30:00
updated_at DATETIME NOW() 更新时间(自动) 2026-03-13 11:45:00
is_deleted BOOLEAN FALSE 软删除标记 false
version INT 1 乐观锁版本号 1

📊 示例:用户实体

DM-USER-001: User (用户表)

描述: 存储系统注册用户的基本信息和账户状态

属性:

| 字段名 | 类型 | 必填 | 默认值 | 说明 |
|--------|------|------|--------|------|
| id | UUID | ✅ | auto | 主键 ID |
| mobile | VARCHAR(11) | ✅ | - | 手机号(唯一) |
| email | VARCHAR(255) | ⭕ | NULL | 邮箱地址 |
| password_hash | VARCHAR(255) | ⭕ | NULL | 密码哈希(第三方登录为空) |
| nickname | VARCHAR(50) | ⭕ | NULL | 昵称 |
| avatar_url | VARCHAR(500) | ⭕ | NULL | 头像 URL |
| gender | TINYINT | ⭕ | 0 | 性别:0-未知,1-男,2-女 |
| birthday | DATE | ⭕ | NULL | 生日 |
| registration_source | VARCHAR(20) | ✅ | - | 注册来源:SMS/WECHAT/WEIBO |
| last_login_at | DATETIME | ⭕ | NULL | 最后登录时间 |
| last_login_ip | VARCHAR(45) | ⭕ | NULL | 最后登录 IP |
| status | TINYINT | ✅ | 1 | 状态:0-禁用,1-正常,2-注销 |
| created_at | DATETIME | ✅ | NOW() | 创建时间 |
| updated_at | DATETIME | ✅ | NOW() | 更新时间 |
| is_deleted | BOOLEAN | ✅ | FALSE | 软删除标记 |
| version | INT | ✅ | 1 | 乐观锁版本 |

索引:
- PRIMARY KEY (id)
- UNIQUE INDEX idx_mobile (mobile)
- INDEX idx_email (email)
- INDEX idx_status (status)
- INDEX idx_created_at (created_at)

关系:
- 1:N → Order (用户有多个订单)
- 1:N → Address (用户有多个收货地址)
- 1:1 → UserProfile (用户详情,一对一扩展)

约束:
- mobile 必须唯一且符合中国手机号格式
- email 必须符合邮箱格式(如果提供)
- status 默认为 1(正常)
- 软删除:is_deleted=true 的记录对业务不可见

示例数据:
```json
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "mobile": "13800138000",
  "email": "user@example.com",
  "nickname": "张三",
  "avatar_url": "https://cdn.example.com/avatars/001.jpg",
  "gender": 1,
  "birthday": "1990-01-01",
  "registration_source": "SMS",
  "last_login_at": "2026-03-13T10:30:00Z",
  "last_login_ip": "192.168.1.100",
  "status": 1,
  "created_at": "2026-01-01T00:00:00Z",
  "updated_at": "2026-03-13T10:30:00Z",
  "is_deleted": false,
  "version": 1
}
```

9.2 ER 图规范

📌 ER 图绘制工具推荐:
  • 在线工具:dbdiagram.io、DrawSQL、Lucidchart
  • 桌面工具:MySQL Workbench、DataGrip、Navicat
  • 代码生成:Prisma Schema、TypeORM Entities

最佳实践:将 ER 图导出为 PNG/SVG 嵌入 PRD 文档,并提供可编辑源文件链接(如 Figma/dbdiagram)。

API 接口协议

10.1 API 设计原则

🔧 RESTful 风格

  • 使用名词复数表示资源:/users, /orders
  • HTTP 方法表达操作:GET/POST/PUT/DELETE
  • 状态码准确反映结果:200/201/400/404/500
  • 版本控制:/api/v1/resource

📦 统一响应格式

{
  "success": true,
  "data": {...},
  "message": "操作成功",
  "timestamp": "2026-03-13T10:30:00Z",
  "request_id": "uuid"
}

🔐 认证授权

  • JWT Bearer Token
  • OAuth 2.0(第三方登录)
  • API Key(服务端调用)
  • 刷新 Token 机制

⚡ 性能优化

  • 分页:?page=1&size=20
  • 字段过滤:?fields=id,name,email
  • 缓存:Cache-Control headers
  • 批量操作:减少请求次数

10.2 API 协议模板

API 定义要素

要素 说明 示例
API ID 唯一标识 API-USER-001
端点 URL 路径 /api/v1/users/{id}
方法 HTTP Method GET / POST / PUT / DELETE
描述 接口功能说明 获取指定用户的详细信息
请求头 Required Headers Authorization, Content-Type
路径参数 Path Parameters id: 用户 ID (UUID)
查询参数 Query Parameters fields: 字段过滤
请求体 Request Body (JSON) POST/PUT 时的数据结构
成功响应 2xx Response 状态码 + 数据结构
错误响应 4xx/5xx Response 错误码 + 错误信息
认证方式 Authentication JWT Bearer Token
速率限制 Rate Limits 100 requests/minute
cURL 示例 调用示例 完整的命令行示例

🔌 完整 API 示例

API-USER-001: 获取用户信息

端点: GET /api/v1/users/{id}

描述: 获取指定用户的详细信息,包括基本信息和扩展资料

认证: JWT Bearer Token(需要登录)

权限: 用户只能查看自己的信息,管理员可查看所有用户

速率限制: 100 requests/minute per user

路径参数:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| id | UUID | ✅ | 用户 ID |

查询参数:
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|------|------|------|--------|------|
| fields | String | ⭕ | all | 字段过滤,逗号分隔 |
| include | String | ⭕ | none | 关联数据,如:orders,addresses |

请求头:
```
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Content-Type: application/json
```

成功响应 (200 OK):
```json
{
  "success": true,
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "mobile": "138****8000",
    "email": "user@example.com",
    "nickname": "张三",
    "avatar_url": "https://cdn.example.com/avatars/001.jpg",
    "gender": 1,
    "birthday": "1990-01-01",
    "registration_source": "SMS",
    "last_login_at": "2026-03-13T10:30:00Z",
    "created_at": "2026-01-01T00:00:00Z"
  },
  "message": "获取成功",
  "timestamp": "2026-03-13T12:00:00Z",
  "request_id": "req-abc123"
}
```

错误响应 (404 Not Found):
```json
{
  "success": false,
  "error": {
    "code": "USER_NOT_FOUND",
    "message": "用户不存在",
    "details": {
      "user_id": "550e8400-e29b-41d4-a716-446655440000"
    }
  },
  "timestamp": "2026-03-13T12:00:00Z",
  "request_id": "req-abc123"
}
```

错误码说明:
| 状态码 | 错误码 | 说明 |
|--------|--------|------|
| 400 | INVALID_USER_ID | 用户 ID 格式无效 |
| 401 | UNAUTHORIZED | 未登录或 Token 过期 |
| 403 | FORBIDDEN | 无权查看该用户信息 |
| 404 | USER_NOT_FOUND | 用户不存在 |
| 429 | RATE_LIMIT_EXCEEDED | 请求频率超限 |
| 500 | INTERNAL_ERROR | 服务器内部错误 |

cURL 示例:
```bash
curl -X GET 'https://api.example.com/api/v1/users/550e8400-e29b-41d4-a716-446655440000?fields=id,nickname,avatar_url' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
  -H 'Content-Type: application/json'
```

SDK 示例 (JavaScript):
```javascript
const response = await fetch('/api/v1/users/550e8400-e29b-41d4-a716-446655440000', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${token}`,
    'Content-Type': 'application/json'
  }
});

if (response.ok) {
  const { data } = await response.json();
  console.log('用户昵称:', data.nickname);
} else {
  const { error } = await response.json();
  console.error('获取失败:', error.message);
}
```

风险评估与假设

11.1 风险评估矩阵

风险等级评估

概率 ↓ \ 影响 → 影响程度
低 (Low) 中 (Medium) 高 (High)
高 (High) 中等风险
监控
高风险
优先处理
极高风险
立即行动
中 (Medium) 低风险
接受
中等风险
制定计划
高风险
优先处理
低 (Low) 低风险
接受
低风险
接受
中等风险
监控

11.2 风险评估模板

风险登记册结构

字段 说明 示例
ID 风险唯一标识 RISK-TECH-001
风险描述 清晰描述风险事件 短信服务商可能不稳定,导致验证码发送失败
类别 Technical/Business/Operational/Compliance Technical
概率 Low/Medium/High Medium
影响 Low/Medium/High High(影响用户登录)
风险值 概率×影响 High(中×高)
缓解策略 预防措施 接入备用短信服务商,实现自动切换
应急计划 发生后的应对 手动切换到备用服务商,发送故障公告
负责人 Risk Owner 李四(技术负责人)
状态 Open/Mitigated/Closed Open
最后更新 最后评审日期 2026-03-13

📋 风险评估示例

RISK-TECH-001: 短信服务商不稳定

类别: Technical

描述:
当前仅依赖单一短信服务商(阿里云短信),如果该服务商出现故障或限流,
将导致用户无法接收验证码,直接影响登录注册功能,造成用户流失。

概率: Medium(历史上曾发生过 2 次故障,每次约 30 分钟)

影响: High(登录注册是核心功能,故障期间新用户无法注册,老用户无法登录)

风险值: High(中 × 高)

触发条件:
- 短信发送成功率 < 95%
- 平均发送延迟 > 30 秒
- 服务商返回错误率 > 5%

缓解策略:
1. 【短期】接入备用短信服务商(腾讯云短信),实现双通道
2. 【中期】建立智能路由系统,根据成功率自动切换服务商
3. 【长期】建立短信发送监控告警系统,提前发现异常

实施计划:
- Week 1: 完成腾讯云短信账号申请和资质审核
- Week 2: 开发双通道发送逻辑,支持手动切换
- Week 3: 开发智能路由和监控告警系统
- Week 4: 灰度测试,观察效果后全量上线

应急计划:
1. 监控系统检测到故障后,自动切换到备用服务商
2. 发送告警通知给值班工程师(电话 + 短信 + 邮件)
3. 如备用服务商也故障,启动降级方案:
   - 已登录用户不受影响(Token 续期)
   - 新用户引导使用邮箱验证码或第三方登录
   - 官网首页发布公告,告知预计恢复时间
4. 联系主服务商技术支持,跟进故障修复进度

负责人: 李四(后端开发负责人)

状态: Open(缓解策略进行中)

最后更新: 2026-03-13

下次评审: 2026-03-20(每周评审一次,直到关闭)


RISK-BIZ-001: 用户增长不及预期

类别: Business

描述:
产品上线后,如果市场推广效果不佳或产品吸引力不足,可能导致用户增长缓慢,
无法达到预期的 10 万活跃用户目标,影响商业价值和投资回报。

概率: Medium(市场竞争激烈,获客成本上升)

影响: High(直接影响收入和估值)

风险值: High

缓解策略:
1. 制定多元化获客渠道:SEO、SEM、社交媒体、KOL 合作
2. 建立用户推荐机制:老带新奖励、邀请有礼
3. 优化产品体验:降低使用门槛、提升转化率
4. 数据驱动运营:A/B 测试、漏斗分析、用户分群

应急计划:
1. 如果首月新增用户 < 目标的 50%,启动应急预案
2. 加大市场投入,增加广告预算 50%
3. 推出拉新活动:注册送优惠券、首单立减
4. 调整产品策略,聚焦核心功能和目标用户群

负责人: 王五(运营负责人)

状态: Open

11.3 假设条件

常见假设类型

类型 说明 示例
技术假设 技术可行性和性能 假设 Redis 集群可支撑 10 万 QPS
资源假设 人力、预算、时间 假设项目团队保持 10 人满编
市场假设 市场需求和竞争 假设目标市场规模年增长 20%
用户假设 用户行为和偏好 假设 80% 用户使用移动端访问
合规假设 法律法规不变 假设现行政策在一年内无重大变化

📝 假设条件列表示例

  1. 技术假设:
    • 假设云服务商(阿里云)可用性≥99.9%
    • 假设 MySQL 主从复制延迟<1 秒
    • 假设 CDN 节点覆盖全国 95% 地区
    • 假设第三方 API(支付、物流)响应时间<2 秒
  2. 资源假设:
    • 假设项目预算 500 万充足,无追加需求
    • 假设核心团队(产品 2+ 设计 2+ 开发 8+ 测试 3)稳定
    • 假设办公场地和设备按时到位
    • 假设外包团队(UI/安全审计)按时交付
  3. 时间假设:
    • 假设项目按计划 2026-03-01 启动,2026-09-30 上线
    • 假设各阶段评审按时完成,无重大返工
    • 假设法定节假日不影响关键里程碑
    • 假设供应商按时交付(服务器、域名备案等)
  4. 市场假设:
    • 假设目标市场规模保持 20% 年增长率
    • 假设主要竞争对手无颠覆性产品发布
    • 假设获客成本控制在 100 元/用户以内
    • 假设用户付费转化率≥5%

发布计划

12.1 分阶段发布策略

典型发布阶段

阶段 时间 目标 功能范围 发布策略
Phase 0
内部 Alpha
上线前 4 周 功能验证
Bug 修复
核心功能
(20%)
仅限内部员工
(50 人)
Phase 1
封闭 Beta
上线前 2 周 用户体验
性能测试
MVP 功能
(60%)
邀请制用户
(500 人)
Phase 2
公开 Beta
上线日 市场验证
用户增长
完整功能
(100%)
限量开放
(1 万人)
Phase 3
正式发布
上线后 2 周 规模增长
商业化
全部功能
+ 优化
全量开放
(无限制)
Phase 4
持续迭代
上线后每月 功能增强
体验优化
新功能
(按月发布)
灰度发布
(10%→50%→100%)

12.2 发布计划模板

📅 Phase 1 - MVP 发布计划

阶段名称: Phase 1 - MVP(最小可行产品)

目标日期: 2026-06-30

发布时间窗: 2026-06-30 02:00-06:00(凌晨低峰期)

功能范围:
✅ 包含功能:
- 用户注册登录(手机号验证码)
- 个人资料管理
- 商品浏览和搜索
- 购物车功能
- 下单支付(微信支付、支付宝)
- 订单管理和物流追踪
- 基础客服(在线客服 + 工单)

❌ 不包含:
- 优惠券和积分系统
- 个性化推荐
- 社交分享功能
- 移动端 App(仅 H5)

成功指标:
- 注册转化率 ≥ 30%(访问→注册)
- 下单转化率 ≥ 5%(注册→下单)
- 支付成功率 ≥ 95%
- 页面加载时间 < 3 秒
- 系统可用性 ≥ 99.5%
- 用户满意度 ≥ 4.0/5.0
- 首周新增用户 ≥ 5000 人

发布策略:
1. 灰度发布:
   - Day 1: 10% 流量(500 用户)
   - Day 2: 30% 流量(1500 用户)
   - Day 3: 60% 流量(3000 用户)
   - Day 4: 100% 流量(全量)

2. 监控指标:
   - 实时错误率(目标<0.1%)
   - API 响应时间(P95<500ms)
   - 服务器 CPU/内存使用率(<70%)
   - 数据库连接数(<80%)
   - 业务指标(注册数、订单数、支付金额)

3. 值班安排:
   - 发布总指挥:张三(产品负责人)
   - 技术负责人:李四(后端 Lead)
   - 运维值班:王五 + 赵六(轮班)
   - 客服值班:钱七 + 孙八(轮班)
   - 应急响应:全员 on-call

回滚计划:
触发条件:
- 致命 Bug 导致核心功能不可用(登录/支付)
- 错误率 > 5% 且 30 分钟内无法修复
- 系统性能严重下降(响应时间>10 秒)
- 数据错误或丢失

回滚步骤:
1. 发布总指挥决策是否回滚
2. 运维团队执行回滚脚本(10 分钟内完成)
3. 切回到上一个稳定版本(v0.9.5)
4. 验证核心功能恢复正常
5. 发布公告告知用户(官网 + 社交媒体)
6. 问题修复后重新规划发布时间

沟通计划:
- 发布前 1 周: 内部全员邮件通知
- 发布前 1 天: 官网发布公告(维护通知)
- 发布当天: 实时同步进展(内部群)
- 发布成功: 全员庆祝邮件 + 用户感谢公告
- 发布失败: 诚恳道歉公告 + 补偿方案(优惠券)

验收标准:
- [ ] 所有 P0/P1 Bug 已修复
- [ ] 性能测试通过(压测报告)
- [ ] 安全扫描通过(无高危漏洞)
- [ ] 回归测试通过率 100%
- [ ] 运维手册和应急预案已准备
- [ ] 客服培训已完成
- [ ] 监控告警系统已配置
- [ ] 回滚演练已完成

成功指标与 KPI

13.1 指标分类

📈 增长指标

  • 新增用户数(New Users)
  • 活跃用户数(DAU/WAU/MAU)
  • 用户增长率(Growth Rate)
  • 获客成本(CAC)

💰 营收指标

  • 总收入(Revenue)
  • 平均订单金额(AOV)
  • 用户生命周期价值(LTV)
  • 付费转化率(Conversion Rate)

😊 体验指标

  • 净推荐值(NPS)
  • 客户满意度(CSAT)
  • 客户费力指数(CES)
  • 用户留存率(Retention)

⚡ 性能指标

  • 页面加载时间(Page Load Time)
  • API 响应时间(Response Time)
  • 系统可用性(Uptime)
  • 错误率(Error Rate)

13.2 KPI 定义模板

KPI 卡片结构

字段 说明 示例
KPI 名称 简洁明确的名称 日活跃用户数(DAU)
定义 精确定义和计算方法 当日至少完成一次登录的独立用户数
公式 计算公式(如适用) COUNT(DISTINCT user_id WHERE login_count > 0)
数据来源 数据采集系统 用户行为日志系统 → DataWarehouse
基线值 当前水平或起始值 5,000 DAU(Beta 测试期间平均)
目标值 期望达到的目标 50,000 DAU(上线后 3 个月)
测量频率 多久统计一次 每日统计,每周报告,每月复盘
负责人 负责跟踪和改进的人 王五(运营负责人)
警戒线 需要干预的阈值 DAU 连续 7 天下跌>10%

📊 KPI 示例:用户留存率

KPI 名称: 用户留存率(Retention Rate)

定义:
在某一时间段内新增的用户中,在后续特定时间点仍然活跃的用户比例。
反映产品的用户粘性和长期价值。

公式:
留存率 = (第 N 日仍活跃的新增用户数 / 第 1 日新增用户总数) × 100%

常用留存周期:
- 次日留存(Day 1 Retention)
- 7 日留存(Day 7 Retention)
- 30 日留存(Day 30 Retention)

数据来源:
- 用户登录日志表(user_login_logs)
- 用户注册表(user_registration)
- 数据仓库(Hive/ClickHouse)

SQL 示例(7 日留存):
```sql
SELECT 
  DATE(registration_date) AS reg_date,
  COUNT(DISTINCT u.user_id) AS new_users,
  COUNT(DISTINCT CASE WHEN l.login_date BETWEEN DATE_ADD(registration_date, 6) AND DATE_ADD(registration_date, 7) 
                      THEN u.user_id END) AS retained_users,
  ROUND(COUNT(DISTINCT CASE WHEN l.login_date BETWEEN DATE_ADD(registration_date, 6) AND DATE_ADD(registration_date, 7) 
                            THEN u.user_id END) * 100.0 / COUNT(DISTINCT u.user_id), 2) AS retention_rate
FROM user_registration u
LEFT JOIN user_login_logs l ON u.user_id = l.user_id
WHERE u.registration_date >= '2026-01-01'
GROUP BY DATE(registration_date)
ORDER BY reg_date;
```

基线值:
- 次日留存:40%(行业平均 35-45%)
- 7 日留存:20%(行业平均 15-25%)
- 30 日留存:10%(行业平均 8-12%)

目标值(上线后 6 个月):
- 次日留存:≥ 50%
- 7 日留存:≥ 30%
- 30 日留存:≥ 15%

测量频率:
- 每日计算前一日新增用户的留存
- 每周汇总周报(按注册日期分组)
- 每月深度分析( cohort analysis)

可视化:
- 折线图:展示留存率趋势变化
- 热力图:Cohort Analysis 矩阵
- 漏斗图:从注册到各留存节点的转化

负责人: 王五(运营负责人)

警戒线:
- 次日留存 < 35% 连续 3 天 → 触发预警
- 7 日留存 < 15% 连续 7 天 → 启动专项优化

改进措施(如低于目标):
1. 新用户引导流程优化(Onboarding)
2. 推送个性化内容和优惠(Push Notification)
3. 建立用户成长体系(签到、任务、成就)
4. A/B 测试关键页面和功能
5. 用户调研和访谈,找出流失原因

附录

14.1 术语表

常用术语解释

术语/缩写 全称 解释
PRD Product Requirements Document 产品需求文档,定义产品功能和特性的正式文档
US User Story 用户故事,从用户角度描述需求的方法
AC Acceptance Criteria 验收标准,判断需求是否完成的 condition
MVP Minimum Viable Product 最小可行产品,用最少的功能验证商业模式
DAU Daily Active Users 日活跃用户数,一天内登录或使用产品的用户数
API Application Programming Interface 应用程序编程接口,软件系统间交互的约定
JWT JSON Web Token 一种开放的令牌标准,用于安全的身份验证和信息传递
SLA Service Level Agreement 服务等级协议,定义服务提供商和客户之间的服务质量承诺
NPS Net Promoter Score 净推荐值,衡量用户忠诚度和满意度的指标
A/B Test Split Testing 将用户分为两组,分别展示不同版本,比较效果的实验方法

14.2 参考资料

📚 推荐阅读与参考:
  • 书籍
    • 《启示录:打造用户喜爱的产品》- Marty Cagan
    • 《用户故事地图》- Jeff Patton
    • 《精益创业》- Eric Ries
  • 在线资源
    • Atlassian PRD Template: 链接
    • ProductPlan PRD Guide: 链接
    • Nielsen Norman Group UX Research: 链接
  • 工具推荐
    • 文档协作:Notion、Confluence、语雀
    • 原型设计:Figma、Sketch、Adobe XD
    • 流程图:Draw.io、Lucidchart、ProcessOn
    • API 文档:Swagger、Postman、Apifox

14.3 变更日志

文档变更记录

版本 日期 作者 变更类型 变更描述 审批人
1.0.0 2026-03-13 张三 新增 初始版本创建,完成全部 14 章内容 周八
1.1.0 2026-03-15 张三 修改 根据评审意见更新第 5 章功能需求,补充更多示例 周八
1.2.0 2026-03-18 张三 补充 添加第 8-9 章数据模型和 API 协议详细内容 周八
2.0.0 2026-03-20 张三 major PRD 评审通过,版本正式发布 周八