Просмотр исходного кода

test(cases): 补齐 50 个应用场景及对应三类用例,覆盖此前缺失功能

- 应用场景总览 151 -> 201:新增报告代传/家庭天盘/精准营养/舌诊情绪/账号注销/
  数据导出/解绑/优惠券/活动并发名额/消息推送/会员退款/多端会话等真实功能场景
- 每个新场景按 正常流+异常流(-E)+权限流(-P) 派生用例,tests/test-cases 三类合计 456 -> 606
- 7 角色文件表格完整性校验 0 破损,SC <-> TC 1:1 对齐脚本校验通过
- 同步更新 应用场景总览.md(矩阵/派生注记/优先级/追溯表)、user-scenarios/README.md、
  test-cases/README.md 计数
E2E Test Bot 1 неделя назад
Родитель
Сommit
1813ae2bcb

+ 8 - 8
tests/test-cases/README.md

@@ -36,14 +36,14 @@
 ## 文件索引
 
 > **三类用例结构**:每个角色文件在原有「正常流」用例之后,均追加了 `## 异常流用例(派生自正常流)` 与 `## 权限流用例(派生自正常流)` 两段。异常流编号后缀 `-E`、权限流后缀 `-P`,分别从每条正常流用例派生,实现「正常流 + 异常流 + 权限流」三类闭环。
-> 当前三类合计:**正常流 152 + 异常流 152 + 权限流 152 = 456 条**(截至 2026-10-31)。
+> 当前三类合计:**正常流 202 + 异常流 202 + 权限流 202 = 606 条**(截至 2026-10-31;本轮新增 SC-G-11~12 / SC-P-67~86 / SC-C-19~23 / SC-T-23~29 / SC-A-16~22 / SC-S-09~11 / SC-X-13~18 派生)。
 
 | 文件 | 覆盖角色 | 正常流范围 | 异常流 / 权限流 |
 |------|----------|------------|------------------|
-| `guest.md` | 游客 | TC-G-01~10 | TC-G-0xE / TC-G-0xP(各 10 条) |
-| `parent.md` | 家长 | TC-P-01~66 | TC-P-NN-E / TC-P-NN-P(各 66 条) |
-| `child.md` | 孩子 | TC-C-01~18 | TC-C-NN-E / TC-C-NN-P(各 18 条) |
-| `teacher.md` | 规划师 | TC-T-01~22 | TC-T-NN-E / TC-T-NN-P(各 22 条) |
-| `admin.md` | 运营 | TC-A-01~16 | TC-A-NN-E / TC-A-NN-P(各 16 条) |
-| `vendor.md` | 服务商 | TC-S-01~08 | TC-S-NN-E / TC-S-NN-P(各 8 条) |
-| `cross-role-e2e.md` | 跨角色 | TC-X-01~12 | TC-X-NN-E / TC-X-NN-P(各 12 条,9 列格式) |
+| `guest.md` | 游客 | TC-G-01~12 | TC-G-NN-E / TC-G-NN-P(各 12 条) |
+| `parent.md` | 家长 | TC-P-01~86 | TC-P-NN-E / TC-P-NN-P(各 86 条) |
+| `child.md` | 孩子 | TC-C-01~23 | TC-C-NN-E / TC-C-NN-P(各 23 条) |
+| `teacher.md` | 规划师 | TC-T-01~29 | TC-T-NN-E / TC-T-NN-P(各 29 条) |
+| `admin.md` | 运营 | TC-A-01~23 | TC-A-NN-E / TC-A-NN-P(各 23 条) |
+| `vendor.md` | 服务商 | TC-S-01~11 | TC-S-NN-E / TC-S-NN-P(各 11 条) |
+| `cross-role-e2e.md` | 跨角色 | TC-X-01~18 | TC-X-NN-E / TC-X-NN-P(各 18 条,9 列格式) |

+ 35 - 0
tests/test-cases/admin.md

@@ -28,6 +28,18 @@
 
 ---
 
+
+### 本轮扩展场景用例(新增 SC-A)
+| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
+|---|---|---|---|---|---|---|---|---|---|---|
+| TC-A-17 | A-16 | /api/admin/report-parser/* | 运营 | P1 | 功能 | 已登录(默认 运营);相关前置数据就绪 | 1. 按场景流程执行:看未知类型 → 标类别 → 生效 2. 观察结果 | 达成目标:标注未知聚类;边界:新类先注册再解析 | /api/admin/report-parser/* | — |
+| TC-A-18 | A-17 | 优惠券/活动管理 | 运营 | P1 | 功能 | 已登录(默认 运营);相关前置数据就绪 | 1. 按场景流程执行:建券/活动 → 设规则/名额 → 上线 2. 观察结果 | 达成目标:后台配券建活动;边界:时间冲突校验;名额超卖配置保护 | 优惠券/活动管理 | — |
+| TC-A-19 | A-18 | 内容安全 | 运营 | P1 | 功能 | 已登录(默认 运营);相关前置数据就绪 | 1. 按场景流程执行:队列 → 通过/下架 2. 观察结果 | 达成目标:审 UGC/AI;边界:敏感词命中拦截 | 内容安全 | — |
+| TC-A-20 | A-19 | GDPR 工单 | 运营 | P1 | 功能 | 已登录(默认 运营);相关前置数据就绪 | 1. 按场景流程执行:接工单 → 执行归档/导出 2. 观察结果 | 达成目标:处理用户注销/导出;边界:审计留痕;冷静期 | GDPR 工单 | — |
+| TC-A-21 | A-20 | 网关/限流 | 运营 | P1 | 功能 | 已登录(默认 运营);相关前置数据就绪 | 1. 按场景流程执行:配限流规则 → 生效 2. 观察结果 | 达成目标:接口防护;边界:误杀白名单 | 网关/限流 | — |
+| TC-A-22 | A-21 | 模型管理 | 运营 | P1 | 功能 | 已登录(默认 运营);相关前置数据就绪 | 1. 按场景流程执行:版控/上下线 2. 观察结果 | 达成目标:模型版本/开关;边界:下线前回退方案 | 模型管理 | — |
+| TC-A-23 | A-22 | 知识库 | 运营 | P1 | 功能 | 已登录(默认 运营);相关前置数据就绪 | 1. 按场景流程执行:CRUD → 同步 2. 观察结果 | 达成目标:维护营养知识;边界:同步失败重试 | 知识库 | — |
+
 ## 异常流用例(派生自正常流)
 
 | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
@@ -49,6 +61,18 @@
 | TC-A-15-E | A-6 | 数据迁移 | 运营 | P3 | 异常 | sfms 源就绪 | 1. 输入非法参数/网络中断/请求超时 2. 观察降级 | 系统给出明确错误提示而非 500;关键操作可重试或回滚;不泄露内部堆栈 | 多数据源/SfmsDataSourceConfig | — |
 | TC-A-16-E | A-7 | 参数校验 | 运营 | P2 | 异常 | 各管理接口可用 | 1. 输入非法参数/网络中断/请求超时 2. 观察降级 | 系统给出明确错误提示而非 500;关键操作可重试或回滚;不泄露内部堆栈 | 统一 `Result<T>`+全局异常;黑盒回归 | — |
 
+
+### 本轮扩展异常流(派生自新增场景)
+| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
+|---|---|---|---|---|---|---|---|---|---|---|
+| TC-A-17-E | A-16 | /api/admin/report-parser/* | 运营 | P2 | 异常 | 已登录(默认 运营);相关前置数据就绪 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | /api/admin/report-parser/* | — |
+| TC-A-18-E | A-17 | 优惠券/活动管理 | 运营 | P2 | 异常 | 已登录(默认 运营);相关前置数据就绪 | 1. 制造支付失败/并发抢购/重复提交/库存或名额不足 2. 观察处理 | 支付失败回滚不生成额度/订单;并发超卖拦截;重复提交幂等;库存/名额边界正确 | 优惠券/活动管理 | — |
+| TC-A-19-E | A-18 | 内容安全 | 运营 | P2 | 异常 | 已登录(默认 运营);相关前置数据就绪 | 1. 输入非法参数/网络中断/请求超时 2. 观察处理 | 系统给出明确错误提示而非 500;关键操作可重试或回滚;不泄露内部堆栈 | 内容安全 | — |
+| TC-A-20-E | A-19 | GDPR 工单 | 运营 | P2 | 异常 | 已登录(默认 运营);相关前置数据就绪 | 1. 制造并发/重复/异常设备/越权对象操作 2. 观察处理 | 并发安全;重复操作幂等;异常设备二次验证;数据归档/导出脱敏合规 | GDPR 工单 | — |
+| TC-A-21-E | A-20 | 网关/限流 | 运营 | P2 | 异常 | 已登录(默认 运营);相关前置数据就绪 | 1. 输入非法参数/网络中断/请求超时 2. 观察处理 | 系统给出明确错误提示而非 500;关键操作可重试或回滚;不泄露内部堆栈 | 网关/限流 | — |
+| TC-A-22-E | A-21 | 模型管理 | 运营 | P2 | 异常 | 已登录(默认 运营);相关前置数据就绪 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 模型管理 | — |
+| TC-A-23-E | A-22 | 知识库 | 运营 | P2 | 异常 | 已登录(默认 运营);相关前置数据就绪 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 知识库 | — |
+
 ## 权限流用例(派生自正常流)
 
 | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
@@ -69,3 +93,14 @@
 | TC-A-14-P | A-6 | 知识库 | 运营 | P1 | 权限 | 知识条目存在(如 id=1) | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察 | 非 admin 角色访问管理端接口统一 401/403,不泄露后台数据 | 知识库管理;黑盒回归 | — |
 | TC-A-15-P | A-6 | 数据迁移 | 运营 | P2 | 权限 | sfms 源就绪 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察 | 非 admin 角色访问管理端接口统一 401/403,不泄露后台数据 | 多数据源/SfmsDataSourceConfig | — |
 | TC-A-16-P | A-7 | 参数校验 | 运营 | P1 | 权限 | 各管理接口可用 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察 | 非 admin 角色访问管理端接口统一 401/403,不泄露后台数据 | 统一 `Result<T>`+全局异常;黑盒回归 | — |
+
+### 本轮扩展权限流(派生自新增场景)
+| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
+|---|---|---|---|---|---|---|---|---|---|---|
+| TC-A-17-P | A-16 | /api/admin/report-parser/* | 运营 | P1 | 权限 | 已登录(默认 运营);相关前置数据就绪 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察拦截 | 非 admin 角色访问统一 401/403,不泄露后台数据 | /api/admin/report-parser/* | — |
+| TC-A-18-P | A-17 | 优惠券/活动管理 | 运营 | P1 | 权限 | 已登录(默认 运营);相关前置数据就绪 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察拦截 | 非 admin 角色访问统一 401/403,不泄露后台数据 | 优惠券/活动管理 | — |
+| TC-A-19-P | A-18 | 内容安全 | 运营 | P1 | 权限 | 已登录(默认 运营);相关前置数据就绪 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察拦截 | 非 admin 角色访问统一 401/403,不泄露后台数据 | 内容安全 | — |
+| TC-A-20-P | A-19 | GDPR 工单 | 运营 | P1 | 权限 | 已登录(默认 运营);相关前置数据就绪 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察拦截 | 非 admin 角色访问统一 401/403,不泄露后台数据 | GDPR 工单 | — |
+| TC-A-21-P | A-20 | 网关/限流 | 运营 | P1 | 权限 | 已登录(默认 运营);相关前置数据就绪 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察拦截 | 非 admin 角色访问统一 401/403,不泄露后台数据 | 网关/限流 | — |
+| TC-A-22-P | A-21 | 模型管理 | 运营 | P1 | 权限 | 已登录(默认 运营);相关前置数据就绪 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察拦截 | 非 admin 角色访问统一 401/403,不泄露后台数据 | 模型管理 | — |
+| TC-A-23-P | A-22 | 知识库 | 运营 | P1 | 权限 | 已登录(默认 运营);相关前置数据就绪 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察拦截 | 非 admin 角色访问统一 401/403,不泄露后台数据 | 知识库 | — |

+ 29 - 0
tests/test-cases/child.md

@@ -36,6 +36,16 @@
 
 ---
 
+
+### 本轮扩展场景用例(新增 SC-C)
+| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
+|---|---|---|---|---|---|---|---|---|---|---|
+| TC-C-19 | C-19 | 消息服务 | 孩子 | P1 | 功能 | 已登录(默认 孩子);相关前置数据就绪 | 1. 按场景流程执行:消息列表 → 已读 2. 观察结果 | 达成目标:收通知;边界:越权消息不可见 | 消息服务 | — |
+| TC-C-20 | C-20 | GrowthController | 孩子 | P1 | 功能 | 已登录(默认 孩子);相关前置数据就绪 | 1. 按场景流程执行:档案页 → 只读;导出需家长 2. 观察结果 | 达成目标:看自己档案;边界:未成年人导出受限,需家长代办 | GrowthController | — |
+| TC-C-21 | C-21 | 舌诊情绪识别 | 孩子 | P1 | 功能 | 已登录(默认 孩子);相关前置数据就绪 | 1. 按场景流程执行:拍照 → 上传 → 识别 2. 观察结果 | 达成目标:拍照上传;边界:模糊/非照片拒绝;隐私标注 | 舌诊情绪识别 | — |
+| TC-C-22 | C-22 | MallController | 孩子 | P1 | 功能 | 已登录(默认 孩子);相关前置数据就绪 | 1. 按场景流程执行:选商品 → 积分兑换 2. 观察结果 | 达成目标:用积分换;边界:积分不足拦截;重复兑换幂等 | MallController | — |
+| TC-C-23 | C-23 | 客服 | 孩子 | P1 | 功能 | 已登录(默认 孩子);相关前置数据就绪 | 1. 按场景流程执行:提交反馈 2. 观察结果 | 达成目标:提反馈;边界:内容适龄过滤;敏感信息脱敏 | 客服 | — |
+
 ## 异常流用例(派生自正常流)
 
 | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
@@ -59,6 +69,16 @@
 | TC-C-17-E | SC-C-17 | 退出 | 孩子 | P2 | 异常 | 已登录 | 1. 未登录/过期 token/非法切换 2. 观察拦截 | token 过期/缺失统一 401 跳登录;孩子端无切回家长入口;越权切换被拒;模拟登录仅测试环境生效 | `AuthController` | — |
 | TC-C-18-E | SC-C-18 | 设备校验 | 孩子 | P3 | 异常 | 登录设备 | 1. 未登录/过期 token/非法切换 2. 观察拦截 | token 过期/缺失统一 401 跳登录;孩子端无切回家长入口;越权切换被拒;模拟登录仅测试环境生效 | `AuthController` | — |
 
+
+### 本轮扩展异常流(派生自新增场景)
+| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
+|---|---|---|---|---|---|---|---|---|---|---|
+| TC-C-19-E | C-19 | 消息服务 | 孩子 | P2 | 异常 | 已登录(默认 孩子);相关前置数据就绪 | 1. 输入非法格式/重复/越界值 2. 观察处理 | 字段格式校验拦截;重复去重;最小权限保底;保存失败不污染既有数据 | 消息服务 | — |
+| TC-C-20-E | C-20 | GrowthController | 孩子 | P2 | 异常 | 已登录(默认 孩子);相关前置数据就绪 | 1. 制造并发/重复/异常设备/越权对象操作 2. 观察处理 | 并发安全;重复操作幂等;异常设备二次验证;数据归档/导出脱敏合规 | GrowthController | — |
+| TC-C-21-E | C-21 | 舌诊情绪识别 | 孩子 | P2 | 异常 | 已登录(默认 孩子);相关前置数据就绪 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 舌诊情绪识别 | — |
+| TC-C-22-E | C-22 | MallController | 孩子 | P2 | 异常 | 已登录(默认 孩子);相关前置数据就绪 | 1. 制造支付失败/并发抢购/重复提交/库存或名额不足 2. 观察处理 | 支付失败回滚不生成额度/订单;并发超卖拦截;重复提交幂等;库存/名额边界正确 | MallController | — |
+| TC-C-23-E | C-23 | 客服 | 孩子 | P2 | 异常 | 已登录(默认 孩子);相关前置数据就绪 | 1. 输入非法格式/重复/越界值 2. 观察处理 | 字段格式校验拦截;重复去重;最小权限保底;保存失败不污染既有数据 | 客服 | — |
+
 ## 权限流用例(派生自正常流)
 
 | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
@@ -81,3 +101,12 @@
 | TC-C-16-P | SC-C-16 | 个人资料 | 孩子 | P1 | 权限 | 已登录 | 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 | 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 | `AuthController` | — |
 | TC-C-17-P | SC-C-17 | 退出 | 孩子 | P1 | 权限 | 已登录 | 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 | 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 | `AuthController` | — |
 | TC-C-18-P | SC-C-18 | 设备校验 | 孩子 | P2 | 权限 | 登录设备 | 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 | 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 | `AuthController` | — |
+
+### 本轮扩展权限流(派生自新增场景)
+| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
+|---|---|---|---|---|---|---|---|---|---|---|
+| TC-C-19-P | C-19 | 消息服务 | 孩子 | P1 | 权限 | 已登录(默认 孩子);相关前置数据就绪 | 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 | 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 | 消息服务 | — |
+| TC-C-20-P | C-20 | GrowthController | 孩子 | P1 | 权限 | 已登录(默认 孩子);相关前置数据就绪 | 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 | 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 | GrowthController | — |
+| TC-C-21-P | C-21 | 舌诊情绪识别 | 孩子 | P1 | 权限 | 已登录(默认 孩子);相关前置数据就绪 | 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 | 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 | 舌诊情绪识别 | — |
+| TC-C-22-P | C-22 | MallController | 孩子 | P1 | 权限 | 已登录(默认 孩子);相关前置数据就绪 | 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 | 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 | MallController | — |
+| TC-C-23-P | C-23 | 客服 | 孩子 | P1 | 权限 | 已登录(默认 孩子);相关前置数据就绪 | 1. 孩子端调用编辑/删除/切家长接口或拼家长路由 2. 观察拦截 | 孩子端无编辑/删除/切家长入口;直接调用被 role 校验拒绝(403/401),不越权操作家庭数据 | 客服 | — |

+ 32 - 0
tests/test-cases/cross-role-e2e.md

@@ -51,6 +51,17 @@
 
 ---
 
+
+### 本轮扩展场景用例(新增 SC-X)
+| TC 编号 | 环节 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联场景/用例 |
+|---|---|---|---|---|---|---|---|---|
+| TC-X-13 | 报告代传跨角色闭环 | 跨角色 | P1 | 功能 | 已登录(默认 跨角色);相关前置数据就绪 | 1. 按场景流程执行:发起代传 → 对方上传 → 孩子档案更新 2. 观察结果 | 达成目标:代传贯通;边界:授权校验;越权代传拒 | X-13 |
+| TC-X-14 | 解绑/重分配跨角色协 | 跨角色 | P1 | 功能 | 已登录(默认 跨角色);相关前置数据就绪 | 1. 按场景流程执行:家长解绑 ↔ 规划师侧更新 2. 观察结果 | 达成目标:解绑一致;边界:在途数据交接;状态同步 | X-14 |
+| TC-X-15 | 注销/数据导出跨角色 | 跨角色 | P1 | 功能 | 已登录(默认 跨角色);相关前置数据就绪 | 1. 按场景流程执行:家长申请 → 运营处理 → 规划师档案解绑 2. 观察结果 | 达成目标:注销贯通;边界:审计;冷静期 | X-15 |
+| TC-X-16 | 活动名额并发 E2E | 跨角色 | P0 | 功能 | 已登录(默认 跨角色);相关前置数据就绪 | 1. 按场景流程执行:多家长同时报名抢名额 2. 观察结果 | 达成目标:并发报名;边界:**并发超卖拦截(真实 bug)** | X-16 |
+| TC-X-17 | 多端登录会话互斥跨端 | 跨角色 | P1 | 功能 | 已登录(默认 跨角色);相关前置数据就绪 | 1. 按场景流程执行:A 端登录 → B 端被踢/验证 2. 观察结果 | 达成目标:会话安全;边界:异常设备风控 | X-17 |
+| TC-X-18 | 推送跨端送达 | 跨角色 | P1 | 功能 | 已登录(默认 跨角色);相关前置数据就绪 | 1. 按场景流程执行:家长设提醒 → 孩子端收到 2. 观察结果 | 达成目标:提醒触达;边界:免打扰生效 | X-18 |
+
 ## 异常流用例(派生自正常流)
 
 | TC 编号 | 环节 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联场景/用例 |
@@ -68,6 +79,17 @@
 | TC-X-11-E | 消息通知闭环 | 多角色 | P2 | 异常 | 跨角色消息配置就绪 | 1. 输入非法格式/重复/越界值 2. 观察校验 | 字段格式校验拦截;重复去重;最小权限保底;保存失败不污染既有数据 | P-65 / T-19 / C-15 |
 | TC-X-12-E | 会员权益闭环 | 多角色 | P2 | 异常 | 家长未购会员 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | P-58 / P-16 |
 
+
+### 本轮扩展异常流(派生自新增场景)
+| TC 编号 | 环节 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联场景/用例 |
+|---|---|---|---|---|---|---|---|---|
+| TC-X-13-E | 报告代传跨角色闭环 | 跨角色 | P2 | 异常 | 已登录(默认 跨角色);相关前置数据就绪 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | X-13 |
+| TC-X-14-E | 解绑/重分配跨角色协 | 跨角色 | P2 | 异常 | 已登录(默认 跨角色);相关前置数据就绪 | 1. 制造并发/重复/异常设备/越权对象操作 2. 观察处理 | 并发安全;重复操作幂等;异常设备二次验证;数据归档/导出脱敏合规 | X-14 |
+| TC-X-15-E | 注销/数据导出跨角色 | 跨角色 | P2 | 异常 | 已登录(默认 跨角色);相关前置数据就绪 | 1. 制造并发/重复/异常设备/越权对象操作 2. 观察处理 | 并发安全;重复操作幂等;异常设备二次验证;数据归档/导出脱敏合规 | X-15 |
+| TC-X-16-E | 活动名额并发 E2E | 跨角色 | P1 | 异常 | 已登录(默认 跨角色);相关前置数据就绪 | 1. 制造支付失败/并发抢购/重复提交/库存或名额不足 2. 观察处理 | 支付失败回滚不生成额度/订单;并发超卖拦截;重复提交幂等;库存/名额边界正确 | X-16 |
+| TC-X-17-E | 多端登录会话互斥跨端 | 跨角色 | P2 | 异常 | 已登录(默认 跨角色);相关前置数据就绪 | 1. 制造并发/重复/异常设备/越权对象操作 2. 观察处理 | 并发安全;重复操作幂等;异常设备二次验证;数据归档/导出脱敏合规 | X-17 |
+| TC-X-18-E | 推送跨端送达 | 跨角色 | P2 | 异常 | 已登录(默认 跨角色);相关前置数据就绪 | 1. 输入非法格式/重复/越界值 2. 观察处理 | 字段格式校验拦截;重复去重;最小权限保底;保存失败不污染既有数据 | X-18 |
+
 ## 权限流用例(派生自正常流)
 
 | TC 编号 | 环节 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联场景/用例 |
@@ -84,3 +106,13 @@
 | TC-X-10-P | 报告对比趋势闭环 | 多角色 | P2 | 权限 | 同一孩子多次上传同类型报告 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | P-25 / T-21 |
 | TC-X-11-P | 消息通知闭环 | 多角色 | P1 | 权限 | 跨角色消息配置就绪 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | P-65 / T-19 / C-15 |
 | TC-X-12-P | 会员权益闭环 | 多角色 | P1 | 权限 | 家长未购会员 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | P-58 / P-16 |
+
+### 本轮扩展权限流(派生自新增场景)
+| TC 编号 | 环节 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联场景/用例 |
+|---|---|---|---|---|---|---|---|---|
+| TC-X-13-P | 报告代传跨角色闭环 | 跨角色 | P1 | 权限 | 已登录(默认 跨角色);相关前置数据就绪 | 1. 跨角色调用他人/非绑定家庭数据接口 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | X-13 |
+| TC-X-14-P | 解绑/重分配跨角色协 | 跨角色 | P1 | 权限 | 已登录(默认 跨角色);相关前置数据就绪 | 1. 跨角色调用他人/非绑定家庭数据接口 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | X-14 |
+| TC-X-15-P | 注销/数据导出跨角色 | 跨角色 | P1 | 权限 | 已登录(默认 跨角色);相关前置数据就绪 | 1. 跨角色调用他人/非绑定家庭数据接口 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | X-15 |
+| TC-X-16-P | 活动名额并发 E2E | 跨角色 | P0 | 权限 | 已登录(默认 跨角色);相关前置数据就绪 | 1. 跨角色调用他人/非绑定家庭数据接口 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | X-16 |
+| TC-X-17-P | 多端登录会话互斥跨端 | 跨角色 | P1 | 权限 | 已登录(默认 跨角色);相关前置数据就绪 | 1. 跨角色调用他人/非绑定家庭数据接口 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | X-17 |
+| TC-X-18-P | 推送跨端送达 | 跨角色 | P1 | 权限 | 已登录(默认 跨角色);相关前置数据就绪 | 1. 跨角色调用他人/非绑定家庭数据接口 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | X-18 |

+ 20 - 0
tests/test-cases/guest.md

@@ -29,6 +29,13 @@
 
 ---
 
+
+### 本轮扩展场景用例(新增 SC-G)
+| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
+|---|---|---|---|---|---|---|---|---|---|---|
+| TC-G-11 | G-11 | 协议页/AgreementController | 游客 | P2 | 功能 | 未登录/游客态 | 1. 按场景流程执行:进入 → 查看协议全文 → 同意/返回 2. 观察结果 | 达成目标:合规告知;边界:未同意不可进入注册/核心流程 | 协议页/AgreementController | — |
+| TC-G-12 | G-12 | config.js | 游客 | P2 | 功能 | 未登录/游客态 | 1. 按场景流程执行:H5 打开 → 环境探测 → 提示在微信内打开或降级静态页 2. 观察结果 | 达成目标:非微信浏览器打开小程序链接;边界:探测失败给出明确引导 | config.js | — |
+
 ## 异常流用例(派生自正常流)
 
 | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
@@ -44,6 +51,13 @@
 | TC-G-09-E | SC-G-09 | 认证 | 游客 | P2 | 异常 | 已登录 | 1. 未登录/过期 token/非法切换 2. 观察拦截 | token 过期/缺失统一 401 跳登录;孩子端无切回家长入口;越权切换被拒;模拟登录仅测试环境生效 | `AuthController` | — |
 | TC-G-10-E | SC-G-10 | 注册 | 游客 | P2 | 异常 | 未注册账号 | 1. 未登录/过期 token/非法切换 2. 观察拦截 | token 过期/缺失统一 401 跳登录;孩子端无切回家长入口;越权切换被拒;模拟登录仅测试环境生效 | `AuthController` | — |
 
+
+### 本轮扩展异常流(派生自新增场景)
+| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
+|---|---|---|---|---|---|---|---|---|---|---|
+| TC-G-11-E | G-11 | 协议页/AgreementController | 游客 | P2 | 异常 | 未登录/游客态 | 1. 输入非法格式/重复/越界值 2. 观察处理 | 字段格式校验拦截;重复去重;最小权限保底;保存失败不污染既有数据 | 协议页/AgreementController | — |
+| TC-G-12-E | G-12 | config.js | 游客 | P2 | 异常 | 未登录/游客态 | 1. 输入非法格式/重复/越界值 2. 观察处理 | 字段格式校验拦截;重复去重;最小权限保底;保存失败不污染既有数据 | config.js | — |
+
 ## 权限流用例(派生自正常流)
 
 | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
@@ -58,3 +72,9 @@
 | TC-G-08-P | SC-G-08 | 环境切换 | 游客 | P2 | 权限 | 多环境(develop/trial/release) | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `config.js` | — |
 | TC-G-09-P | SC-G-09 | 认证 | 游客 | P1 | 权限 | 已登录 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `AuthController` | — |
 | TC-G-10-P | SC-G-10 | 注册 | 游客 | P1 | 权限 | 未注册账号 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `AuthController` | — |
+
+### 本轮扩展权限流(派生自新增场景)
+| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
+|---|---|---|---|---|---|---|---|---|---|---|
+| TC-G-11-P | G-11 | 协议页/AgreementController | 游客 | P2 | 权限 | 未登录/游客态 | 1. 未登录直接调用受保护接口(报告/任务/方案/订单/能量/管理端) 2. 观察拦截 | 统一 401/403,不泄露内部错误与数据;8 个公开路径除外 | 协议页/AgreementController | — |
+| TC-G-12-P | G-12 | config.js | 游客 | P2 | 权限 | 未登录/游客态 | 1. 未登录直接调用受保护接口(报告/任务/方案/订单/能量/管理端) 2. 观察拦截 | 统一 401/403,不泄露内部错误与数据;8 个公开路径除外 | config.js | — |

+ 74 - 0
tests/test-cases/parent.md

@@ -89,6 +89,31 @@
 
 ---
 
+
+### 本轮扩展场景用例(新增 SC-P)
+| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
+|---|---|---|---|---|---|---|---|---|---|---|
+| TC-P-67 | P-67 | 报告代传/report-proxy | 家长 | P0 | 功能 | 已登录(默认 家长);相关前置数据就绪 | 1. 按场景流程执行:发起代传邀请 → 对方上传 PDF → 关联孩子档案解析入库 2. 观察结果 | 达成目标:无报告原件时由他人代传;边界:代传需授权令牌;越权代传他人孩子被拒;代传报告归属校验 | 报告代传/report-proxy | — |
+| TC-P-68 | P-68 | 家庭天盘 | 家长 | P1 | 功能 | 已登录(默认 家长);相关前置数据就绪 | 1. 按场景流程执行:打开家庭天盘 → 聚合展示成员能量/报告/方案 2. 观察结果 | 达成目标:一眼看全家健康/能量;边界:数据缺失降级展示;仅本家庭成员可见 | 家庭天盘 | — |
+| TC-P-69 | P-69 | 精准营养 | 家长 | P1 | 功能 | 已登录(默认 家长);相关前置数据就绪 | 1. 按场景流程执行:设目标(热量/宏量营养素)→ 保存 → 影响食谱推荐 2. 观察结果 | 达成目标:设定每日营养/热量目标;边界:目标非法(负/超上限)拦截 | 精准营养 | — |
+| TC-P-70 | P-70 | 舌诊情绪识别 | 家长 | P1 | 功能 | 已登录(默认 家长);相关前置数据就绪 | 1. 按场景流程执行:拍照/上传 → 识别情绪标签 → 关联测评 2. 观察结果 | 达成目标:上传舌苔照辅助评估;边界:非照片/模糊拒绝;隐私标注不外露 | 舌诊情绪识别 | — |
+| TC-P-71 | P-71 | AuthController | 家长 | P1 | 功能 | 已登录(默认 家长);相关前置数据就绪 | 1. 按场景流程执行:申请 → 身份验证 → 冷静期 → 数据归档/删除 2. 观察结果 | 达成目标:注销账号;边界:有进行中订单/未结清拦截;注销后不可登录 | AuthController | — |
+| TC-P-72 | P-72 | 数据导出(GDPR) | 家长 | P1 | 功能 | 已登录(默认 家长);相关前置数据就绪 | 1. 按场景流程执行:申请导出 → 生成加密包 → 下载 2. 观察结果 | 达成目标:下载本人数据;边界:敏感字段脱敏;频次限制;越权导出被拒 | 数据导出(GDPR) | — |
+| TC-P-73 | P-73 | 家庭/成员 | 家长 | P1 | 功能 | 已登录(默认 家长);相关前置数据就绪 | 1. 按场景流程执行:选孩子 → 任务/报告/方案上下文切换 2. 观察结果 | 达成目标:多孩子家庭切换;边界:仅本家庭孩子可选;当前孩子态隔离 | 家庭/成员 | — |
+| TC-P-74 | P-74 | 规划师绑定 | 家长 | P1 | 功能 | 已登录(默认 家长);相关前置数据就绪 | 1. 按场景流程执行:解绑 → 重选 → 绑定 2. 观察结果 | 达成目标:更换服务规划师;边界:解绑前处理在途方案/预约;非本家庭规划师拒 | 规划师绑定 | — |
+| TC-P-75 | P-75 | 优惠券 | 家长 | P1 | 功能 | 已登录(默认 家长);相关前置数据就绪 | 1. 按场景流程执行:领券 → 入卡包 2. 观察结果 | 达成目标:得券;边界:库存为0/已领拦截;重复领幂等 | 优惠券 | — |
+| TC-P-76 | P-76 | 活动管理 | 家长 | P0 | 功能 | 已登录(默认 家长);相关前置数据就绪 | 1. 按场景流程执行:报名 → 占名额 → 确认 2. 观察结果 | 达成目标:报名平台活动;边界:**并发超卖拦截(CFC 真实 bug 已修)**;名额满拒;重复报名幂等 | 活动管理 | — |
+| TC-P-77 | P-77 | 活动 | 家长 | P1 | 功能 | 已登录(默认 家长);相关前置数据就绪 | 1. 按场景流程执行:打卡 → 进度累计 → 助力 2. 观察结果 | 达成目标:参与打卡/裂变;边界:重复打卡幂等;刷量/机器行为拦截 | 活动 | — |
+| TC-P-78 | P-78 | 消息服务 | 家长 | P1 | 功能 | 已登录(默认 家长);相关前置数据就绪 | 1. 按场景流程执行:打开消息中心 → 列表/已读 2. 观察结果 | 达成目标:看系统/任务/方案提醒;边界:越权消息不可见;分页 | 消息服务 | — |
+| TC-P-79 | P-79 | 消息服务 | 家长 | P1 | 功能 | 已登录(默认 家长);相关前置数据就绪 | 1. 按场景流程执行:设开关/提醒时间 2. 观察结果 | 达成目标:控制接收;边界:关键安全通知不可关闭 | 消息服务 | — |
+| TC-P-80 | P-80 | 会员/订单 | 家长 | P1 | 功能 | 已登录(默认 家长);相关前置数据就绪 | 1. 按场景流程执行:申请退 → 校验 → 退款/开票 2. 观察结果 | 达成目标:退会员/开发票;边界:已消费不退;重复退拦截;发票信息校验 | 会员/订单 | — |
+| TC-P-81 | P-81 | 方案/任务 | 家长 | P1 | 功能 | 已登录(默认 家长);相关前置数据就绪 | 1. 按场景流程执行:存草稿 → 恢复继续 2. 观察结果 | 达成目标:暂存未完;边界:草稿有效期;恢复冲突提示 | 方案/任务 | — |
+| TC-P-82 | P-82 | 搜索 | 家长 | P1 | 功能 | 已登录(默认 家长);相关前置数据就绪 | 1. 按场景流程执行:搜 → 结果按类型分流 2. 观察结果 | 达成目标:快速定位;边界:越权结果过滤;空结果不报错 | 搜索 | — |
+| TC-P-83 | P-83 | 客服 | 家长 | P1 | 功能 | 已登录(默认 家长);相关前置数据就绪 | 1. 按场景流程执行:提交反馈/接入客服 2. 观察结果 | 达成目标:提反馈;边界:敏感信息脱敏;附件大小限制 | 客服 | — |
+| TC-P-84 | P-84 | 分享 | 家长 | P1 | 功能 | 已登录(默认 家长);相关前置数据就绪 | 1. 按场景流程执行:生成分享链接 → 对方查看 2. 观察结果 | 达成目标:共享;边界:链接失效/权限校验;越权分享被拒 | 分享 | — |
+| TC-P-85 | P-85 | AuthController | 家长 | P1 | 功能 | 已登录(默认 家长);相关前置数据就绪 | 1. 按场景流程执行:新设备登录 → 旧设备踢下线/二次验证 2. 观察结果 | 达成目标:同账号多设备;边界:异常设备风控;退出清 token | AuthController | — |
+| TC-P-86 | P-86 | 勋章/排行 | 家长 | P1 | 功能 | 已登录(默认 家长);相关前置数据就绪 | 1. 按场景流程执行:看榜 → 排名/进度 2. 观察结果 | 达成目标:激励;边界:数据仅本家庭可见;排名实时性 | 勋章/排行 | — |
+
 ## 异常流用例(派生自正常流)
 
 | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
@@ -160,6 +185,31 @@
 | TC-P-65-E | SC-P-65 | 通知设置 | 家长 | P3 | 异常 | 已登录 | 1. 输入非法格式/重复/越界值 2. 观察校验 | 字段格式校验拦截;重复去重;最小权限保底;保存失败不污染既有数据 | 消息服务 | — |
 | TC-P-66-E | SC-P-66 | 隐私设置 | 家长 | P3 | 异常 | 已登录 | 1. 输入非法格式/重复/越界值 2. 观察校验 | 字段格式校验拦截;重复去重;最小权限保底;保存失败不污染既有数据 | 隐私设置 | — |
 
+
+### 本轮扩展异常流(派生自新增场景)
+| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
+|---|---|---|---|---|---|---|---|---|---|---|
+| TC-P-67-E | P-67 | 报告代传/report-proxy | 家长 | P1 | 异常 | 已登录(默认 家长);相关前置数据就绪 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 报告代传/report-proxy | — |
+| TC-P-68-E | P-68 | 家庭天盘 | 家长 | P2 | 异常 | 已登录(默认 家长);相关前置数据就绪 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 家庭天盘 | — |
+| TC-P-69-E | P-69 | 精准营养 | 家长 | P2 | 异常 | 已登录(默认 家长);相关前置数据就绪 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 精准营养 | — |
+| TC-P-70-E | P-70 | 舌诊情绪识别 | 家长 | P2 | 异常 | 已登录(默认 家长);相关前置数据就绪 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 舌诊情绪识别 | — |
+| TC-P-71-E | P-71 | AuthController | 家长 | P2 | 异常 | 已登录(默认 家长);相关前置数据就绪 | 1. 制造并发/重复/异常设备/越权对象操作 2. 观察处理 | 并发安全;重复操作幂等;异常设备二次验证;数据归档/导出脱敏合规 | AuthController | — |
+| TC-P-72-E | P-72 | 数据导出(GDPR) | 家长 | P2 | 异常 | 已登录(默认 家长);相关前置数据就绪 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 数据导出(GDPR) | — |
+| TC-P-73-E | P-73 | 家庭/成员 | 家长 | P2 | 异常 | 已登录(默认 家长);相关前置数据就绪 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 家庭/成员 | — |
+| TC-P-74-E | P-74 | 规划师绑定 | 家长 | P2 | 异常 | 已登录(默认 家长);相关前置数据就绪 | 1. 制造并发/重复/异常设备/越权对象操作 2. 观察处理 | 并发安全;重复操作幂等;异常设备二次验证;数据归档/导出脱敏合规 | 规划师绑定 | — |
+| TC-P-75-E | P-75 | 优惠券 | 家长 | P2 | 异常 | 已登录(默认 家长);相关前置数据就绪 | 1. 制造支付失败/并发抢购/重复提交/库存或名额不足 2. 观察处理 | 支付失败回滚不生成额度/订单;并发超卖拦截;重复提交幂等;库存/名额边界正确 | 优惠券 | — |
+| TC-P-76-E | P-76 | 活动管理 | 家长 | P1 | 异常 | 已登录(默认 家长);相关前置数据就绪 | 1. 制造支付失败/并发抢购/重复提交/库存或名额不足 2. 观察处理 | 支付失败回滚不生成额度/订单;并发超卖拦截;重复提交幂等;库存/名额边界正确 | 活动管理 | — |
+| TC-P-77-E | P-77 | 活动 | 家长 | P2 | 异常 | 已登录(默认 家长);相关前置数据就绪 | 1. 制造支付失败/并发抢购/重复提交/库存或名额不足 2. 观察处理 | 支付失败回滚不生成额度/订单;并发超卖拦截;重复提交幂等;库存/名额边界正确 | 活动 | — |
+| TC-P-78-E | P-78 | 消息服务 | 家长 | P2 | 异常 | 已登录(默认 家长);相关前置数据就绪 | 1. 输入非法格式/重复/越界值 2. 观察处理 | 字段格式校验拦截;重复去重;最小权限保底;保存失败不污染既有数据 | 消息服务 | — |
+| TC-P-79-E | P-79 | 消息服务 | 家长 | P2 | 异常 | 已登录(默认 家长);相关前置数据就绪 | 1. 输入非法格式/重复/越界值 2. 观察处理 | 字段格式校验拦截;重复去重;最小权限保底;保存失败不污染既有数据 | 消息服务 | — |
+| TC-P-80-E | P-80 | 会员/订单 | 家长 | P2 | 异常 | 已登录(默认 家长);相关前置数据就绪 | 1. 制造支付失败/并发抢购/重复提交/库存或名额不足 2. 观察处理 | 支付失败回滚不生成额度/订单;并发超卖拦截;重复提交幂等;库存/名额边界正确 | 会员/订单 | — |
+| TC-P-81-E | P-81 | 方案/任务 | 家长 | P2 | 异常 | 已登录(默认 家长);相关前置数据就绪 | 1. 制造 AI/方案生成超时或不可用;重复激活/确认/购买 2. 观察处理 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活幂等不重复生成任务;失败回滚不残半任务 | 方案/任务 | — |
+| TC-P-82-E | P-82 | 搜索 | 家长 | P2 | 异常 | 已登录(默认 家长);相关前置数据就绪 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 搜索 | — |
+| TC-P-83-E | P-83 | 客服 | 家长 | P2 | 异常 | 已登录(默认 家长);相关前置数据就绪 | 1. 输入非法格式/重复/越界值 2. 观察处理 | 字段格式校验拦截;重复去重;最小权限保底;保存失败不污染既有数据 | 客服 | — |
+| TC-P-84-E | P-84 | 分享 | 家长 | P2 | 异常 | 已登录(默认 家长);相关前置数据就绪 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 分享 | — |
+| TC-P-85-E | P-85 | AuthController | 家长 | P2 | 异常 | 已登录(默认 家长);相关前置数据就绪 | 1. 制造并发/重复/异常设备/越权对象操作 2. 观察处理 | 并发安全;重复操作幂等;异常设备二次验证;数据归档/导出脱敏合规 | AuthController | — |
+| TC-P-86-E | P-86 | 勋章/排行 | 家长 | P2 | 异常 | 已登录(默认 家长);相关前置数据就绪 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 勋章/排行 | — |
+
 ## 权限流用例(派生自正常流)
 
 | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
@@ -230,3 +280,27 @@
 | TC-P-64-P | SC-P-64 | 个人资料 | 家长 | P1 | 权限 | 已登录 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `AuthController` | — |
 | TC-P-65-P | SC-P-65 | 通知设置 | 家长 | P2 | 权限 | 已登录 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 消息服务 | — |
 | TC-P-66-P | SC-P-66 | 隐私设置 | 家长 | P2 | 权限 | 已登录 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 隐私设置 | — |
+
+### 本轮扩展权限流(派生自新增场景)
+| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
+|---|---|---|---|---|---|---|---|---|---|---|
+| TC-P-67-P | P-67 | 报告代传/report-proxy | 家长 | P0 | 权限 | 已登录(默认 家长);相关前置数据就绪 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 报告代传/report-proxy | — |
+| TC-P-68-P | P-68 | 家庭天盘 | 家长 | P1 | 权限 | 已登录(默认 家长);相关前置数据就绪 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 家庭天盘 | — |
+| TC-P-69-P | P-69 | 精准营养 | 家长 | P1 | 权限 | 已登录(默认 家长);相关前置数据就绪 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 精准营养 | — |
+| TC-P-70-P | P-70 | 舌诊情绪识别 | 家长 | P1 | 权限 | 已登录(默认 家长);相关前置数据就绪 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 舌诊情绪识别 | — |
+| TC-P-71-P | P-71 | AuthController | 家长 | P1 | 权限 | 已登录(默认 家长);相关前置数据就绪 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | AuthController | — |
+| TC-P-72-P | P-72 | 数据导出(GDPR) | 家长 | P1 | 权限 | 已登录(默认 家长);相关前置数据就绪 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 数据导出(GDPR) | — |
+| TC-P-73-P | P-73 | 家庭/成员 | 家长 | P1 | 权限 | 已登录(默认 家长);相关前置数据就绪 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 家庭/成员 | — |
+| TC-P-74-P | P-74 | 规划师绑定 | 家长 | P1 | 权限 | 已登录(默认 家长);相关前置数据就绪 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 规划师绑定 | — |
+| TC-P-75-P | P-75 | 优惠券 | 家长 | P1 | 权限 | 已登录(默认 家长);相关前置数据就绪 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 优惠券 | — |
+| TC-P-76-P | P-76 | 活动管理 | 家长 | P0 | 权限 | 已登录(默认 家长);相关前置数据就绪 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 活动管理 | — |
+| TC-P-77-P | P-77 | 活动 | 家长 | P1 | 权限 | 已登录(默认 家长);相关前置数据就绪 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 活动 | — |
+| TC-P-78-P | P-78 | 消息服务 | 家长 | P1 | 权限 | 已登录(默认 家长);相关前置数据就绪 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 消息服务 | — |
+| TC-P-79-P | P-79 | 消息服务 | 家长 | P1 | 权限 | 已登录(默认 家长);相关前置数据就绪 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 消息服务 | — |
+| TC-P-80-P | P-80 | 会员/订单 | 家长 | P1 | 权限 | 已登录(默认 家长);相关前置数据就绪 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 会员/订单 | — |
+| TC-P-81-P | P-81 | 方案/任务 | 家长 | P1 | 权限 | 已登录(默认 家长);相关前置数据就绪 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 方案/任务 | — |
+| TC-P-82-P | P-82 | 搜索 | 家长 | P1 | 权限 | 已登录(默认 家长);相关前置数据就绪 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 搜索 | — |
+| TC-P-83-P | P-83 | 客服 | 家长 | P1 | 权限 | 已登录(默认 家长);相关前置数据就绪 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 客服 | — |
+| TC-P-84-P | P-84 | 分享 | 家长 | P1 | 权限 | 已登录(默认 家长);相关前置数据就绪 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 分享 | — |
+| TC-P-85-P | P-85 | AuthController | 家长 | P1 | 权限 | 已登录(默认 家长);相关前置数据就绪 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | AuthController | — |
+| TC-P-86-P | P-86 | 勋章/排行 | 家长 | P1 | 权限 | 已登录(默认 家长);相关前置数据就绪 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察拦截 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 勋章/排行 | — |

+ 35 - 0
tests/test-cases/teacher.md

@@ -43,6 +43,18 @@
 
 ---
 
+
+### 本轮扩展场景用例(新增 SC-T)
+| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
+|---|---|---|---|---|---|---|---|---|---|---|
+| TC-T-23 | T-23 | 报告代传/report-proxy | 规划师 | P1 | 功能 | 已登录(默认 规划师);相关前置数据就绪 | 1. 按场景流程执行:上传 PDF+选孩子 → 解析 → 关联孩子档案 2. 观察结果 | 达成目标:帮客户上传;边界:非绑定家庭拒;识别失败进草稿 | 报告代传/report-proxy | — |
+| TC-T-24 | T-24 | 规划师绑定 | 规划师 | P1 | 功能 | 已登录(默认 规划师);相关前置数据就绪 | 1. 按场景流程执行:解绑 → 重绑新家庭 2. 观察结果 | 达成目标:更换绑定;边界:在途方案/预约处理;非绑定家庭不可操作 | 规划师绑定 | — |
+| TC-T-25 | T-25 | 舌诊情绪识别 | 规划师 | P1 | 功能 | 已登录(默认 规划师);相关前置数据就绪 | 1. 按场景流程执行:上传/录入 → 关联报告 2. 观察结果 | 达成目标:录入识别结果;边界:识别失败回退人工 | 舌诊情绪识别 | — |
+| TC-T-26 | T-26 | 精准营养 | 规划师 | P1 | 功能 | 已登录(默认 规划师);相关前置数据就绪 | 1. 按场景流程执行:设目标 → 生成方案 2. 观察结果 | 达成目标:基于营养目标出方案;边界:目标非法拦截 | 精准营养 | — |
+| TC-T-27 | T-27 | 家庭天盘 | 规划师 | P1 | 功能 | 已登录(默认 规划师);相关前置数据就绪 | 1. 按场景流程执行:打开天盘 → 解读 2. 观察结果 | 达成目标:给家庭看聚合视图并解读;边界:仅绑定家庭可见 | 家庭天盘 | — |
+| TC-T-28 | T-28 | 内容安全 | 规划师 | P1 | 功能 | 已登录(默认 规划师);相关前置数据就绪 | 1. 按场景流程执行:AI 生成 → 敏感词/合规检查 → 放行/驳回 2. 观察结果 | 达成目标:复核 AI 敏感内容;边界:命中即拦截 | 内容安全 | — |
+| TC-T-29 | T-29 | 数据导出(GDPR) | 规划师 | P1 | 功能 | 已登录(默认 规划师);相关前置数据就绪 | 1. 按场景流程执行:申请 → 生成包 → 下载 2. 观察结果 | 达成目标:导出客户数据;边界:授权/脱敏;越权拒 | 数据导出(GDPR) | — |
+
 ## 异常流用例(派生自正常流)
 
 | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
@@ -70,6 +82,18 @@
 | TC-T-21-E | SC-T-21 | 报告对比 | 规划师 | P2 | 异常 | 多份报告 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察系统处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 报告管理 | — |
 | TC-T-22-E | SC-T-22 | 方案归档 | 规划师 | P3 | 异常 | 方案完成 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | 方案管理 | — |
 
+
+### 本轮扩展异常流(派生自新增场景)
+| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
+|---|---|---|---|---|---|---|---|---|---|---|
+| TC-T-23-E | T-23 | 报告代传/report-proxy | 规划师 | P2 | 异常 | 已登录(默认 规划师);相关前置数据就绪 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 报告代传/report-proxy | — |
+| TC-T-24-E | T-24 | 规划师绑定 | 规划师 | P2 | 异常 | 已登录(默认 规划师);相关前置数据就绪 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 规划师绑定 | — |
+| TC-T-25-E | T-25 | 舌诊情绪识别 | 规划师 | P2 | 异常 | 已登录(默认 规划师);相关前置数据就绪 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 舌诊情绪识别 | — |
+| TC-T-26-E | T-26 | 精准营养 | 规划师 | P2 | 异常 | 已登录(默认 规划师);相关前置数据就绪 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 精准营养 | — |
+| TC-T-27-E | T-27 | 家庭天盘 | 规划师 | P2 | 异常 | 已登录(默认 规划师);相关前置数据就绪 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 家庭天盘 | — |
+| TC-T-28-E | T-28 | 内容安全 | 规划师 | P2 | 异常 | 已登录(默认 规划师);相关前置数据就绪 | 1. 制造 AI/方案生成超时或不可用;重复激活/确认/购买 2. 观察处理 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活幂等不重复生成任务;失败回滚不残半任务 | 内容安全 | — |
+| TC-T-29-E | T-29 | 数据导出(GDPR) | 规划师 | P2 | 异常 | 已登录(默认 规划师);相关前置数据就绪 | 1. 制造 AI/方案生成超时或不可用;重复激活/确认/购买 2. 观察处理 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活幂等不重复生成任务;失败回滚不残半任务 | 数据导出(GDPR) | — |
+
 ## 权限流用例(派生自正常流)
 
 | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
@@ -96,3 +120,14 @@
 | TC-T-20-P | SC-T-20 | 退出/切换 | 规划师 | P1 | 权限 | 已登录 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | `AuthController` | — |
 | TC-T-21-P | SC-T-21 | 报告对比 | 规划师 | P1 | 权限 | 多份报告 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | 报告管理 | — |
 | TC-T-22-P | SC-T-22 | 方案归档 | 规划师 | P2 | 权限 | 方案完成 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | 方案管理 | — |
+
+### 本轮扩展权限流(派生自新增场景)
+| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
+|---|---|---|---|---|---|---|---|---|---|---|
+| TC-T-23-P | T-23 | 报告代传/report-proxy | 规划师 | P1 | 权限 | 已登录(默认 规划师);相关前置数据就绪 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单);对非指派预约 confirm/cancel 2. 观察拦截 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒 | 报告代传/report-proxy | — |
+| TC-T-24-P | T-24 | 规划师绑定 | 规划师 | P1 | 权限 | 已登录(默认 规划师);相关前置数据就绪 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单);对非指派预约 confirm/cancel 2. 观察拦截 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒 | 规划师绑定 | — |
+| TC-T-25-P | T-25 | 舌诊情绪识别 | 规划师 | P1 | 权限 | 已登录(默认 规划师);相关前置数据就绪 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单);对非指派预约 confirm/cancel 2. 观察拦截 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒 | 舌诊情绪识别 | — |
+| TC-T-26-P | T-26 | 精准营养 | 规划师 | P1 | 权限 | 已登录(默认 规划师);相关前置数据就绪 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单);对非指派预约 confirm/cancel 2. 观察拦截 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒 | 精准营养 | — |
+| TC-T-27-P | T-27 | 家庭天盘 | 规划师 | P1 | 权限 | 已登录(默认 规划师);相关前置数据就绪 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单);对非指派预约 confirm/cancel 2. 观察拦截 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒 | 家庭天盘 | — |
+| TC-T-28-P | T-28 | 内容安全 | 规划师 | P1 | 权限 | 已登录(默认 规划师);相关前置数据就绪 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单);对非指派预约 confirm/cancel 2. 观察拦截 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒 | 内容安全 | — |
+| TC-T-29-P | T-29 | 数据导出(GDPR) | 规划师 | P1 | 权限 | 已登录(默认 规划师);相关前置数据就绪 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单);对非指派预约 confirm/cancel 2. 观察拦截 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒 | 数据导出(GDPR) | — |

+ 23 - 0
tests/test-cases/vendor.md

@@ -27,6 +27,14 @@
 
 ---
 
+
+### 本轮扩展场景用例(新增 SC-S)
+| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
+|---|---|---|---|---|---|---|---|---|---|---|
+| TC-S-9 | S-9 | 服务商集成/解析中台 | 服务商 | P1 | 功能 | 已登录(默认 服务商);相关前置数据就绪 | 1. 按场景流程执行:接中台 → 自测 2. 观察结果 | 达成目标:提供解析能力;边界:跨商户隔离;鉴权 | 服务商集成/解析中台 | — |
+| TC-S-10 | S-10 | 食谱库 | 服务商 | P1 | 功能 | 已登录(默认 服务商);相关前置数据就绪 | 1. 按场景流程执行:上架食谱 → 同步 2. 观察结果 | 达成目标:供食谱数据;边界:数据合规;格式校验 | 食谱库 | — |
+| TC-S-11 | S-11 | 合规 | 服务商 | P1 | 功能 | 已登录(默认 服务商);相关前置数据就绪 | 1. 按场景流程执行:申请授权 → 取数 2. 观察结果 | 达成目标:授权内用数;边界:越授权拒;脱敏 | 合规 | — |
+
 ## 异常流用例(派生自正常流)
 
 | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
@@ -40,6 +48,14 @@
 | TC-S-07-E | SC-S-07 | 活动报名 | 服务商 | P3 | 异常 | 活动进行中 | 1. 重复创建/参数非法/长文超时 2. 观察处理 | 标题/名称重复被拦截;参数非法统一 400 非 500;长文稳定无超时;操作可逆或有确认 | 活动管理 | — |
 | TC-S-08-E | SC-S-08 | 对账 | 服务商 | P2 | 异常 | 账期到 | 1. 模拟支付失败/余额不足/重复提交/负价格负库存 2. 观察回滚与拦截 | 支付失败订单回滚不进入已支付;重复提交幂等;负价格/负库存/参数非法统一 400 拦截;重复核销/退款幂等 | 结算 | — |
 
+
+### 本轮扩展异常流(派生自新增场景)
+| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
+|---|---|---|---|---|---|---|---|---|---|---|
+| TC-S-9-E | S-9 | 服务商集成/解析中台 | 服务商 | P2 | 异常 | 已登录(默认 服务商);相关前置数据就绪 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 服务商集成/解析中台 | — |
+| TC-S-10-E | S-10 | 食谱库 | 服务商 | P2 | 异常 | 已登录(默认 服务商);相关前置数据就绪 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 食谱库 | — |
+| TC-S-11-E | S-11 | 合规 | 服务商 | P2 | 异常 | 已登录(默认 服务商);相关前置数据就绪 | 1. 制造并发/重复/异常设备/越权对象操作 2. 观察处理 | 并发安全;重复操作幂等;异常设备二次验证;数据归档/导出脱敏合规 | 合规 | — |
+
 ## 权限流用例(派生自正常流)
 
 | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
@@ -52,3 +68,10 @@
 | TC-S-06-P | SC-S-06 | 售后 | 服务商 | P1 | 权限 | 有售后单 | 1. 操作非本服务商订单/商品(发货/核销/改库存/退款) 2. 观察 | 非本服务商资源操作被拒;核销码校验防冒用;跨商户数据隔离 | 售后 | — |
 | TC-S-07-P | SC-S-07 | 活动报名 | 服务商 | P2 | 权限 | 活动进行中 | 1. 操作非本服务商订单/商品(发货/核销/改库存/退款) 2. 观察 | 非本服务商资源操作被拒;核销码校验防冒用;跨商户数据隔离 | 活动管理 | — |
 | TC-S-08-P | SC-S-08 | 对账 | 服务商 | P1 | 权限 | 账期到 | 1. 操作非本服务商订单/商品(发货/核销/改库存/退款) 2. 观察 | 非本服务商资源操作被拒;核销码校验防冒用;跨商户数据隔离 | 结算 | — |
+
+### 本轮扩展权限流(派生自新增场景)
+| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
+|---|---|---|---|---|---|---|---|---|---|---|
+| TC-S-9-P | S-9 | 服务商集成/解析中台 | 服务商 | P1 | 权限 | 已登录(默认 服务商);相关前置数据就绪 | 1. 访问非本商户资源(商品/订单/库存/结算) 2. 观察拦截 | 非本商户资源隔离,跨商户访问 403 | 服务商集成/解析中台 | — |
+| TC-S-10-P | S-10 | 食谱库 | 服务商 | P1 | 权限 | 已登录(默认 服务商);相关前置数据就绪 | 1. 访问非本商户资源(商品/订单/库存/结算) 2. 观察拦截 | 非本商户资源隔离,跨商户访问 403 | 食谱库 | — |
+| TC-S-11-P | S-11 | 合规 | 服务商 | P1 | 权限 | 已登录(默认 服务商);相关前置数据就绪 | 1. 访问非本商户资源(商品/订单/库存/结算) 2. 观察拦截 | 非本商户资源隔离,跨商户访问 403 | 合规 | — |

+ 1 - 1
tests/user-scenarios/README.md

@@ -3,7 +3,7 @@
 > 本目录从**真实用户视角**描述产品「怎么被使用」,是 `test-cases/` 的上游输入。
 > 每个场景遵循格式:**用户故事(作为 X,我想 Y,以便 Z)→ 前置条件 → 主流程 → 异常/边界 → 关联需求/设计 → 关联用例**。
 
-> **📌 测试用例划分口径(权威)**:测试用例以「**角色场景**」为一级维度组织。先读 [`应用场景总览.md`](./应用场景总览.md)——它按「角色 × 业务域」给出全部 **151 个应用场景**(稳定编号 `SC-角色-NN`),并规定每个场景派生 3 类用例(正常流/异常流/权限流)、编号回链与优先级映射。本文 01~06 是各角色的完整叙事细节,总览是上层目录与追溯矩阵。
+> **📌 测试用例划分口径(权威)**:测试用例以「**角色场景**」为一级维度组织。先读 [`应用场景总览.md`](./应用场景总览.md)——它按「角色 × 业务域」给出全部 **201 个应用场景**(稳定编号 `SC-角色-NN`,其中本轮新增 SC-G-11~12 / SC-P-67~86 / SC-C-19~23 / SC-T-23~29 / SC-A-16~22 / SC-S-09~11 / SC-X-13~18),并规定每个场景派生 3 类用例(正常流/异常流/权限流)、编号回链与优先级映射。本文 01~06 是各角色的完整叙事细节,总览是上层目录与追溯矩阵。
 
 ## 角色与场景索引
 

+ 94 - 23
tests/user-scenarios/应用场景总览.md

@@ -12,14 +12,14 @@
 
 | 角色 | 角色标签 | 业务域 | 场景数 |
 |------|----------|--------|--------|
-| 游客 | `guest` | 进入 / 登录注册 / 浏览转化 / 权限边界 / 环境 | 10 |
-| 家长 | `parent` | 家庭成员 / 任务激励 / 五维能量健康 / 报告闭环 / 饮食食谱 / 测评规划价值链 / 商城会员 / 联系人 / 设置 | 66 |
-| 孩子(不能登录用户视角) | `child` | 孩子端登录 / 任务游戏 / 心愿 / 只读报告 / 方案打卡 / 勋章 / 成长 | 18 |
-| 成长规划师 | `teacher` | 登录切换 / 绑定家庭 / 代传报告 / 方案审核激活 / 测评录入 / 成长计划套餐 / DAN | 22 |
-| 平台运营 | `admin` | 登录统计 / 报告解析中台 / 文章审核 / 配置CRUD / 知识库 / 迁移校验 / 监控 | 15 |
-| 商品服务商 | `vendor` | 入驻 / 商品 / 订单履约 / 售后 | 8 |
-| 跨角色 | `cross` | 测评全链路 / 报告闭环 / 双角色隔离 / 商城履约 / 消息通知 | 12 |
-| **合计** | | | **151** |
+| 游客 | `guest` | 进入 / 登录注册 / 浏览转化 / 权限边界 / 环境 / 协议 / H5 兜底 | 12 |
+| 家长 | `parent` | 家庭成员 / 任务激励 / 五维能量健康 / 报告闭环 / 饮食食谱 / 测评规划价值链 / 商城会员 / 联系人 / 设置 / 报告代传 / 精准营养 / 账号数据主权 / 营销活动 / 交易延伸 / 多端 | 86 |
+| 孩子(不能登录用户视角) | `child` | 孩子端登录 / 任务游戏 / 心愿 / 只读报告 / 方案打卡 / 勋章 / 成长 / 消息 / 档案导出 / 舌诊自拍 / 商城兑换 / 反馈 | 23 |
+| 成长规划师 | `teacher` | 登录切换 / 绑定家庭 / 代传报告 / 方案审核激活 / 测评录入 / 成长计划套餐 / DAN / 解绑重分配 / 舌诊 / 精准营养 / 家庭天盘 / 内容安全 / 导出 | 29 |
+| 平台运营 | `admin` | 登录统计 / 报告解析中台 / 文章审核 / 配置CRUD / 知识库 / 迁移校验 / 监控 / 报告自学习 / 优惠券活动 / 内容安全队列 / 注销导出工单 / 限流 / 模型 / 精准营养知识库 | 22 |
+| 商品服务商 | `vendor` | 入驻 / 商品 / 订单履约 / 售后 / 解析接入 / 食谱供给 / 合规 | 11 |
+| 跨角色 | `cross` | 测评全链路 / 报告闭环 / 双角色隔离 / 商城履约 / 消息通知 / 代传 / 解绑 / 注销 / 并发 / 会话 / 推送 | 18 |
+| **合计** | | | **201** |
 
 ---
 
@@ -38,7 +38,10 @@
 - **SC-G-09 · 退出登录** — 目标:安全退出。流程:个人中心 → 退出 → 清 token 回登录页。边界:退出后本地缓存敏感数据清除。模块:`AuthController`。
 - **SC-G-10 · 账号不存在引导注册** — 目标:新用户顺畅注册。流程:登录失败提示「未注册」→ 引导注册流程。边界:已注册账号不重复建档。模块:`AuthController`。
 
-**派生用例**:`test-cases/guest.md` TC-G-01~10(已覆盖 SC-G-01~10)。
+- **SC-G-11 · 隐私政策/用户协议查看** — 目标:合规告知。流程:进入 → 查看协议全文 → 同意/返回。边界:未同意不可进入注册/核心流程。模块:协议页/`AgreementController`。
+- **SC-G-12 · 非微信环境 H5 兜底** — 目标:非微信浏览器打开小程序链接。流程:H5 打开 → 环境探测 → 提示在微信内打开或降级静态页。边界:探测失败给出明确引导。模块:`config.js`。
+
+**派生用例**:`test-cases/guest.md` TC-G-01~12(已覆盖 SC-G-01~12)。
 
 ---
 
@@ -134,7 +137,39 @@
 - **SC-P-65 · 消息通知/提醒设置** — 目标:控制推送。流程:设通知开关/提醒时间。边界:关闭后仍保关键安全通知。模块:消息服务。
 - **SC-P-66 · 隐私设置** — 目标:保护数据。流程:设数据共享范围。边界:最小权限保底。模块:隐私设置。
 
-**派生用例**:`test-cases/parent.md` TC-P-01~66(已覆盖 SC-P-01~66;SC-P-20/36/38/40/44/46/49 等含深挖项见 `deep-dive-assessment-appointment.md` TC-DV-01~10)。
+### 业务域 I:报告代传 / 精准营养 / 新健康入口
+
+- **SC-P-67 · 报告代传(家长替孩子/他人代传)⭐** — 目标:无报告原件时由他人代传。流程:发起代传邀请 → 对方上传 PDF → 关联孩子档案解析入库。边界:代传需授权令牌;越权代传他人孩子被拒;代传报告归属校验。模块:报告代传/`report-proxy`。
+- **SC-P-68 · 家庭天盘查看(全家聚合视图)** — 目标:一眼看全家健康/能量。流程:打开家庭天盘 → 聚合展示成员能量/报告/方案。边界:数据缺失降级展示;仅本家庭成员可见。模块:家庭天盘。
+- **SC-P-69 · 精准营养目标设定** — 目标:设定每日营养/热量目标。流程:设目标(热量/宏量营养素)→ 保存 → 影响食谱推荐。边界:目标非法(负/超上限)拦截。模块:精准营养。
+- **SC-P-70 · 舌诊/情绪照片采集** — 目标:上传舌苔照辅助评估。流程:拍照/上传 → 识别情绪标签 → 关联测评。边界:非照片/模糊拒绝;隐私标注不外露。模块:舌诊情绪识别。
+
+### 业务域 J:账号与数据主权
+
+- **SC-P-71 · 账号注销(家长注销自身)** — 目标:注销账号。流程:申请 → 身份验证 → 冷静期 → 数据归档/删除。边界:有进行中订单/未结清拦截;注销后不可登录。模块:`AuthController`。
+- **SC-P-72 · 个人/家庭数据导出(GDPR)** — 目标:下载本人数据。流程:申请导出 → 生成加密包 → 下载。边界:敏感字段脱敏;频次限制;越权导出被拒。模块:数据导出(GDPR)。
+- **SC-P-73 · 多孩子切换孩子上下文** — 目标:多孩子家庭切换。流程:选孩子 → 任务/报告/方案上下文切换。边界:仅本家庭孩子可选;当前孩子态隔离。模块:家庭/成员。
+- **SC-P-74 · 解绑/重新分配规划师** — 目标:更换服务规划师。流程:解绑 → 重选 → 绑定。边界:解绑前处理在途方案/预约;非本家庭规划师拒。模块:规划师绑定。
+
+### 业务域 K:营销 / 活动 / 优惠
+
+- **SC-P-75 · 优惠券领取(活动/分享)** — 目标:得券。流程:领券 → 入卡包。边界:库存为0/已领拦截;重复领幂等。模块:优惠券。
+- **SC-P-76 · 活动报名(名额/并发)⭐** — 目标:报名平台活动。流程:报名 → 占名额 → 确认。边界:**并发超卖拦截(CFC 真实 bug 已修)**;名额满拒;重复报名幂等。模块:活动管理。
+- **SC-P-77 · 活动打卡/助力(营销)** — 目标:参与打卡/裂变。流程:打卡 → 进度累计 → 助力。边界:重复打卡幂等;刷量/机器行为拦截。模块:活动。
+- **SC-P-78 · 消息中心/通知查看** — 目标:看系统/任务/方案提醒。流程:打开消息中心 → 列表/已读。边界:越权消息不可见;分页。模块:消息服务。
+- **SC-P-79 · 推送/通知开关设置** — 目标:控制接收。流程:设开关/提醒时间。边界:关键安全通知不可关闭。模块:消息服务。
+
+### 业务域 L:交易延伸 / 内容 / 多端
+
+- **SC-P-80 · 订阅/会员退款与发票** — 目标:退会员/开发票。流程:申请退 → 校验 → 退款/开票。边界:已消费不退;重复退拦截;发票信息校验。模块:会员/订单。
+- **SC-P-81 · 方案/任务草稿保存与恢复** — 目标:暂存未完。流程:存草稿 → 恢复继续。边界:草稿有效期;恢复冲突提示。模块:方案/任务。
+- **SC-P-82 · 全局搜索(报告/方案/任务/商品)** — 目标:快速定位。流程:搜 → 结果按类型分流。边界:越权结果过滤;空结果不报错。模块:搜索。
+- **SC-P-83 · 意见反馈/在线客服** — 目标:提反馈。流程:提交反馈/接入客服。边界:敏感信息脱敏;附件大小限制。模块:客服。
+- **SC-P-84 · 分享报告/方案给家人或规划师** — 目标:共享。流程:生成分享链接 → 对方查看。边界:链接失效/权限校验;越权分享被拒。模块:分享。
+- **SC-P-85 · 多端登录/会话互斥** — 目标:同账号多设备。流程:新设备登录 → 旧设备踢下线/二次验证。边界:异常设备风控;退出清 token。模块:`AuthController`。
+- **SC-P-86 · 成长打卡榜/家庭排行** — 目标:激励。流程:看榜 → 排名/进度。边界:数据仅本家庭可见;排名实时性。模块:勋章/排行。
+
+**派生用例**:`test-cases/parent.md` TC-P-01~86(已覆盖 SC-P-01~86;SC-P-20/36/38/40/44/46/49/67/76 等含深挖项见 `deep-dive-assessment-appointment.md` TC-DV-01~10)。
 
 ---
 
@@ -159,7 +194,13 @@
 - **SC-C-17 · 退出登录** — 目标:安全退出。流程:退出 → 清 token。边界:退出清缓存。模块:`AuthController`。
 - **SC-C-18 · 设备/账号绑定校验** — 目标:防冒用。流程:登录设备校验。边界:异常设备二次验证。模块:`AuthController`。
 
-**派生用例**:`test-cases/child.md` TC-C-01~18(已覆盖 SC-C-01~18)。
+- **SC-C-19 · 查看家人/规划师消息通知** — 目标:收通知。流程:消息列表 → 已读。边界:越权消息不可见。模块:消息服务。
+- **SC-C-20 · 成长档案查看/家长代导出** — 目标:看自己档案。流程:档案页 → 只读;导出需家长。边界:未成年人导出受限,需家长代办。模块:`GrowthController`。
+- **SC-C-21 · 舌诊/情绪自拍采集(孩子端)** — 目标:拍照上传。流程:拍照 → 上传 → 识别。边界:模糊/非照片拒绝;隐私标注。模块:舌诊情绪识别。
+- **SC-C-22 · 商城浏览/积分兑换(孩子端消费)** — 目标:用积分换。流程:选商品 → 积分兑换。边界:积分不足拦截;重复兑换幂等。模块:`MallController`。
+- **SC-C-23 · 意见反馈(孩子端)** — 目标:提反馈。流程:提交反馈。边界:内容适龄过滤;敏感信息脱敏。模块:客服。
+
+**派生用例**:`test-cases/child.md` TC-C-01~23(已覆盖 SC-C-01~23)。
 
 ---
 
@@ -188,7 +229,15 @@
 - **SC-T-21 · 报告对比分析** — 目标:看客户变化。流程:多报告对比 → 差异标注。边界:报告类型一致才可比对。模块:报告管理。
 - **SC-T-22 · 方案归档** — 目标:结束方案。流程:方案完成 → 归档。边界:归档后只读。模块:方案管理。
 
-**派生用例**:`test-cases/teacher.md` TC-T-01~22(已覆盖 SC-T-01~22;SC-T-05/07/09/11 含深挖项)。
+- **SC-T-23 · 报告代传(规划师代客户传)⭐** — 目标:帮客户上传。流程:上传 PDF+选孩子 → 解析 → 关联孩子档案。边界:非绑定家庭拒;识别失败进草稿。模块:报告代传/`report-proxy`。
+- **SC-T-24 · 解绑/重分配客户家庭** — 目标:更换绑定。流程:解绑 → 重绑新家庭。边界:在途方案/预约处理;非绑定家庭不可操作。模块:规划师绑定。
+- **SC-T-25 · 舌诊/情绪测评录入(规划师)** — 目标:录入识别结果。流程:上传/录入 → 关联报告。边界:识别失败回退人工。模块:舌诊情绪识别。
+- **SC-T-26 · 精准营养方案制定** — 目标:基于营养目标出方案。流程:设目标 → 生成方案。边界:目标非法拦截。模块:精准营养。
+- **SC-T-27 · 家庭天盘解读(规划师)** — 目标:给家庭看聚合视图并解读。流程:打开天盘 → 解读。边界:仅绑定家庭可见。模块:家庭天盘。
+- **SC-T-28 · AI 方案内容安全复核** — 目标:复核 AI 敏感内容。流程:AI 生成 → 敏感词/合规检查 → 放行/驳回。边界:命中即拦截。模块:内容安全。
+- **SC-T-29 · 客户档案数据导出(合规)** — 目标:导出客户数据。流程:申请 → 生成包 → 下载。边界:授权/脱敏;越权拒。模块:数据导出(GDPR)。
+
+**派生用例**:`test-cases/teacher.md` TC-T-01~29(已覆盖 SC-T-01~29;SC-T-05/07/09/11/23 含深挖项)。
 
 ---
 
@@ -210,7 +259,15 @@
 - **SC-A-14 · 系统监控/告警** — 目标:保障可用。流程:看监控 → 告警处理。边界:误报确认消除。模块:监控。
 - **SC-A-15 · 操作审计日志** — 目标:可追溯。流程:查审计日志 → 溯源。边界:日志不可篡改。模块:审计。
 
-**派生用例**:`test-cases/admin.md` TC-A-01~16(已覆盖 SC-A-01~15,超覆盖 1 条)。
+- **SC-A-16 · 报告解析自学习/未知类型标注** — 目标:标注未知聚类。流程:看未知类型 → 标类别 → 生效。边界:新类先注册再解析。模块:`/api/admin/report-parser/*`。
+- **SC-A-17 · 优惠券/活动配置管理** — 目标:后台配券建活动。流程:建券/活动 → 设规则/名额 → 上线。边界:时间冲突校验;名额超卖配置保护。模块:优惠券/活动管理。
+- **SC-A-18 · 内容安全审核队列** — 目标:审 UGC/AI。流程:队列 → 通过/下架。边界:敏感词命中拦截。模块:内容安全。
+- **SC-A-19 · 账号注销/数据导出工单处理** — 目标:处理用户注销/导出。流程:接工单 → 执行归档/导出。边界:审计留痕;冷静期。模块:GDPR 工单。
+- **SC-A-20 · 限流/熔断配置** — 目标:接口防护。流程:配限流规则 → 生效。边界:误杀白名单。模块:网关/限流。
+- **SC-A-21 · 舌诊/情绪模型管理** — 目标:模型版本/开关。流程:版控/上下线。边界:下线前回退方案。模块:模型管理。
+- **SC-A-22 · 精准营养知识库管理** — 目标:维护营养知识。流程:CRUD → 同步。边界:同步失败重试。模块:知识库。
+
+**派生用例**:`test-cases/admin.md` TC-A-01~23(已覆盖 SC-A-01~22,超覆盖 1 条)。
 
 ---
 
@@ -225,7 +282,11 @@
 - **SC-S-07 · 营销活动报名** — 目标:参与平台活动。流程:报名活动 → 商品打标。边界:活动失效不可报。模块:活动管理。
 - **SC-S-08 · 对账/结算** — 目标:核对收入。流程:看账单 → 结算。边界:账期正确。模块:结算。
 
-**派生用例**:`test-cases/vendor.md` TC-S-01~08(已覆盖 SC-S-01~08)。
+- **SC-S-09 · 报告解析服务接入(对接解析中台)** — 目标:提供解析能力。流程:接中台 → 自测。边界:跨商户隔离;鉴权。模块:服务商集成/解析中台。
+- **SC-S-10 · 营养/食谱数据供给** — 目标:供食谱数据。流程:上架食谱 → 同步。边界:数据合规;格式校验。模块:食谱库。
+- **SC-S-11 · 数据导出合规(授权使用)** — 目标:授权内用数。流程:申请授权 → 取数。边界:越授权拒;脱敏。模块:合规。
+
+**派生用例**:`test-cases/vendor.md` TC-S-01~11(已覆盖 SC-S-01~11)。
 
 ---
 
@@ -244,7 +305,14 @@
 - **SC-X-11 · 消息通知闭环** — 目标:跨角色触达。流程:规划师发消息 → 家长/孩子收 → 已读。边界:免打扰生效。模块:消息全栈。
 - **SC-X-12 · 会员权益闭环** — 目标:购买到解锁。流程:家长购会员 → 权益生效 → AI 方案/高级报告解锁。边界:过期回收。模块:会员全栈。
 
-**派生用例**:`test-cases/cross-role-e2e.md` TC-X-01~12(已覆盖 SC-X-01~12)。
+- **SC-X-13 · 报告代传跨角色闭环** — 目标:代传贯通。流程:发起代传 → 对方上传 → 孩子档案更新。边界:授权校验;越权代传拒。模块:报告代传。
+- **SC-X-14 · 解绑/重分配跨角色协同** — 目标:解绑一致。流程:家长解绑 ↔ 规划师侧更新。边界:在途数据交接;状态同步。模块:规划师绑定。
+- **SC-X-15 · 注销/数据导出跨角色** — 目标:注销贯通。流程:家长申请 → 运营处理 → 规划师档案解绑。边界:审计;冷静期。模块:GDPR 工单。
+- **SC-X-16 · 活动名额并发 E2E ⭐** — 目标:并发报名。流程:多家长同时报名抢名额。边界:**并发超卖拦截(真实 bug)**。模块:活动管理。
+- **SC-X-17 · 多端登录会话互斥跨端** — 目标:会话安全。流程:A 端登录 → B 端被踢/验证。边界:异常设备风控。模块:`AuthController`。
+- **SC-X-18 · 推送跨端送达** — 目标:提醒触达。流程:家长设提醒 → 孩子端收到。边界:免打扰生效。模块:消息服务。
+
+**派生用例**:`test-cases/cross-role-e2e.md` TC-X-01~18(已覆盖 SC-X-01~18)。
 
 ---
 
@@ -260,6 +328,7 @@
    - **P0**:SC-P-01/03/10/11/13/20/36/38/40/44/46/49、SC-T-03/05/07/09/11、SC-X-01/02/03/06
    - **P1**:SC-P-17/21/23/26/27/31/32/33/34/35/37/39/41/42/43/45/47/52~60、SC-C-02/05/07/09、SC-T-01/02/04/06/08/12/13、SC-A-01/03/08/10、SC-S-02/03/04、SC-X-04/05/07/08/09/12
    - **P2**:其余游客/配置/设置类(SC-G-*、SC-P-02/05/06/08/09/19/50/51/61~66、SC-C-01/03/04/06/08/10~18、SC-T-14~22、SC-A-02/04/05/06/07/09/11~15、SC-S-01/05~08、SC-X-10/11)
+   - **新增(本轮 +50)**:SC-G-11/12、SC-P-67~86、SC-C-19~23、SC-T-23~29、SC-A-16~22、SC-S-09~11、SC-X-13~18 已纳入;P0 含 SC-P-67 报告代传 / SC-P-76 活动并发名额 / SC-X-16 并发 E2E,其余默认 P1(设置/协议类为 P2)。
 5. **自动化对齐**:`tests/e2e/` 按角色分包(`e2e/roles/admin|child|parent|teacher`)与 API 层(`e2e/api/*`)对齐本表;DOM 层用例因 CFC-ENV-001 环境阻塞先标记未完成。
 
 ---
@@ -268,15 +337,17 @@
 
 | 角色 | 场景数 | 文档化用例(TC) 现状 | 状态 |
 |------|--------|---------------------|------|
-| 游客 | 10 | 10(TC-G-01~10) | ✅ 已覆盖 SC-G-01~10 |
-| 家长 | 66 | 66(TC-P-01~66) | ✅ 已覆盖(含价值链 SC-P-20/27/31~49) |
-| 孩子 | 18 | 18(TC-C-01~18) | ✅ 已覆盖 SC-C-01~18 |
-| 规划师 | 22 | 22(TC-T-01~22) | ✅ 已覆盖(含 SC-T-05/07/09/11 深挖项) |
-| 运营 | 15 | 16(TC-A-01~16,超覆盖) | ✅ 已覆盖(多 1 条) |
-| 服务商 | 8 | 8(TC-S-01~08) | ✅ 已覆盖 SC-S-01~08 |
-| 跨角色 | 12 | 12(TC-X-01~12) | ✅ 已覆盖 SC-X-01~12 |
-| **合计** | **151** | **152** | ✅ 文档化用例已对齐全部 151 个场景 |
+| 游客 | 12 | 12(TC-G-01~12) | ✅ 已覆盖 SC-G-01~12 |
+| 家长 | 86 | 86(TC-P-01~86) | ✅ 已覆盖(含价值链 SC-P-20/27/31~49/67/76) |
+| 孩子 | 23 | 23(TC-C-01~23) | ✅ 已覆盖 SC-C-01~23 |
+| 规划师 | 29 | 29(TC-T-01~29) | ✅ 已覆盖(含 SC-T-05/07/09/11/23 深挖项) |
+| 运营 | 22 | 23(TC-A-01~23,超覆盖 1 条) | ✅ 已覆盖(多 1 条) |
+| 服务商 | 11 | 11(TC-S-01~11) | ✅ 已覆盖 SC-S-01~11 |
+| 跨角色 | 18 | 18(TC-X-01~18) | ✅ 已覆盖 SC-X-01~18 |
+| **合计** | **201** | **202(正常流)×3 流 = 606** | ✅ 文档化用例已对齐全部 201 个场景(每个含正常/异常/权限三类) |
 
 > 统计口径:文档化用例来自 `../test-cases/*.md` 的 `TC-` 编号去重;自动化来自 `../e2e/**/*.spec.js` 的 `test()` 计数。详见巡检脚本 `run_interface_tests_cron.sh` 的「测试用例完成情况」检查。
 >
 > **缺口已补齐**:以本总览的 `SC-角色-NN` 为锚点,已新增约 81 条 TC(TC-G-06~10 / TC-P-19~66 / TC-C-10~18 / TC-T-13~22 / TC-S-04~08 / TC-X-09~12),现**每个 `SC-角色-NN` 均至少有 1 条用例**(多数含正常/异常/权限三类)。文档化用例层已无"场景无用例"缺口;DOM 层自动化缺口(CFC-ENV-001 远程无 SPA 前端)仍独立于本表存在,属环境限制而非用例缺失。
+
+> **本轮扩展(+50 场景)**:新增 SC-G-11~12、SC-P-67~86、SC-C-19~23、SC-T-23~29、SC-A-16~22、SC-S-09~11、SC-X-13~18,补齐此前"有文档无场景"的真实功能(报告代传 / 家庭天盘 / 精准营养 / 舌诊情绪 / 账号注销·数据导出·解绑 / 活动并发名额 / 消息推送 / 分享 / 多端会话 等),并同步生成异常流与权限流用例,场景总数由 151 升至 201。