售后服务
我们是专业的

Day 52晚上-2:PRD文档撰写基础(下)- 功能详细设计与异常处理

一个“如果”引发的35万损失

2024年初,某新能源品牌上线了「配件库存预警系统」。

PRD中写道:

「当配件库存低于安全库存时,系统自动发送预警。」

但PRD没有写的是:

  • 如果系统故障了怎么办?
  • 如果数据异常(库存-100个)怎么办?
  • 如果同时有50个配件需要预警,怎么发?
  • 如果预警发出去了但没人处理怎么办?

3个月后,问题全部爆发

  1. 系统故障:某天系统升级,2小时不可用,期间有12个关键配件耗尽,但没有人知道
  2. 数据异常:某个配件由于数据错误显示-50个,系统不停发预警,一晚上发了5000条短信,被当成垃圾信息屏蔽
  3. 消息飓斗:系统同时检测到85个配件需要预警,在短时间内发送了350条短信,导致重要预警被淆没

最终损失:

  • 23个关键配件断货,影响380台车维修
  • 客户等待时间平均延長2.5天
  • NPS下降6分
  • 直接经济损失:35万元

这个案例血淋淋地告诉我们:

PRD中最容易被忽略的不是“正常流程”,而是“异常处理”。魔鬼藏在细节里,而细节藏在那些你没想到的“如果”里。


功能详细设计:魔鬼就在细节里

写法一:用户故事法

不要写枚燥的功能列表,而要用**用户故事(User Story)**的方式描述。

标准格式

作为 [角色],我希望 [功能],以便 [价值]

示例:智能预约系统

错误写法

「系统应具备预约查询功能。」

正确写法

用户故事1:客户查看空位
作为 车主王先生,
我希望 在选择预约时间时,能看到每个时间段的剩余空位数,
以便 我可以选择等待时间最短的时段,避免白跑一趟。

验收标准
✅ 显示未来7天的可预约时段
✅ 每个时段显示剩余空位数(如“还剩2个空位”)
✅ 如果无空位,显示“已约满”并灰化
✅ 空位数据实时更新(延迟不超过30秒)


写法二:交互流程图

流程图明确展示用户操作的每一步。

示例:客户预约流程

开始
 ↓
[打开App/小程序]
 ↓
[点击“预约服务”]
 ↓
[系统自动定位] → 显示最近3家门店
 ↓
[选择门店]
 ↓
[选择服务日期] → 默认显示未来7天
 ↓
[选择服务时间] → 显示每小时的空位数
 ↓
[选择服务项目] → 系统根据车型+里程智能推荐
 ↓                  ↓
 接受推荐     自定义选择
 ↓                  ↓
      ↓←─────────┐
      ↓
[填写联系信息] → 自动带出历史信息
 ↓
[确认预约]
 ↓
[系统检查空位] → 如果已满,提示重新选择
 ↓
[预约成功]
 ↓
[发送确认短信] + [送App推送]
 ↓
结束

💡 为什么重要?

  • 流程图让开发看到完整的操作路径
  • 避免漏掉关键步骤

写法三:界面原型图

**原型图(Wireframe)**胜过千言万语。

你不需要高保真设计图,但需要结构清晰的线框图

示例:预约页面原型

┌─────────────────────────────┐
│  ←  预约服务              ☰  │  顶部导航栏
├─────────────────────────────┤
│                              │
│  选择门店                   │
│  ┌──────────────────────┐  │
│  │ 📍 三里屯服务中心     │  │
│  │    距您2.3km  ★★★★★ │  │
│  └──────────────────────┘  │
│  ┌──────────────────────┐  │
│  │ 📍 朝阳门店           │  │
│  │    距您5.1km  ★★★★☆ │  │
│  └──────────────────────┘  │
│                              │
│  选择服务时间               │
│  ┌──────────────────────┐  │
│  │ 12月28日 周六  📅    │  │
│  └──────────────────────┘  │
│                              │
│  时间段选择:                │
│  ┌─────────┐ ┌─────────┐  │
│  │ 09:00   │ │ 10:00   │  │
│  │ 还剩2位 │ │ 已约满  │  │ 可选/不可选状态
│  └─────────┘ └─────────┘  │
│                              │
│  选择服务项目               │
│  ┌──────────────────────┐  │
│  │ ☑ 常规保养 (推荐)    │  │
│  │ ☐ 空调清洗            │  │
│  │ ☐ 轮胎检测            │  │
│  └──────────────────────┘  │
│                              │
│  ┌──────────────────────┐  │
│  │   [确认预约]        │  │ 主按钮
│  └──────────────────────┘  │
└─────────────────────────────┘

关键标注说明

  1. 每个元素的位置、大小、状态
  2. 交互规则(如“点击后变成选中状态”)
  3. 数据来源(如“空位数从后台实时获取”)

异常处理:决定系统健壮性的关键

异常处理的四大类型

类型1:用户输入异常

异常场景 处理方式 用户反馈
手机号格式错误 实时校验,红色提示 “请输入11位手机号码”
选择已约满的时段 预约按钮灰化不可点 显示“已约满,请选择其他时段”
未选择服务项目 阻止提交,项目框高亮 “请至少选择一项服务”
网络超时 显示加载动画,3秒后提示 “网络不佳,请稍后重试”

类型2:系统内部异常

异常场景 处理方式 后续动作
数据库连接失败 自动重试3次,间隔1s 失败后转备用数据源
第三方接口超时 超时5s自动放弃 记录日志,告警运维
并发预约冲突 乐观锁机制,先到先得 后到者提示“刚被预约”
数据异常(负数、空值) 过滤异常数据,记录日志 发送数据质量报告

类型3:外部环境异常

异常场景 处理方式 降级策略
GPS定位失败 手动选择城市/区域 根据历史定位推荐
短信发送失败 App推送作为备选 用户可在App查询预约
系统维护升级 显示维护公告 提供电话预约入口

类型4:业务规则异常

异常场景 处理方式 理由
客户黑名单 禁止预约,显示“请联系客服” 恶意爽约、欠款等
连续爽约3次 冻结7天预约权限 避免资源浪费
同一客户重复预约 提示“您已有预约” 防止误操作
提前不足2小时取消 禁止取消,显示原因 保障门店排班稳定

非功能性需求(NFR):决定系统生死的隐形要素

什么是NFR?

NFR (Non-Functional Requirements) = 非功能性需求

功能性需求回答「系统能做什么」,NFR回答「系统做得好不好」。

NFR的7大维度

1. 性能需求(Performance)

指标 目标值 测量场景
响应时间 ≤ 2秒(页面加载) 4G网络环境
接口响应 ≤ 500ms(API调用) 99%请求
并发处理 ≥ 500人/分钟 高峰期压测
数据查询 ≤ 1秒(单表查询) 千万级数据量

2. 可用性需求(Availability)

指标 目标值 说明
系统可用性 ≥ 99.9% 年度停机不超过8.76小时
故障恢复时间 ≤ 30分钟(RTO) 从故障到恢复服务
数据丢失 = 0(RPO) 关键数据不可丢失

📝 注释

  • RTO (Recovery Time Objective) = 恢复时间目标
  • RPO (Recovery Point Objective) = 恢复点目标

3. 安全性需求(Security)

项目 要求 实现方式
身份认证 手机验证码 + 密码 短信验证码有5分钟
数据加密 HTTPS + AES256 敏感数据加密存储
防刷机制 同一IP 10次/分限制 超限封禁IP 1小时
隐私保护 符合GDPR规范 用户可删除个人数据

4. 易用性需求(Usability)

项目 要求
新手引导 首次使用必须有引导流程
操作步骤 完成预约不超过5步
错误提示 明确、友好,提供解决方案
无障碍支持 支持语音读屏,字体可调节

5. 兼容性需求(Compatibility)

项目 要求
操作系统 iOS 12+、Android 8+
浏览器 Chrome 80+、Safari 13+、微信浏览器
屏幕适配 375px - 428px(手机)
网络环境 4G/5G/WiFi,兼容3G弱网

6. 可维护性需求(Maintainability)

项目 要求
日志记录 关键操作必须记录日志
监控告警 异常率 > 5% 自动告警
版本管理 支持灰度发布、快速回滚
文档完善 接口文档、部署文档、故障手册

7. 扩展性需求(Scalability)

项目 要求
用户增长 支持10万并发用户(未来3年)
数据增长 支持1亿级预约记录
水平扩展 支持负载均衡、动态扩容

PRD的最后一步:验收标准

验收标准的三大原则

原则1:可测试(Testable)

错误写法

「系统界面应该简洁美观。」(无法测试)

正确写法

验收标准

  1. 页面加载时间 ≤ 2秒(95%请求)
  2. 按钮距离符合iOS/Android规范(≥44dp)
  3. 颜色使用品牌VI规范(主色#1890FF)
  4. 通过10人可用性测试(满意度 ≥ 4/5)

原则2:全面(Complete)

需要覆盖:

  • ✅ 功能测试(正常流程)
  • ✅ 异常测试(所有异常场景)
  • ✅ 性能测试(压力测试)
  • ✅ 兼容性测试(多端、多浏览器)
  • ✅ 安全性测试(渗透测试)

原则3:可追溯(Traceable)

每个验收标准都应该能溯源到具体的需求

需求ID 需求描述 验收标准
REQ-001 客户可查看实时空位 TEST-001:空位数据延迟 ≤ 30秒
REQ-002 系统智能推荐服务项目 TEST-002:推荐准确率 ≥ 85%
REQ-003 预约成功后发送确认 TEST-003:短信发送成功率 ≥ 99%

写给你的行动指南

✅ 今晚的作业

拿出你昨天写的简版PRD,补充以下内容:

  • 至少写出5种异常场景及处理方式
  • 补充性能、可用性、安全性三大NFR
  • 为每个核心功能写出可测试的验收标准

✅ 进阶挑战

  • 用“如果…会怎样?”的思路,找出10个可能的问题场景
  • 给每个场景设计具体的处理方案

明天,我们将进入Day 53的综合实战演练,把今天学的所有知识连贯起来,完成一个完整的需求管理全流程。

未经允许不得转载:似水流年 » Day 52晚上-2:PRD文档撰写基础(下)- 功能详细设计与异常处理