# 智价云(药店版) - 验收流程与标准 > **⚠️ 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 代码质量 - [ ] 所有代码通过编译(`mvn clean compile`) - [ ] 单元测试全部通过(`mvn test`) - [ ] 无编译警告(或已评估确认可忽略) - [ ] 代码审查通过,无严重代码异味 ### 6.2 文档完整性 - [ ] 产品文档 - [ ] 架构文档 - [ ] 接口文档 - [ ] 部署文档 - [ ] 测试文档 - [ ] 验收流程与标准 ### 6.3 功能完整性 - [ ] 用户认证(短信+密码+微信) - [ ] 会员体系(PLUS/PRO/ULTRA + 权益配置) - [ ] 爬虫配额管理(日/月/年三周期 + 额外配额 + 优惠券) - [ ] 药品搜索比价(搜索+建议+消耗配额) - [ ] 平台账号绑定(绑定/解绑/验证/加密存储) - [ ] 搜索历史与关注列表 - [ ] 邀请裂变系统(多渠道 + 会员时长奖励 + 智能解析) - [ ] 支付系统(微信/支付宝 + 套餐管理 + 模拟支付 + 渠道切换 + 重复支付自动退款 + 签约协议 + 安心付) - [ ] 优惠券系统 - [ ] 运营管理后台(用户管理 + 配置管理 + 审核管理) - [ ] 操作审计日志系统 - [ ] 平台会话管理(会话更新/查询/删除) - [ ] 搜索历史(/api/search-record/history 增删查) - [ ] RBAC三级角色权限控制 - [ ] 网关层请求日志与Redis限流 ### 6.4 运维就绪 - [ ] 配置文件模板完整(.env.example) - [ ] 环境变量说明清晰 - [ ] 健康检查接口可用 - [ ] 日志输出规范(含traceId、请求路径、耗时) - [ ] 数据库备份策略 - [ ] Docker Compose 部署配置可用 --- ## 7. 验收签署 | 项目 | 签字 | 日期 | |------|------|------| | 开发负责人 | | | | 测试负责人 | | | | 产品经理 | | | | 运维负责人 | | | | 安全负责人 | | | **验收结论**:☐ 通过 ☐ 有条件通过(附整改清单) ☐ 不通过 **备注**: