|
|
@@ -32,3 +32,201 @@
|
|
|
- **TC-P-09b(功能·额度,来自深挖 F-修正)**:`create` 前置为「有效额度」——无额度/额度过期 → `POST /api/assessment/appointment/create` 返回「额度不足或已过期」,不建预约、不发放能量(见 `test-cases/deep-dive-assessment-appointment.md` TC-DV-03/10)。
|
|
|
- **TC-P-09c(异常·幂等,来自深挖 F4)**:同一 `quotaId+memberId` 重复提交 `create` → 当前会建 2 条预约并发 2 次能量【缺陷】,期望拒绝/返回既有(TC-DV-04)。
|
|
|
- **关联深挖**:测评预约模块的越权取消(F1)、确认状态守卫(F2)、状态机入口(F3)、并发额度(F7) 等全部缺陷与专项用例见 `test-cases/deep-dive-assessment-appointment.md`。
|
|
|
+
|
|
|
+## 补齐用例(缺口场景 SC-P-19~66)
|
|
|
+
|
|
|
+| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
|
|
|
+|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
+| TC-P-19 | SC-P-19 | 能量配置 | 家长 | P2 | 功能 | 进入能量页 | 1. 查看五维定义与权重说明 | 显示身/心/智/行/富口径与权重;配置未同步展示兜底说明 | 维度配置 | — |
|
|
|
+| TC-P-20 | SC-P-20 | 健康报告 | 家长 | P0 | 功能 | 持有募极生物 PDF | 1. 上传 PDF 2. 三阶段:上传→解析预览→确认入库 | 识别 gut_flora;解析预览→确认入库;非募极报告提示「请确认是募极生物肠道菌群报告」 | 报告解析中台/`POST /api/media/upload` | `e2e/dan-report-flow.spec.js` |
|
|
|
+| TC-P-21 | SC-P-21 | 报告解析 | 家长 | P1 | 功能 | 多类型报告 | 1. 上传→系统自动匹配类型 | 匹配已注册类型;未知类型进未知聚类待运营自学习 | `/api/admin/report-parser/types` | — |
|
|
|
+| TC-P-22 | SC-P-22 | 报告预览 | 家长 | P1 | 功能 | 报告已解析 | 1. 查看菌群健康分/平衡/多样性/菌种明细/疾病风险预览 | 预览数据完整;异常数据提示不入库 | 解析中台 | — |
|
|
|
+| TC-P-23 | SC-P-23 | 报告入库 | 家长 | P1 | 功能 | 解析预览完成 | 1. 点确认→报告进档案→七维刷新 | 确认前可取消不入库;确认后七维刷新 | 解析中台 | — |
|
|
|
+| TC-P-24 | SC-P-24 | 报告管理 | 家长 | P1 | 功能 | 多份报告 | 1. 报告列表→查看/删除/对比 | 删除有关联方案时提示;对比展示差异 | 报告管理 | — |
|
|
|
+| TC-P-25 | SC-P-25 | 报告趋势 | 家长 | P1 | 功能 | ≥2 同类型报告 | 1. 时间序列→趋势图 | 单报告无趋势提示;时间轴正确 | 成长/报告 | — |
|
|
|
+| TC-P-26 | SC-P-26 | 饮食推荐 | 家长 | P1 | 功能 | SC-P-20 已入库 | 1. 身→饮食推荐→生成可吃/慎吃清单 | 按菌群生成;无报告无推荐 | 饮食推荐系统 | — |
|
|
|
+| TC-P-27 | SC-P-27 | 家庭食谱 | 家长 | P1 | 功能 | 菌群报告+营养目标 | 1. 生成早/午/晚食谱(食材/用量/禁忌标注) | 无报告降级通用食谱;忌口/过敏自动排除 | 饮食推荐/家庭食谱 | — |
|
|
|
+| TC-P-28 | SC-P-28 | 食谱筛选 | 家长 | P2 | 功能 | 已生成食谱 | 1. 设忌口/过敏→食谱重算排除项 | 忌口冲突时提示;重算生效 | 饮食推荐 | — |
|
|
|
+| TC-P-29 | SC-P-29 | 食谱收藏 | 家长 | P2 | 功能 | 已生成食谱 | 1. 收藏→手动微调(替换食材) | 调整不破坏营养目标;收藏持久化 | 饮食推荐 | — |
|
|
|
+| TC-P-30 | SC-P-30 | 食谱营养 | 家长 | P2 | 功能 | 食谱+营养目标 | 1. 查看营养合计 vs 目标 | 超标/不足提示 | 饮食推荐 | — |
|
|
|
+| TC-P-31 | SC-P-31 | 测评类型 | 家长 | P1 | 功能 | 进入测评页 | 1. 列 DAN 8 类(mind/wisdom/cognition/learning/behavior/career/campus/adolescent) | 类目来自后端字典;展示完整 8 类 | `DanAssessmentController` | — |
|
|
|
+| TC-P-32 | SC-P-32 | 测评规划师 | 家长 | P1 | 功能 | 已绑定规划师 | 1. 测评选规划师→绑定 T 列表 | 未绑定规划师提示先绑定 | 测评订单 | — |
|
|
|
+| TC-P-33 | SC-P-33 | 测评下单 | 家长 | P1 | 功能 | 套餐可见 | 1. 选套餐→生成 `AssessmentOrder`(pending) | 套餐下架不可下单;生成待支付订单 | `AssessmentOrder` | `e2e/assessment-order-flow.spec.js` |
|
|
|
+| TC-P-34 | SC-P-34 | 测评支付 | 家长 | P1 | 接口 | pending 订单 | 1. 支付→pending→paid→生成额度 | 支付失败回滚不生成额度 | 支付/`AssessmentQuota` | — |
|
|
|
+| TC-P-35 | SC-P-35 | 测评额度 | 家长 | P1 | 功能 | 支付成功 | 1. 查额度到账(含有效期) | 额度过期不可用于预约;展示有效期 | `AssessmentQuota` | — |
|
|
|
+| TC-P-36 | SC-P-36 | 测评预约 | 家长 | P0 | 接口 | 有效额度 | 1. `POST /api/assessment/appointment/create` | 先扣一条额度→落预约;额度不足/过期直接报错不落预约 | `AssessmentAppointmentController` | `e2e/assessment-order-flow.spec.js` |
|
|
|
+| TC-P-37 | SC-P-37 | 预约状态 | 家长 | P1 | 功能 | 已有预约 | 1. 预约列表→状态(待确认/已确认/已完成/已取消/未到) | 状态准确;状态机守卫 | `AssessmentAppointmentController` | — |
|
|
|
+| TC-P-38 | SC-P-38 | 预约取消 | 家长 | P0 | 权限 | 已有预约 | 1. 取消→状态变更 2. 非本人/非绑定规划师取消 | 非归属取消被拒(CFC-AP 取消越权);取消不退款逻辑 | `AssessmentAppointmentController` | — |
|
|
|
+| TC-P-39 | SC-P-39 | DAN报告 | 家长 | P1 | 功能 | 结果已录入 | 1. 结果页→八类报告展示 | 结果未录入不展示;量纲标注 | `DanAssessmentResultDTO` | — |
|
|
|
+| TC-P-40 | SC-P-40 | AI方案 | 家长 | P0 | 功能 | 孩子 B+目标;部分需会员 | 1. 选 B+目标→LangGraph 生成 overview+三板块 | 未购会员提示购买;AI 超时 `AiGateway` Fallback 不 500 | `AIChatController`/`AiGateway` | `e2e/ai-plan-task-flow.spec.js` |
|
|
|
+| TC-P-41 | SC-P-41 | 方案迭代 | 家长 | P1 | 功能 | 方案已生成 | 1. 逐板块重新生成/确认 | 重生成不丢其他板块 | `AIChatController` | — |
|
|
|
+| TC-P-42 | SC-P-42 | 方案编辑 | 家长 | P1 | 功能 | 方案已生成 | 1. 编辑方案文本/任务项 | 编辑后状态标记已改 | 方案管理 | — |
|
|
|
+| TC-P-43 | SC-P-43 | 方案查看 | 家长 | P1 | 功能 | 方案存在 | 1. 方案详情→看板块/任务 | 空方案不白屏 | 方案管理 | — |
|
|
|
+| TC-P-44 | SC-P-44 | 方案确认 | 家长 | P0 | 功能 | 方案 generated | 1. 家长确认/提交规划师审核→generated→reviewed | 未确认不可激活;确认幂等 | 方案状态机 | — |
|
|
|
+| TC-P-45 | SC-P-45 | 方案发布 | 家长 | P1 | 功能 | 配置允许 | 1. 确认即发布 active | 需审核配置时走审核流 | 方案管理 | — |
|
|
|
+| TC-P-46 | SC-P-46 | 方案激活 | 家长 | P0 | 功能 | reviewed 方案 | 1. 激活 reviewed→active→生成引导+模板任务 | 已激活再激活不重复(幂等靠状态机);失败回滚不残半任务 | 方案激活任务分解 | `e2e/ai-plan-task-flow.spec.js` |
|
|
|
+| TC-P-47 | SC-P-47 | 方案任务 | 家长 | P1 | 功能 | 方案 active | 1. 方案→关联任务列表(状态/进度) | 任务增删与方案同步 | `GrowthPlanController` | — |
|
|
|
+| TC-P-48 | SC-P-48 | 方案版本 | 家长 | P2 | 功能 | 多版本方案 | 1. 看版本列表→对比 | 版本不可篡改 | 方案管理 | — |
|
|
|
+| TC-P-49 | SC-P-49 | AI对话 | 家长 | P1 | 功能 | 已登录 | 1. `POST /api/ai/health-coach/send` 多轮 | 基于知识库回答;LangGraph 不可用 Fallback;多轮连续 | `AIChatController` | — |
|
|
|
+| TC-P-50 | SC-P-50 | 成长记录 | 家长 | P1 | 功能 | 有成长数据 | 1. 成长记录页→时间线(任务/测评/报告/打卡) | 数据缺失项跳过不报错 | `GrowthController` | — |
|
|
|
+| TC-P-51 | SC-P-51 | 成长里程碑 | 家长 | P2 | 功能 | 有成长数据 | 1. 标/查里程碑→时间线高亮 | 重复标幂等 | `GrowthController` | — |
|
|
|
+| TC-P-52 | SC-P-52 | 商城浏览 | 家长 | P1 | 功能 | 进入商城 | 1. 商城列表/搜索/分类 | 下架商品不展示 | `MallController`/`danshop` | `e2e/product-purchase.spec.js` |
|
|
|
+| TC-P-53 | SC-P-53 | 商品详情 | 家长 | P1 | 功能 | 商品存在 | 1. 详情页(描述/价格/库存) | 库存为 0 提示 | `MallController` | — |
|
|
|
+| TC-P-54 | SC-P-54 | 商城下单 | 家长 | P1 | 功能 | 商品可购 | 1. 加购→结算→生成订单 | 库存不足拦截;重复下单幂等 | `MallController` | — |
|
|
|
+| TC-P-55 | SC-P-55 | 订单支付 | 家长 | P1 | 接口 | 待支付订单 | 1. 支付→订单 paid | 支付失败回滚 | 支付 | — |
|
|
|
+| TC-P-56 | SC-P-56 | 订单退款 | 家长 | P1 | 功能 | 已有订单 | 1. 订单列表→详情/申请退款 | 已发货退款规则;重复退款拦截 | 订单服务 | — |
|
|
|
+| TC-P-57 | SC-P-57 | 优惠券 | 家长 | P1 | 功能 | 有可用券 | 1. 选券→结算抵扣 | 券过期/不满足门槛不可用 | 优惠券 | — |
|
|
|
+| TC-P-58 | SC-P-58 | 会员购买 | 家长 | P1 | 功能 | 未购会员 | 1. 选档位→支付→权益生效 | 支付失败回滚;重复购买幂等 | `MemberController` | `e2e/../membership` |
|
|
|
+| TC-P-59 | SC-P-59 | 会员权益 | 家长 | P1 | 功能 | 已购会员 | 1. 会员页→权益列表/有效期 | 权益随档位变化 | `MemberController` | — |
|
|
|
+| TC-P-60 | SC-P-60 | 会员续费 | 家长 | P2 | 功能 | 会员将到期 | 1. 续费→延期 | 续费叠加计算正确 | `MemberController` | — |
|
|
|
+| TC-P-61 | SC-P-61 | 联系人 | 家长 | P1 | 功能 | 联系人入口 | 1. 添加联系人(姓名/电话/关系) | 重复号码去重 | `ContactCard`/`contact-detail` | — |
|
|
|
+| TC-P-62 | SC-P-62 | 联系人导入 | 家长 | P2 | 功能 | 联系人存在 | 1. 建分组→导入(`ContactImport`) | 导入格式错误行跳过并报告 | `ContactImport` | — |
|
|
|
+| TC-P-63 | SC-P-63 | 联系人权限 | 家长 | P1 | 权限 | 联系人存在 | 1. 详情→设可见权限 | 越权查看被拒 | `ContactCard` | — |
|
|
|
+| TC-P-64 | SC-P-64 | 个人资料 | 家长 | P1 | 功能 | 已登录 | 1. 编辑昵称/头像/绑定手机 | 手机格式校验;保存生效 | `AuthController` | — |
|
|
|
+| TC-P-65 | SC-P-65 | 通知设置 | 家长 | P2 | 功能 | 已登录 | 1. 设通知开关/提醒时间 | 关闭后仍保关键安全通知 | 消息服务 | — |
|
|
|
+| TC-P-66 | SC-P-66 | 隐私设置 | 家长 | P2 | 功能 | 已登录 | 1. 设数据共享范围 | 最小权限保底 | 隐私设置 | — |
|
|
|
+
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 异常流用例(派生自正常流)
|
|
|
+
|
|
|
+| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
|
|
|
+|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
+| TC-P-01-E | P-1 | 家庭 | 家长 | P2 | 异常 | 已登录(默认 parent) | 1. 输入非法参数/网络中断/请求超时 2. 观察降级 | 系统给出明确错误提示而非 500;关键操作可重试或回滚;不泄露内部堆栈 | `FamilyInviteController` | — |
|
|
|
+| TC-P-02-E | P-2 | 家庭/成员 | 家长 | P2 | 异常 | 家庭已创建;爷爷 C 可用 | 1. 输入非法参数/网络中断/请求超时 2. 观察降级 | 系统给出明确错误提示而非 500;关键操作可重试或回滚;不泄露内部堆栈 | `FamilyInviteController` | — |
|
|
|
+| TC-P-03-E | P-2 | 成员资料 | 家长 | P2 | 异常 | 家庭已创建 | 1. 输入非法格式/重复/越界值 2. 观察校验 | 字段格式校验拦截;重复去重;最小权限保底;保存失败不污染既有数据 | `FamilyMembersController` | — |
|
|
|
+| TC-P-04-E | P-2 | 关系图 | 家长 | P2 | 异常 | 成员 C 已加入 | 1. 重复创建/参数非法/长文超时 2. 观察处理 | 标题/名称重复被拦截;参数非法统一 400 非 500;长文稳定无超时;操作可逆或有确认 | 关系类型 CRUD/前端选择器 | — |
|
|
|
+| TC-P-05-E | P-4 | 任务 | 家长 | P2 | 异常 | 家庭含孩子 B | 1. 重复提交/并发/超期/驳回后重做 2. 观察处理 | 重复提交幂等不重复计分;驳回可重做;超期不可操作;能量不为负、流水可追溯;空态/缺数据降级非 500 | `TaskController` | — |
|
|
|
+| TC-P-06-E | P-4 | 任务审核 | 家长 | P2 | 异常 | B 已提交任务 | 1. 重复提交/并发/超期/驳回后重做 2. 观察处理 | 重复提交幂等不重复计分;驳回可重做;超期不可操作;能量不为负、流水可追溯;空态/缺数据降级非 500 | `TaskController`/`PointsController` | — |
|
|
|
+| TC-P-07-E | P-5 | 心愿 | 家长 | P2 | 异常 | 孩子已创建心愿 | 1. 重复提交/并发/超期/驳回后重做 2. 观察处理 | 重复提交幂等不重复计分;驳回可重做;超期不可操作;能量不为负、流水可追溯;空态/缺数据降级非 500 | `WishController`/`RewardController` | — |
|
|
|
+| TC-P-08-E | P-6 | 能量 | 家长 | P2 | 异常 | 已有能量记录 | 1. 重复提交/并发/超期/驳回后重做 2. 观察处理 | 重复提交幂等不重复计分;驳回可重做;超期不可操作;能量不为负、流水可追溯;空态/缺数据降级非 500 | `EnergyController` | — |
|
|
|
+| TC-P-09-E | P-7 | 测评订单 | 家长 | P2 | 异常 | 已绑定规划师 T;孩子 B 在家庭中 | 1. 模拟支付失败/余额不足/重复提交/负价格负库存 2. 观察回滚与拦截 | 支付失败订单回滚不进入已支付;重复提交幂等;负价格/负库存/参数非法统一 400 拦截;重复核销/退款幂等 | `AssessmentAppointmentController` | — |
|
|
|
+| TC-P-10-E | P-8 | 健康报告 | 家长 | P2 | 异常 | 持有募极生物菌群 PDF | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察系统处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 健康报告上传解析 | — |
|
|
|
+| TC-P-11-E | P-8 | 报告查看 | 家长 | P2 | 异常 | 报告已入库 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察系统处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 报告解析 | — |
|
|
|
+| TC-P-12-E | P-9 | 饮食推荐 | 家长 | P2 | 异常 | P-10 报告已入库 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | 饮食推荐系统 | — |
|
|
|
+| TC-P-13-E | P-10 | AI 方案 | 家长 | P2 | 异常 | 孩子 B 有报告;部分需会员 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | AI 统一走 LangGraph;`AiGateway` | — |
|
|
|
+| TC-P-14-E | P-10 | 方案提交 | 家长 | P2 | 异常 | 方案已生成 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | 方案状态机 | — |
|
|
|
+| TC-P-15-E | P-3 | 双角色 | 家长 | P2 | 异常 | 家庭含孩子 B | 1. 未登录/过期 token/非法切换 2. 观察拦截 | token 过期/缺失统一 401 跳登录;孩子端无切回家长入口;越权切换被拒;模拟登录仅测试环境生效 | `POST /api/family/member/switch`(替代废弃 switch-mode);双角色铁律 | — |
|
|
|
+| TC-P-16-E | P-10 | 会员 | 家长 | P2 | 异常 | 未购会员 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | `MembershipController`/`ProductOrderController` | — |
|
|
|
+| TC-P-17-E | P-12 | 积分/成长 | 家长 | P2 | 异常 | 已有记录 | 1. 重复提交/并发/超期/驳回后重做 2. 观察处理 | 重复提交幂等不重复计分;驳回可重做;超期不可操作;能量不为负、流水可追溯;空态/缺数据降级非 500 | `PointsController`/`GrowthController` | — |
|
|
|
+| TC-P-18-E | P-11 | AI 对话 | 家长 | P2 | 异常 | 已登录 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | `AIChatController`;LangGraph RAG | — |
|
|
|
+| TC-P-19-E | SC-P-19 | 能量配置 | 家长 | P3 | 异常 | 进入能量页 | 1. 重复提交/并发/超期/驳回后重做 2. 观察处理 | 重复提交幂等不重复计分;驳回可重做;超期不可操作;能量不为负、流水可追溯;空态/缺数据降级非 500 | 维度配置 | — |
|
|
|
+| TC-P-20-E | SC-P-20 | 健康报告 | 家长 | P2 | 异常 | 持有募极生物 PDF | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察系统处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 报告解析中台/`POST /api/media/upload` | — |
|
|
|
+| TC-P-21-E | SC-P-21 | 报告解析 | 家长 | P2 | 异常 | 多类型报告 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察系统处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | `/api/admin/report-parser/types` | — |
|
|
|
+| TC-P-22-E | SC-P-22 | 报告预览 | 家长 | P2 | 异常 | 报告已解析 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察系统处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 解析中台 | — |
|
|
|
+| TC-P-23-E | SC-P-23 | 报告入库 | 家长 | P2 | 异常 | 解析预览完成 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察系统处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 解析中台 | — |
|
|
|
+| TC-P-24-E | SC-P-24 | 报告管理 | 家长 | P2 | 异常 | 多份报告 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察系统处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 报告管理 | — |
|
|
|
+| TC-P-25-E | SC-P-25 | 报告趋势 | 家长 | P2 | 异常 | ≥2 同类型报告 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察系统处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | 成长/报告 | — |
|
|
|
+| TC-P-26-E | SC-P-26 | 饮食推荐 | 家长 | P2 | 异常 | SC-P-20 已入库 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | 饮食推荐系统 | — |
|
|
|
+| TC-P-27-E | SC-P-27 | 家庭食谱 | 家长 | P2 | 异常 | 菌群报告+营养目标 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | 饮食推荐/家庭食谱 | — |
|
|
|
+| TC-P-28-E | SC-P-28 | 食谱筛选 | 家长 | P3 | 异常 | 已生成食谱 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | 饮食推荐 | — |
|
|
|
+| TC-P-29-E | SC-P-29 | 食谱收藏 | 家长 | P3 | 异常 | 已生成食谱 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | 饮食推荐 | — |
|
|
|
+| TC-P-30-E | SC-P-30 | 食谱营养 | 家长 | P3 | 异常 | 食谱+营养目标 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | 饮食推荐 | — |
|
|
|
+| TC-P-31-E | SC-P-31 | 测评类型 | 家长 | P2 | 异常 | 进入测评页 | 1. 额度不足/过期;并发同一 quota+memberId 重复提交 2. 观察拦截与幂等 | 额度不足/过期直接报错不落预约;并发重复提交被拒(幂等);状态机守卫非法回退 | `DanAssessmentController` | — |
|
|
|
+| TC-P-32-E | SC-P-32 | 测评规划师 | 家长 | P2 | 异常 | 已绑定规划师 | 1. 额度不足/过期;并发同一 quota+memberId 重复提交 2. 观察拦截与幂等 | 额度不足/过期直接报错不落预约;并发重复提交被拒(幂等);状态机守卫非法回退 | 测评订单 | — |
|
|
|
+| TC-P-33-E | SC-P-33 | 测评下单 | 家长 | P2 | 异常 | 套餐可见 | 1. 模拟支付失败/余额不足/重复提交/负价格负库存 2. 观察回滚与拦截 | 支付失败订单回滚不进入已支付;重复提交幂等;负价格/负库存/参数非法统一 400 拦截;重复核销/退款幂等 | `AssessmentOrder` | — |
|
|
|
+| TC-P-34-E | SC-P-34 | 测评支付 | 家长 | P2 | 异常 | pending 订单 | 1. 模拟支付失败/余额不足/重复提交/负价格负库存 2. 观察回滚与拦截 | 支付失败订单回滚不进入已支付;重复提交幂等;负价格/负库存/参数非法统一 400 拦截;重复核销/退款幂等 | 支付/`AssessmentQuota` | — |
|
|
|
+| TC-P-35-E | SC-P-35 | 测评额度 | 家长 | P2 | 异常 | 支付成功 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | `AssessmentQuota` | — |
|
|
|
+| TC-P-36-E | SC-P-36 | 测评预约 | 家长 | P2 | 异常 | 有效额度 | 1. 额度不足/过期;并发同一 quota+memberId 重复提交 2. 观察拦截与幂等 | 额度不足/过期直接报错不落预约;并发重复提交被拒(幂等);状态机守卫非法回退 | `AssessmentAppointmentController` | — |
|
|
|
+| TC-P-37-E | SC-P-37 | 预约状态 | 家长 | P2 | 异常 | 已有预约 | 1. 额度不足/过期;并发同一 quota+memberId 重复提交 2. 观察拦截与幂等 | 额度不足/过期直接报错不落预约;并发重复提交被拒(幂等);状态机守卫非法回退 | `AssessmentAppointmentController` | — |
|
|
|
+| TC-P-38-E | SC-P-38 | 预约取消 | 家长 | P2 | 异常 | 已有预约 | 1. 额度不足/过期;并发同一 quota+memberId 重复提交 2. 观察拦截与幂等 | 额度不足/过期直接报错不落预约;并发重复提交被拒(幂等);状态机守卫非法回退 | `AssessmentAppointmentController` | — |
|
|
|
+| TC-P-39-E | SC-P-39 | DAN报告 | 家长 | P2 | 异常 | 结果已录入 | 1. 上传损坏/非募极/超大/格式不符文件或触发解析超时 2. 观察系统处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 500;非募极报告明确提示「请确认是募极生物肠道菌群报告」 | `DanAssessmentResultDTO` | — |
|
|
|
+| TC-P-40-E | SC-P-40 | AI方案 | 家长 | P2 | 异常 | 孩子 B+目标;部分需会员 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | `AIChatController`/`AiGateway` | — |
|
|
|
+| TC-P-41-E | SC-P-41 | 方案迭代 | 家长 | P2 | 异常 | 方案已生成 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | `AIChatController` | — |
|
|
|
+| TC-P-42-E | SC-P-42 | 方案编辑 | 家长 | P2 | 异常 | 方案已生成 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | 方案管理 | — |
|
|
|
+| TC-P-43-E | SC-P-43 | 方案查看 | 家长 | P2 | 异常 | 方案存在 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | 方案管理 | — |
|
|
|
+| TC-P-44-E | SC-P-44 | 方案确认 | 家长 | P2 | 异常 | 方案 generated | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | 方案状态机 | — |
|
|
|
+| TC-P-45-E | SC-P-45 | 方案发布 | 家长 | P2 | 异常 | 配置允许 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | 方案管理 | — |
|
|
|
+| TC-P-46-E | SC-P-46 | 方案激活 | 家长 | P2 | 异常 | reviewed 方案 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | 方案激活任务分解 | — |
|
|
|
+| TC-P-47-E | SC-P-47 | 方案任务 | 家长 | P2 | 异常 | 方案 active | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | `GrowthPlanController` | — |
|
|
|
+| TC-P-48-E | SC-P-48 | 方案版本 | 家长 | P3 | 异常 | 多版本方案 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | 方案管理 | — |
|
|
|
+| TC-P-49-E | SC-P-49 | AI对话 | 家长 | P2 | 异常 | 已登录 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | `AIChatController` | — |
|
|
|
+| TC-P-50-E | SC-P-50 | 成长记录 | 家长 | P2 | 异常 | 有成长数据 | 1. 重复提交/并发/超期/驳回后重做 2. 观察处理 | 重复提交幂等不重复计分;驳回可重做;超期不可操作;能量不为负、流水可追溯;空态/缺数据降级非 500 | `GrowthController` | — |
|
|
|
+| TC-P-51-E | SC-P-51 | 成长里程碑 | 家长 | P3 | 异常 | 有成长数据 | 1. 重复提交/并发/超期/驳回后重做 2. 观察处理 | 重复提交幂等不重复计分;驳回可重做;超期不可操作;能量不为负、流水可追溯;空态/缺数据降级非 500 | `GrowthController` | — |
|
|
|
+| TC-P-52-E | SC-P-52 | 商城浏览 | 家长 | P2 | 异常 | 进入商城 | 1. 模拟支付失败/余额不足/重复提交/负价格负库存 2. 观察回滚与拦截 | 支付失败订单回滚不进入已支付;重复提交幂等;负价格/负库存/参数非法统一 400 拦截;重复核销/退款幂等 | `MallController`/`danshop` | — |
|
|
|
+| TC-P-53-E | SC-P-53 | 商品详情 | 家长 | P2 | 异常 | 商品存在 | 1. 模拟支付失败/余额不足/重复提交/负价格负库存 2. 观察回滚与拦截 | 支付失败订单回滚不进入已支付;重复提交幂等;负价格/负库存/参数非法统一 400 拦截;重复核销/退款幂等 | `MallController` | — |
|
|
|
+| TC-P-54-E | SC-P-54 | 商城下单 | 家长 | P2 | 异常 | 商品可购 | 1. 模拟支付失败/余额不足/重复提交/负价格负库存 2. 观察回滚与拦截 | 支付失败订单回滚不进入已支付;重复提交幂等;负价格/负库存/参数非法统一 400 拦截;重复核销/退款幂等 | `MallController` | — |
|
|
|
+| TC-P-55-E | SC-P-55 | 订单支付 | 家长 | P2 | 异常 | 待支付订单 | 1. 模拟支付失败/余额不足/重复提交/负价格负库存 2. 观察回滚与拦截 | 支付失败订单回滚不进入已支付;重复提交幂等;负价格/负库存/参数非法统一 400 拦截;重复核销/退款幂等 | 支付 | — |
|
|
|
+| TC-P-56-E | SC-P-56 | 订单退款 | 家长 | P2 | 异常 | 已有订单 | 1. 模拟支付失败/余额不足/重复提交/负价格负库存 2. 观察回滚与拦截 | 支付失败订单回滚不进入已支付;重复提交幂等;负价格/负库存/参数非法统一 400 拦截;重复核销/退款幂等 | 订单服务 | — |
|
|
|
+| TC-P-57-E | SC-P-57 | 优惠券 | 家长 | P2 | 异常 | 有可用券 | 1. 输入非法参数/网络中断/请求超时 2. 观察降级 | 系统给出明确错误提示而非 500;关键操作可重试或回滚;不泄露内部堆栈 | 优惠券 | — |
|
|
|
+| TC-P-58-E | SC-P-58 | 会员购买 | 家长 | P2 | 异常 | 未购会员 | 1. 模拟支付失败/余额不足/重复提交/负价格负库存 2. 观察回滚与拦截 | 支付失败订单回滚不进入已支付;重复提交幂等;负价格/负库存/参数非法统一 400 拦截;重复核销/退款幂等 | `MemberController` | — |
|
|
|
+| TC-P-59-E | SC-P-59 | 会员权益 | 家长 | P2 | 异常 | 已购会员 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | `MemberController` | — |
|
|
|
+| TC-P-60-E | SC-P-60 | 会员续费 | 家长 | P3 | 异常 | 会员将到期 | 1. 制造 AI/方案生成超时或不可用;制造重复激活/确认/购买 2. 观察兜底与幂等 | LangGraph 不可用时 AiGateway Fallback 兜底,前端友好提示而非 500;重复激活/确认/购买幂等不重复生成任务/扣费;失败回滚不残半任务 | `MemberController` | — |
|
|
|
+| TC-P-61-E | SC-P-61 | 联系人 | 家长 | P2 | 异常 | 联系人入口 | 1. 输入非法格式/重复/越界值 2. 观察校验 | 字段格式校验拦截;重复去重;最小权限保底;保存失败不污染既有数据 | `ContactCard`/`contact-detail` | — |
|
|
|
+| TC-P-62-E | SC-P-62 | 联系人导入 | 家长 | P3 | 异常 | 联系人存在 | 1. 输入非法格式/重复/越界值 2. 观察校验 | 字段格式校验拦截;重复去重;最小权限保底;保存失败不污染既有数据 | `ContactImport` | — |
|
|
|
+| TC-P-63-E | SC-P-63 | 联系人权限 | 家长 | P2 | 异常 | 联系人存在 | 1. 输入非法格式/重复/越界值 2. 观察校验 | 字段格式校验拦截;重复去重;最小权限保底;保存失败不污染既有数据 | `ContactCard` | — |
|
|
|
+| TC-P-64-E | SC-P-64 | 个人资料 | 家长 | P2 | 异常 | 已登录 | 1. 输入非法格式/重复/越界值 2. 观察校验 | 字段格式校验拦截;重复去重;最小权限保底;保存失败不污染既有数据 | `AuthController` | — |
|
|
|
+| TC-P-65-E | SC-P-65 | 通知设置 | 家长 | P3 | 异常 | 已登录 | 1. 输入非法格式/重复/越界值 2. 观察校验 | 字段格式校验拦截;重复去重;最小权限保底;保存失败不污染既有数据 | 消息服务 | — |
|
|
|
+| TC-P-66-E | SC-P-66 | 隐私设置 | 家长 | P3 | 异常 | 已登录 | 1. 输入非法格式/重复/越界值 2. 观察校验 | 字段格式校验拦截;重复去重;最小权限保底;保存失败不污染既有数据 | 隐私设置 | — |
|
|
|
+
|
|
|
+## 权限流用例(派生自正常流)
|
|
|
+
|
|
|
+| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
|
|
|
+|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
+| TC-P-01-P | P-1 | 家庭 | 家长 | P1 | 权限 | 已登录(默认 parent) | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `FamilyInviteController` | — |
|
|
|
+| TC-P-02-P | P-2 | 家庭/成员 | 家长 | P1 | 权限 | 家庭已创建;爷爷 C 可用 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `FamilyInviteController` | — |
|
|
|
+| TC-P-03-P | P-2 | 成员资料 | 家长 | P1 | 权限 | 家庭已创建 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `FamilyMembersController` | — |
|
|
|
+| TC-P-04-P | P-2 | 关系图 | 家长 | P1 | 权限 | 成员 C 已加入 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 关系类型 CRUD/前端选择器 | — |
|
|
|
+| TC-P-05-P | P-4 | 任务 | 家长 | P1 | 权限 | 家庭含孩子 B | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `TaskController` | — |
|
|
|
+| TC-P-06-P | P-4 | 任务审核 | 家长 | P1 | 权限 | B 已提交任务 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `TaskController`/`PointsController` | — |
|
|
|
+| TC-P-07-P | P-5 | 心愿 | 家长 | P1 | 权限 | 孩子已创建心愿 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `WishController`/`RewardController` | — |
|
|
|
+| TC-P-08-P | P-6 | 能量 | 家长 | P1 | 权限 | 已有能量记录 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `EnergyController` | — |
|
|
|
+| TC-P-09-P | P-7 | 测评订单 | 家长 | P1 | 权限 | 已绑定规划师 T;孩子 B 在家庭中 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `AssessmentAppointmentController` | — |
|
|
|
+| TC-P-10-P | P-8 | 健康报告 | 家长 | P1 | 权限 | 持有募极生物菌群 PDF | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 健康报告上传解析 | — |
|
|
|
+| TC-P-11-P | P-8 | 报告查看 | 家长 | P1 | 权限 | 报告已入库 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 报告解析 | — |
|
|
|
+| TC-P-12-P | P-9 | 饮食推荐 | 家长 | P1 | 权限 | P-10 报告已入库 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 饮食推荐系统 | — |
|
|
|
+| TC-P-13-P | P-10 | AI 方案 | 家长 | P1 | 权限 | 孩子 B 有报告;部分需会员 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | AI 统一走 LangGraph;`AiGateway` | — |
|
|
|
+| TC-P-14-P | P-10 | 方案提交 | 家长 | P1 | 权限 | 方案已生成 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 方案状态机 | — |
|
|
|
+| TC-P-15-P | P-3 | 双角色 | 家长 | P1 | 权限 | 家庭含孩子 B | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `POST /api/family/member/switch`(替代废弃 switch-mode);双角色铁律 | — |
|
|
|
+| TC-P-16-P | P-10 | 会员 | 家长 | P1 | 权限 | 未购会员 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `MembershipController`/`ProductOrderController` | — |
|
|
|
+| TC-P-17-P | P-12 | 积分/成长 | 家长 | P1 | 权限 | 已有记录 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `PointsController`/`GrowthController` | — |
|
|
|
+| TC-P-18-P | P-11 | AI 对话 | 家长 | P1 | 权限 | 已登录 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `AIChatController`;LangGraph RAG | — |
|
|
|
+| TC-P-19-P | SC-P-19 | 能量配置 | 家长 | P2 | 权限 | 进入能量页 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 维度配置 | — |
|
|
|
+| TC-P-20-P | SC-P-20 | 健康报告 | 家长 | P1 | 权限 | 持有募极生物 PDF | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 报告解析中台/`POST /api/media/upload` | — |
|
|
|
+| TC-P-21-P | SC-P-21 | 报告解析 | 家长 | P1 | 权限 | 多类型报告 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `/api/admin/report-parser/types` | — |
|
|
|
+| TC-P-22-P | SC-P-22 | 报告预览 | 家长 | P1 | 权限 | 报告已解析 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 解析中台 | — |
|
|
|
+| TC-P-23-P | SC-P-23 | 报告入库 | 家长 | P1 | 权限 | 解析预览完成 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 解析中台 | — |
|
|
|
+| TC-P-24-P | SC-P-24 | 报告管理 | 家长 | P1 | 权限 | 多份报告 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 报告管理 | — |
|
|
|
+| TC-P-25-P | SC-P-25 | 报告趋势 | 家长 | P1 | 权限 | ≥2 同类型报告 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 成长/报告 | — |
|
|
|
+| TC-P-26-P | SC-P-26 | 饮食推荐 | 家长 | P1 | 权限 | SC-P-20 已入库 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 饮食推荐系统 | — |
|
|
|
+| TC-P-27-P | SC-P-27 | 家庭食谱 | 家长 | P1 | 权限 | 菌群报告+营养目标 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 饮食推荐/家庭食谱 | — |
|
|
|
+| TC-P-28-P | SC-P-28 | 食谱筛选 | 家长 | P2 | 权限 | 已生成食谱 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 饮食推荐 | — |
|
|
|
+| TC-P-29-P | SC-P-29 | 食谱收藏 | 家长 | P2 | 权限 | 已生成食谱 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 饮食推荐 | — |
|
|
|
+| TC-P-30-P | SC-P-30 | 食谱营养 | 家长 | P2 | 权限 | 食谱+营养目标 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 饮食推荐 | — |
|
|
|
+| TC-P-31-P | SC-P-31 | 测评类型 | 家长 | P1 | 权限 | 进入测评页 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `DanAssessmentController` | — |
|
|
|
+| TC-P-32-P | SC-P-32 | 测评规划师 | 家长 | P1 | 权限 | 已绑定规划师 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 测评订单 | — |
|
|
|
+| TC-P-33-P | SC-P-33 | 测评下单 | 家长 | P1 | 权限 | 套餐可见 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `AssessmentOrder` | — |
|
|
|
+| TC-P-34-P | SC-P-34 | 测评支付 | 家长 | P1 | 权限 | pending 订单 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 支付/`AssessmentQuota` | — |
|
|
|
+| TC-P-35-P | SC-P-35 | 测评额度 | 家长 | P1 | 权限 | 支付成功 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `AssessmentQuota` | — |
|
|
|
+| TC-P-36-P | SC-P-36 | 测评预约 | 家长 | P1 | 权限 | 有效额度 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `AssessmentAppointmentController` | — |
|
|
|
+| TC-P-37-P | SC-P-37 | 预约状态 | 家长 | P1 | 权限 | 已有预约 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `AssessmentAppointmentController` | — |
|
|
|
+| TC-P-38-P | SC-P-38 | 预约取消 | 家长 | P1 | 权限 | 已有预约 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `AssessmentAppointmentController` | — |
|
|
|
+| TC-P-39-P | SC-P-39 | DAN报告 | 家长 | P1 | 权限 | 结果已录入 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `DanAssessmentResultDTO` | — |
|
|
|
+| TC-P-40-P | SC-P-40 | AI方案 | 家长 | P1 | 权限 | 孩子 B+目标;部分需会员 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `AIChatController`/`AiGateway` | — |
|
|
|
+| TC-P-41-P | SC-P-41 | 方案迭代 | 家长 | P1 | 权限 | 方案已生成 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `AIChatController` | — |
|
|
|
+| TC-P-42-P | SC-P-42 | 方案编辑 | 家长 | P1 | 权限 | 方案已生成 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 方案管理 | — |
|
|
|
+| TC-P-43-P | SC-P-43 | 方案查看 | 家长 | P1 | 权限 | 方案存在 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 方案管理 | — |
|
|
|
+| TC-P-44-P | SC-P-44 | 方案确认 | 家长 | P1 | 权限 | 方案 generated | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 方案状态机 | — |
|
|
|
+| TC-P-45-P | SC-P-45 | 方案发布 | 家长 | P1 | 权限 | 配置允许 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 方案管理 | — |
|
|
|
+| TC-P-46-P | SC-P-46 | 方案激活 | 家长 | P1 | 权限 | reviewed 方案 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 方案激活任务分解 | — |
|
|
|
+| TC-P-47-P | SC-P-47 | 方案任务 | 家长 | P1 | 权限 | 方案 active | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `GrowthPlanController` | — |
|
|
|
+| TC-P-48-P | SC-P-48 | 方案版本 | 家长 | P2 | 权限 | 多版本方案 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 方案管理 | — |
|
|
|
+| TC-P-49-P | SC-P-49 | AI对话 | 家长 | P1 | 权限 | 已登录 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `AIChatController` | — |
|
|
|
+| TC-P-50-P | SC-P-50 | 成长记录 | 家长 | P1 | 权限 | 有成长数据 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `GrowthController` | — |
|
|
|
+| TC-P-51-P | SC-P-51 | 成长里程碑 | 家长 | P2 | 权限 | 有成长数据 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `GrowthController` | — |
|
|
|
+| TC-P-52-P | SC-P-52 | 商城浏览 | 家长 | P1 | 权限 | 进入商城 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `MallController`/`danshop` | — |
|
|
|
+| TC-P-53-P | SC-P-53 | 商品详情 | 家长 | P1 | 权限 | 商品存在 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `MallController` | — |
|
|
|
+| TC-P-54-P | SC-P-54 | 商城下单 | 家长 | P1 | 权限 | 商品可购 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `MallController` | — |
|
|
|
+| TC-P-55-P | SC-P-55 | 订单支付 | 家长 | P1 | 权限 | 待支付订单 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 支付 | — |
|
|
|
+| TC-P-56-P | SC-P-56 | 订单退款 | 家长 | P1 | 权限 | 已有订单 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 订单服务 | — |
|
|
|
+| TC-P-57-P | SC-P-57 | 优惠券 | 家长 | P1 | 权限 | 有可用券 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | 优惠券 | — |
|
|
|
+| TC-P-58-P | SC-P-58 | 会员购买 | 家长 | P1 | 权限 | 未购会员 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `MemberController` | — |
|
|
|
+| TC-P-59-P | SC-P-59 | 会员权益 | 家长 | P1 | 权限 | 已购会员 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `MemberController` | — |
|
|
|
+| TC-P-60-P | SC-P-60 | 会员续费 | 家长 | P2 | 权限 | 会员将到期 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `MemberController` | — |
|
|
|
+| TC-P-61-P | SC-P-61 | 联系人 | 家长 | P1 | 权限 | 联系人入口 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `ContactCard`/`contact-detail` | — |
|
|
|
+| TC-P-62-P | SC-P-62 | 联系人导入 | 家长 | P2 | 权限 | 联系人存在 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `ContactImport` | — |
|
|
|
+| TC-P-63-P | SC-P-63 | 联系人权限 | 家长 | P1 | 权限 | 联系人存在 | 1. 以当前角色调用他人/非绑定家庭数据接口(报告/任务/方案/订单/能量) 2. 观察 | 非归属数据访问统一 403/401,不泄露他人数据;横向越权被拒 | `ContactCard` | — |
|
|
|
+| 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,不泄露他人数据;横向越权被拒 | 隐私设置 | — |
|