智价云(药店版) - 验收流程与标准
⚠️ MVP 阶段说明
本项目为全新项目,尚未上线,当前处于 MVP(最小可行产品)阶段。
本文档定义的是 MVP 版本的验收标准,正式上线前需全部通过。
版本:v1.1-MVP | 更新日期:2026-07-01 | 状态:开发中
1. 验收流程
1.1 验收阶段
开发完成 → 代码审查 → 单元测试通过 → 集成测试通过
→ 部署测试环境 → 功能验收 → 性能验收 → 安全验收
→ 签署验收报告 → 上线
1.2 验收角色
| 角色 |
职责 |
| 开发负责人 |
代码审查、单元测试、技术验收 |
| 测试负责人 |
功能测试、回归测试、性能测试 |
| 产品经理 |
功能验收、用户体验确认 |
| 运维负责人 |
部署验收、监控告警确认 |
| 安全负责人 |
安全扫描、漏洞检查 |
2. 功能验收标准
2.1 用户认证模块
| 编号 |
验收项 |
通过标准 |
优先级 |
| FA-01 |
短信验证码发送 |
60s内收到6位验证码,格式正确;1分钟内同IP限1次 |
P0 |
| FA-02 |
短信验证码登录 |
正确验证码登录成功,返回Token |
P0 |
| FA-03 |
新用户自动注册 |
首次登录自动创建用户,分配默认权益 |
P0 |
| FA-04 |
邀请码注册 |
携带邀请码注册,自动建立邀请关系并发放会员奖励 |
P1 |
| FA-05 |
微信扫码登录 |
扫码后获取授权码,登录成功 |
P0 |
| FA-06 |
微信绑定手机号 |
首次微信登录引导绑定手机号 |
P1 |
| FA-07 |
Token刷新 |
Refresh Token有效期内可刷新 |
P1 |
| FA-08 |
验证码过期 |
5分钟后验证码失效 |
P1 |
| FA-09 |
密码登录(手机号) |
手机号+正确密码登录成功,返回Token |
P0 |
| FA-10 |
密码登录(昵称) |
昵称+正确密码登录成功,返回Token |
P1 |
| FA-11 |
设置密码 |
已登录用户设置密码成功 |
P1 |
| FA-12 |
修改密码 |
验证旧密码后修改密码成功 |
P1 |
| FA-13 |
修改手机号 |
验证码验证通过后修改绑定手机号 |
P1 |
| FA-14 |
登录来源追踪 |
记录登录设备、IP、来源(WINDOWS/MINIAPP等) |
P2 |
2.2 会员体系模块
| 编号 |
验收项 |
通过标准 |
优先级 |
| FA-20 |
会员信息查询 |
返回当前会员等级、有效期(membershipExpireAt)、剩余天数(membershipDaysRemaining) |
P0 |
| FA-21 |
会员权益查询 |
返回指定等级的每日/每月/每年配额和并发数 |
P0 |
| FA-22 |
注册即得PLUS |
SMS/微信注册自动获得PLUS普通会员,无过期时间 |
P0 |
| FA-23 |
付费购买PRO |
支付成功后立即激活PRO,t_user与t_user_membership实时同步 |
P0 |
| FA-24 |
邀请奖励PRO |
成功邀请新用户注册→邀请人自动获得30天PRO会员(等级匹配规则) |
P0 |
| FA-25 |
营业执照审核送PRO |
首次审核通过赠送30天PRO |
P1 |
| FA-26 |
同等级续期 |
PRO续期PRO→在现有到期时间上叠加30天 |
P1 |
| FA-27 |
升级不降级 |
ULTRA用户获邀请奖励→续期ULTRA 30天,不降为PRO |
P1 |
| FA-28 |
到期自动降级 |
PRO到期后→自动降为PLUS,t_user同步清除membershipExpireAt |
P0 |
| FA-29 |
会员记录查询 |
分页查询会员记录,支持按用户/等级/来源筛选 |
P1 |
| FA-30 |
会员权益配置 |
数据库中3个等级的权益配置正确(PLUS=10次/天, PRO=999次/天) |
P0 |
| FA-31 |
全局过期时间同步 |
t_user.membershipExpireAt与t_user_membership.effectiveTo实时一致 |
P0 |
| FA-32 |
支付方案 |
仅开放MONTHLY_PRO和YEARLY_PRO,PLUS免费无付费套餐 |
P0 |
2.3 爬虫配额模块
| 编号 |
验收项 |
通过标准 |
优先级 |
| FA-30 |
配额状态查询 |
返回日/月/年配额、额外配额明细 |
P0 |
| FA-31 |
会员权益配额消耗 |
消耗次数正确扣减 |
P0 |
| FA-32 |
额外配额消耗 |
快过期优先消耗 |
P0 |
| FA-33 |
优惠券消耗 |
useCouponFirst=true时优先使用优惠券 |
P1 |
| FA-34 |
日配额上限 |
超出日配额返回拒绝 |
P0 |
| FA-35 |
月配额上限 |
超出月配额返回拒绝 |
P0 |
| FA-36 |
年配额上限 |
超出年配额返回拒绝 |
P1 |
| FA-37 |
配额明细展示 |
extraQuotaBreakdown显示各来源明细 |
P1 |
| FA-38 |
过期配额清理 |
定时任务每小时标记过期记录 |
P2 |
| FA-39 |
爬虫使用日志 |
记录含平台信息、消耗来源 |
P1 |
2.4 药品搜索比价模块
| 编号 |
验收项 |
通过标准 |
优先级 |
| FA-40 |
药品搜索比价 |
输入药品名返回各平台报价,消耗1次配额 |
P0 |
| FA-41 |
搜索建议 |
返回热门药品列表(公开,无需登录) |
P1 |
| FA-42 |
搜索结果排序 |
按价格从低到高排序展示 |
P0 |
| FA-43 |
平台筛选 |
支持多选平台查询 |
P1 |
2.5 平台账号绑定模块
| 编号 |
验收项 |
通过标准 |
优先级 |
| FA-45 |
绑定平台账号 |
绑定成功,密码AES-256加密存储 |
P0 |
| FA-46 |
解绑平台账号 |
解绑成功,记录删除 |
P0 |
| FA-47 |
查询已绑账号 |
返回已绑定平台列表(不返回密码) |
P0 |
| FA-48 |
验证平台账号 |
验证账号有效性,记录验证状态 |
P1 |
| FA-49 |
平台配置查询 |
返回启用平台列表(公开) |
P1 |
2.6 搜索历史与关注列表模块
| 编号 |
验收项 |
通过标准 |
优先级 |
| FA-50 |
搜索历史记录 |
每次搜索自动记录历史 |
P1 |
| FA-52 |
删除搜索记录 |
删除指定记录/清空全部 |
P1 |
| FA-53 |
添加关注 |
关注药品成功,记录价格信息 |
P1 |
| FA-54 |
关注列表查询 |
返回关注列表含价格变动信息 |
P1 |
| FA-55 |
取消关注 |
取消关注成功 |
P1 |
| FA-56 |
关注统计 |
返回关注总数等统计信息 |
P2 |
2.7 邀请系统模块
| 编号 |
验收项 |
通过标准 |
优先级 |
| FA-60 |
获取邀请码 |
自动生成唯一邀请码和链接 |
P0 |
| FA-61 |
邀请统计 |
显示邀请人数、注册人数、累计奖励、摘要文本 |
P0 |
| FA-62 |
邀请记录 |
每条记录含被邀请人昵称、注册状态、奖励次数 |
P0 |
| FA-63 |
落地页(公开) |
展示邀请人信息、下载链接、应用名称 |
P0 |
| FA-64 |
点击追踪 |
每次打开链接click_count+1 |
P1 |
| FA-65 |
多渠道落地页 |
channel=windows/wechat/miniapp/dingtalk/feishu 正确返回 |
P1 |
| FA-66 |
邀请人奖励 |
被邀请人注册后,邀请人获赠1个月高级会员(PRO),立即到账 |
P0 |
| FA-67 |
被邀请人奖励 |
被邀请人注册即得普通会员(PLUS),永久免费 |
P0 |
| FA-68 |
邀请码解析 |
支持链接/邀请码双模式智能解析 |
P1 |
| FA-69 |
邀请奖励上限 |
单个邀请人累计奖励上限30人,超限可继续邀请但不再发放奖励 |
P1 |
| FA-70 |
补填邀请码 |
注册30天内可补填,邀请人同样获得1个月PRO奖励 |
P1 |
| FA-71 |
邀请爬虫配额 |
邀请页crawlerTodayRemaining与爬虫状态页todayRemaining一致 |
P2 |
| FA-72 |
额外配额明细 |
邀请页crawlerQuotaFromInvites正确反映邀请贡献的配额 |
P2 |
| FA-69 |
URL Scheme自动填入 |
zhijiayun://invite?code=XXX 正确生成 |
P1 |
| FA-70 |
落地页占位符 |
{inviter}和{pharmacy}动态替换正确 |
P2 |
2.8 支付系统模块
| 编号 |
验收项 |
通过标准 |
优先级 |
| FA-75 |
支付方案列表 |
返回上架的会员套餐列表(公开) |
P0 |
| FA-76 |
创建支付订单 |
选择套餐+渠道创建订单,生成二维码 |
P0 |
| FA-77 |
查询订单 |
按订单号查询订单状态 |
P0 |
| FA-78 |
我的订单 |
返回用户所有订单列表 |
P1 |
| FA-79 |
模拟支付 |
开发环境模拟支付成功,订单状态更新 |
P1 |
| FA-80 |
微信回调 |
接收微信支付回调,验签通过后更新订单 |
P0 |
| FA-81 |
支付宝回调 |
接收支付宝回调,验签通过后更新订单 |
P0 |
| FA-82 |
支付成功发放会员 |
支付成功后自动发放对应会员等级 |
P0 |
| FA-83 |
订单过期 |
超过15分钟未支付订单自动过期 |
P1 |
| FA-84 |
创建支付方案(运营) |
运营创建套餐方案成功 |
P1 |
| FA-85 |
上下架方案(运营) |
运营上架/下架方案成功 |
P1 |
| FA-86 |
渠道切换 |
PENDING订单可切换支付渠道,重新生成二维码 |
P1 |
| FA-87 |
重复支付记录 |
订单已PAID时第二笔回调记录到 t_payment_order_extra_payment |
P0 |
| FA-88 |
重复支付幂等 |
同一tradeNo不重复记录,不重复退款 |
P0 |
| FA-89 |
自动退款-微信 |
重复支付自动调用微信退款API,refund_status=SUCCESS |
P0 |
| FA-90 |
自动退款-支付宝 |
重复支付自动调用支付宝退款API,refund_status=SUCCESS |
P0 |
| FA-91 |
退款失败处理 |
退款失败时 refund_status=FAILED,记录 refund_fail_reason |
P1 |
| FA-92 |
模拟模式退款 |
mock模式下重复支付模拟退款成功,不调用真实SDK |
P1 |
| FA-93 |
签约协议-发起签约 |
用户可发起微信/支付宝签约协议 |
P1 |
| FA-94 |
签约协议-查询列表 |
返回用户签约列表,含协议状态 |
P1 |
| FA-95 |
签约协议-解约 |
用户可解约,协议状态更新为UNSIGNED |
P1 |
| FA-96 |
安心付-卡模板创建 |
运营可创建安心付卡模板 |
P2 |
| FA-97 |
安心付-扣款通知 |
接收支付宝安心付扣款通知,正确匹配用户 |
P1 |
| FA-98 |
平台会话管理 |
用户可更新/查询/删除平台会话 |
P2 |
| FA-99 |
搜索历史记录 |
搜索记录保存到 /api/search-record/history |
P2 |
2.9 运营管理模块
| 编号 |
验收项 |
通过标准 |
优先级 |
| FA-90 |
邀请配置读取 |
返回当前激活配置 |
P0 |
| FA-91 |
邀请配置更新 |
更新奖励月数、下载链接、落地页配置 |
P0 |
| FA-92 |
手动发放爬虫次数 |
指定用户发放成功,配额立即生效 |
P0 |
| FA-93 |
发放记录查询 |
按用户/类型筛选,返回完整记录 |
P1 |
| FA-94 |
用户列表查询 |
分页查询用户,支持按手机号/角色筛选 |
P0 |
| FA-95 |
用户角色修改 |
SUPER_ADMIN修改用户角色成功 |
P0 |
| FA-96 |
体验配额配置 |
创建/更新体验配额配置成功 |
P1 |
| FA-97 |
营业执照审核 |
运营审核通过/驳回成功 |
P1 |
2.10 优惠券模块
| 编号 |
验收项 |
通过标准 |
优先级 |
| FA-100 |
优惠券发放 |
批量发放给指定用户,设置有效期 |
P1 |
| FA-101 |
我的优惠券 |
按状态筛选(未使用/已使用/已过期) |
P1 |
| FA-102 |
可用优惠券 |
返回未过期且未使用的优惠券 |
P1 |
2.11 操作审计日志模块
| 编号 |
验收项 |
通过标准 |
优先级 |
| FA-105 |
审计日志记录 |
关键操作自动记录审计日志 |
P0 |
| FA-106 |
审计日志查询 |
按模块/操作类型/时间范围筛选查询 |
P1 |
| FA-107 |
敏感操作标记 |
禁用用户、审核操作等标记为敏感 |
P1 |
| FA-108 |
操作前后数据快照 |
记录操作前后的数据变化 |
P2 |
2.12 RBAC权限控制模块
| 编号 |
验收项 |
通过标准 |
优先级 |
| FA-110 |
USER访问用户接口 |
普通用户可访问用户侧接口 |
P0 |
| FA-111 |
USER访问管理接口 |
普通用户访问管理接口返回403 |
P0 |
| FA-112 |
ADMIN访问管理接口 |
运营可访问运营后台接口 |
P0 |
| FA-113 |
ADMIN访问超管接口 |
运营访问超管接口返回403 |
P0 |
| FA-114 |
SUPER_ADMIN全权限 |
超管可访问所有接口 |
P0 |
| FA-115 |
未认证访问保护接口 |
未认证访问保护接口返回401 |
P0 |
3. 性能验收标准
| 编号 |
指标 |
标准 |
测试方法 |
| PA-01 |
接口响应时间(P95) |
< 500ms |
压测工具 |
| PA-02 |
接口响应时间(P99) |
< 1000ms |
压测工具 |
| PA-03 |
登录接口 QPS |
> 100 |
并发压测 |
| PA-04 |
爬虫状态接口 QPS |
> 200 |
并发压测 |
| PA-05 |
搜索比价接口响应 |
< 3s(P95) |
压测工具 |
| PA-06 |
数据库连接池 |
正常负载不超过 maximum-pool-size 80% |
监控 |
| PA-07 |
Redis 连接池 |
正常负载不超过 max-active 80% |
监控 |
| PA-08 |
慢请求比例 |
< 1%(超过1000ms) |
日志分析 |
| PA-09 |
限流响应 |
超出阈值返回429 + 限流响应头 |
压测验证 |
4. 安全验收标准
| 编号 |
验收项 |
通过标准 |
检查方法 |
| SA-01 |
JWT认证 |
未认证接口返回401 |
接口测试 |
| SA-02 |
RBAC权限控制 |
不同角色访问越权接口返回403 |
接口测试 |
| SA-03 |
白名单配置 |
仅公开接口可无Token访问 |
安全扫描 |
| SA-04 |
限流策略 |
超出阈值返回429 |
压测验证 |
| SA-05 |
SQL注入 |
无SQL注入漏洞 |
安全扫描工具 |
| SA-06 |
参数校验 |
非法参数返回400 |
接口测试 |
| SA-07 |
密码加密 |
用户密码BCrypt加密存储,平台密码AES-256加密 |
代码审查 |
| SA-08 |
AK/SK安全 |
阿里云AK/SK、微信/支付宝密钥通过环境变量注入 |
代码审查 |
| SA-09 |
CVE漏洞 |
无高危CVE漏洞(BouncyCastle已升级至1.84) |
依赖扫描 |
| SA-10 |
HTTPS |
生产环境启用HTTPS |
配置检查 |
| SA-11 |
短信限流 |
IP维度1分钟1次限制有效 |
接口测试 |
| SA-12 |
支付回调验签 |
生产环境微信/支付宝回调验签通过 |
代码审查 |
| SA-13 |
重复支付退款安全 |
退款仅触发一次(幂等),退款失败不影响主流程 |
代码审查 |
| SA-14 |
CORS配置 |
跨域配置正确,不暴露敏感头 |
配置检查 |
5. 部署验收标准
| 编号 |
验收项 |
通过标准 |
| DA-01 |
应用启动 |
启动无报错,健康检查返回UP |
| DA-02 |
数据库连接 |
正常读写,建表脚本执行成功 |
| DA-03 |
Redis连接 |
缓存、限流正常工作 |
| DA-04 |
日志输出 |
日志格式正确,包含请求路径、耗时、traceId |
| DA-05 |
环境变量 |
AK/SK、支付密钥通过环境变量注入 |
| DA-06 |
初始数据 |
3个平台配置、会员权益配置、体验配额配置、邀请配置、支付方案已初始化 |
| DA-07 |
SQL初始化 |
schema.sql 幂等执行(CREATE IF NOT EXISTS + ON DUPLICATE KEY UPDATE) |
| DA-08 |
短信测试模式 |
开发环境短信测试模式启用(固定验证码123456) |
| DA-09 |
支付模拟模式 |
开发环境支付模拟模式启用(mock=true) |
6. 验收检查清单
6.1 代码质量
6.2 文档完整性
6.3 功能完整性
6.4 运维就绪
7. 验收签署
| 项目 |
签字 |
日期 |
| 开发负责人 |
|
|
| 测试负责人 |
|
|
| 产品经理 |
|
|
| 运维负责人 |
|
|
| 安全负责人 |
|
|
验收结论:☐ 通过 ☐ 有条件通过(附整改清单) ☐ 不通过
备注: