# 试点三角色端到端验收清单

> 日期：2026-08-02  
> 角色：boss / staff / customer  
> 状态：脚本与证据模板就绪；真实微信与生产环境待执行

## 1. 执行规则

- 至少准备 A/B 两家隔离测试门店、两个微信账号（老板/员工）和一个独立宠主账号；不得在证据中记录完整手机号、token、openid/unionid、验证码或 AppSecret。
- 先通过备份、八迁移、schema validate、31 项只读预检、liveness/readiness 与只读 smoke，再执行会写业务数据的角色验收。
- 每项保存：执行时间、环境、四仓 commit、角色、结果、脱敏截图/响应业务码、问题单；失败后不直接改生产数据。
- 端到端主样本使用一只测试宠物和一笔可取消测试预约；测试完成后的业务数据按门店测试数据政策保留或由授权人员清理。

## 2. Boss（开店与经营负责人）

| ID | 场景 | 通过条件 | 结果/证据 |
|----|------|----------|-----------|
| B01 | 微信手机号核验入驻 | 创建独立门店与 boss，会话有效；不接受手填手机号/密码 | [ ] |
| B02 | 门店开通清单 | 资料、预约容量、至少一个服务项目满足后可完成；邀请员工可选 | [ ] |
| B03 | 创建员工邀请 | token 只在创建响应显示一次；列表只见脱敏手机号，可撤销 | [ ] |
| B04 | 配置真实号源 | 修改营业容量/服务时长后，公开可约时段同步变化且长服务跨桶 | [ ] |
| B05 | 查看行动工作台 | 今日预约、服务中、报告待发送、到期回访与列表数字一致 | [ ] |
| B06 | 代客预约 | 必须填写真实宠主；创建人与客户身份分离，容量满返回可理解冲突 | [ ] |
| B07 | 回访任务协作 | 可领取、改期、关闭；他人已领取时明确冲突 | [ ] |
| B08 | 回访后再次预约 | 读取真实号源，成功后才出现 rebook；无号源失败不改变任务 | [ ] |
| B09 | 员工移除 | 只能删除本店 staff，删除后旧会话立即失效，AuditLog 低敏 | [ ] |
| B10 | 跨店反例 | A 店 boss 无法读取/修改 B 店预约、报告、客户、任务或设置 | [ ] |

## 3. Staff（值班执行者）

| ID | 场景 | 通过条件 | 结果/证据 |
|----|------|----------|-----------|
| S01 | 接受邀请 | 预览只见脱敏信息；微信核验手机号一致才能接受；过期/撤销/重复拒绝 | [ ] |
| S02 | 登录与权限 | 可进入 Admin/小程序本店工作流；不能删店、改仅老板设置或管理员工 | [ ] |
| S03 | 开始服务 | 仅 `new→doing`；谁点击谁成为技师；重复/非法迁移拒绝 | [ ] |
| S04 | 提交报告 | 前后图必填、一约一报告；成功后预约 `doing→done`，报告锁死 | [ ] |
| S05 | 发送报告 | 复制/二维码/预览不自动记 sent；实际送达后选择渠道显式确认且幂等 | [ ] |
| S06 | 回访领取竞争 | 两名员工同时领取仅一人成功；非领取人不能改期/关闭/再次预约 | [ ] |
| S07 | 联系回执 | 未接通/稍后联系次数加一并回待领取；终态不回退 | [ ] |
| S08 | 联系信息隐私 | 开放任务可见联系电话；终态任务、工作台、时间线只脱敏 | [ ] |
| S09 | 客户事实时间线 | 可见预约→履约→报告→打开→留资→回访→rebook；无备注/媒体/token/原始 metadata | [ ] |
| S10 | 退出/失效 | 本地退出需重新登录；被移除后旧 token 访问受保护接口失败 | [ ] |

## 4. Customer（宠主）

| ID | 场景 | 通过条件 | 结果/证据 |
|----|------|----------|-----------|
| C01 | 扫码/分享选店 | 普通 query 与小程序码 scene 均正确预填门店，可更换 | [ ] |
| C02 | 未登录填单 | 可先填；提交时登录；登录后草稿恢复且身份从 session 派生 | [ ] |
| C03 | 可约时段 | 只显示未来且覆盖完整服务时长的真实号源；容量满有重试提示 | [ ] |
| C04 | 创建/查看预约 | 只能创建和读取自己的预约；伪造 customerUserId 无效 | [ ] |
| C05 | 公开报告 | 匿名 token 可打开必要内容；不返回内部身份、完整 token 或坐标 | [ ] |
| C06 | 报告分享角色 | customer 仍看到留资/预约 CTA；不出现员工内部发送操作 | [ ] |
| C07 | 下次服务留资 | 明示同意后提交；同报告同手机号重复提交幂等且只保留一个开放任务 | [ ] |
| C08 | 一键退订 | 有效 unsubscribeToken 可退订并取消开放任务；重复退订幂等 | [ ] |
| C09 | 退订后反例 | 退订不增加员工联系次数，不显示员工操作人，不再保留开放任务 | [ ] |
| C10 | 权限反例 | customer 调 Admin、员工任务或他人预约/报告接口被拒绝 | [ ] |

## 5. 跨角色完整样本

按顺序一次性执行并关联同一个 appointment/report/lead/task：

```text
Boss 完成开通并邀请 Staff
→ Customer 选择真实号源预约
→ Staff 开始服务并提交唯一报告
→ Staff 实际发送后确认渠道
→ Customer 打开报告并提交下次提醒
→ Staff 领取 FollowUpTask，先登记一次未接通并改期
→ Staff 再次领取，创建真实 Appointment
→ Boss 在客户时间线与报告漏斗确认完整事实链
```

必须同时验证失败分支：容量满、另一员工抢领、跨店 taskId、非领取人关闭、无效退订 token。主链与反例全部通过后，该环境的三角色验收才能标记 PASS。

## 6. 签署

| 责任 | 姓名/日期 | 结论 |
|------|-----------|------|
| 试点门店老板 |  | PASS / BLOCKED |
| Core Flow QA |  | PASS / BLOCKED |
| Data Model Review |  | PASS / BLOCKED |
| Privacy Review |  | PASS / BLOCKED |
| Release Steward |  | GO / NO-GO |
