parent.md 94 KB

测试用例 · 家长(Parent)

关联场景:../user-scenarios/02-parent.md。对应 e2e:../e2e/roles/parent/*.spec.js、../e2e/family-member-management.spec.js、../e2e/assessment-order-flow.spec.js、../e2e/dan-report-flow.spec.js、../e2e/ai-plan-task-flow.spec.js。

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-P-01 P-1 家庭 家长 P0 功能 已登录(默认 parent) 1. 创建家庭(名称「测试家庭1」) 家庭创建成功;生成唯一邀请码+二维码(令牌+落地页);角色变家庭管理员 FamilyInviteController e2e/roles/parent/family-management.spec.js
TC-P-02 P-2 家庭/成员 家长 P1 功能 家庭已创建;爷爷 C 可用 1. 分享邀请码/二维码给 C 2. C register-with-invite 加入 C 加入家庭,成员列表出现 C FamilyInviteController —
TC-P-02-B S-cfc-57/58/59(family.invite.joinValidationGate/Rules/RequiredInfo) 家庭加入准入校验 家长 P1 功能 家庭已创建;C 走申请加入(request-join-by-code)路径(S-cfc-57/58/59 已合入 cfclub@de16f40b0,实现基准 5bef71317/5f5424696) 1. C 申请加入 2. 逐项填写真实姓名/生日/性别 3. 发起申请 4. 家长审批 1. 必填项缺失/空白/超长(姓名>20字)被拒并提示「完善信息」、不落库 2. 生日为空/未来日期/早于 1900 被拒 3. 性别为空/大小写混用/非法取值被拒 4. 校验通过后正常入队待审批,审批后成为家庭成员 FamilyJoinRequestService/FamilyInviteController(S-cfc-57/58/59,5bef71317) FamilyJoinValidationRulesContractTest/FamilyJoinRequestServiceJoinRequiredInfoContractTest/FamilyJoinRequestServiceJoinValidationGateTest
TC-P-03 P-2 成员资料 家长 P1 功能 家庭已创建 1. 添加成员资料(姓名/关系/生日/性别) 成员卡片正确显示;关系标签可选(RelationshipPicker) FamilyMembersController e2e/family-member-management.spec.js
TC-P-04 P-2 关系图 家长 P1 功能 成员 C 已加入 1. 编辑 C 关系为「外公」 关系图节点与关系标签同步更新 关系类型 CRUD/前端选择器 —
TC-P-05 P-4 任务 家长 P0 功能 家庭含孩子 B 1. 创建任务(标题/成员 B/积分 10/频率每日) 任务出现在 B 列表,状态待执行 TaskController e2e/roles/parent/../tasks
TC-P-06 P-4 任务审核 家长 P0 功能 B 已提交任务 1. 审批「通过」/「驳回」 通过→B 积分+N 并生成流水;驳回→退回重做;重复提交不重复发分 TaskController/PointsController —
TC-P-07 P-5 心愿 家长 P1 功能 孩子已创建心愿 1. 审批心愿(通过/驳回) 通过→扣积分进入兑换;驳回→心愿失效;积分不足兑换拦截 WishController/RewardController e2e/roles/parent/wish-management.spec.js
TC-P-08 P-6 能量 家长 P1 功能 已有能量记录 1. 进五维能量/健康指数首页 2. 查流水 显示家庭健康指数与五维能量分配(总和=100%);流水可追溯;无数据时空态非 500 EnergyController e2e/roles/parent/energy-dashboard.spec.js
TC-P-09 P-7 测评订单 家长 P0 功能 已绑定规划师 T;孩子 B 在家庭中 1. 申请测评(选 B+类型+T) 2. 孩子快照 3. 支付 生成测评订单;状态 已支付→待安排→已预约;未支付/未选规划师不进入待安排 AssessmentAppointmentController e2e/assessment-order-flow.spec.js
TC-P-10 P-8 健康报告 家长 P0 功能 持有募极生物菌群 PDF 1. 上传 PDF(/api/media/upload+解析入口) 识别为 gut_flora;三阶段上传→解析预览→确认入库;非募极报告提示「请确认是募极生物肠道菌群报告」 健康报告上传解析 e2e/dan-report-flow.spec.js
TC-P-11 P-8 报告查看 家长 P1 功能 报告已入库 1. 打开报告列表→菌群报告详情 显示菌群健康分/平衡/多样性、菌种明细、疾病风险;七维评分刷新 报告解析 —
TC-P-12 P-9 饮食推荐 家长 P1 功能 P-10 报告已入库 1. 打开「身→饮食推荐」 按报告生成食材推荐指数,展示可吃/慎吃列表;无报告时无推荐 饮食推荐系统 —
TC-P-13 P-10 AI 方案 家长 P0 功能 孩子 B 有报告;部分需会员 1. 选 B+目标 2. 调 LangGraph 生成方案 生成 overview+营养/饮食/运动三板块;可逐板块重生成/确认;未购买会员→提示购买 AI 统一走 LangGraph;AiGateway e2e/ai-plan-task-flow.spec.js
TC-P-14 P-10 方案提交 家长 P1 功能 方案已生成 1. 保存/提交方案 进入「已提交(待规划师审核)」或按配置直接发布 方案状态机 —
TC-P-15 P-3 双角色 家长 P0 权限 家庭含孩子 B 1. 个人中心→切换视角→选 B 2. 切回家长(密码) 3. 孩子端反向尝试 切换为孩子端界面(数据隔离);切回需密码;孩子端不能切回家长 POST /api/family/member/switch(替代废弃 switch-mode);双角色铁律 e2e/roles/parent/family-management.spec.js
TC-P-16 P-10 会员 家长 P1 功能 未购会员 1. 购买会员/套餐并支付 支付成功解锁方案生成等付费功能;未购买点击生成提示购买 MembershipController/ProductOrderController e2e/roles/parent/../membership
TC-P-17 P-12 积分/成长 家长 P1 功能 已有记录 1. 查积分明细 2. 查成长记录 积分流水与孩子成长记录一致;时间格式 yyyy-MM-dd HH:mm:ss;积分与流水总额一致 PointsController/GrowthController e2e/roles/parent/points.spec.js
TC-P-18 P-11 AI 对话 家长 P1 功能 已登录 1. POST /api/ai/health-coach/send(问便秘) 2. 多轮 返回基于知识库回答,可含产品/任务推荐;LangGraph 不可用时 AiGateway Fallback 兜底;多轮连续 AIChatController;LangGraph RAG —

门禁项与边界

  • TC-P-15(双角色边界,门禁):家长↔孩子视角可切;孩子端不能切回家长;切回家长需密码。任一项失败整体不通过。
  • TC-P-10a(异常):非募极生物报告识别失败 → 进入未知聚类待运营自学习,前端明确提示。
  • TC-P-13a(异常):LangGraph 超时/不可用 → AiGateway Fallback,前端友好提示而非 500。
  • TC-P-09a(异常):支付失败 → 订单回滚,不进入待安排。
  • 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-26-A S-cfc-115(diet.food.healthAdjustUi / diet.food.healthAdjust,需求 2026-11-09-diet-recommendation-health-questionnaire-adjust.md §3-B/§4) 饮食推荐·健康问卷个性化调整 家长 P1 功能 后端 diet.food.healthAdjust 已合入(ba9fd2837,A1-A5);目标成员 health_status/diet_preferences 已预置问卷数据(过敏原/用药/疾病史/绝对避免/must_eat/宗教饮食) 1. 成员饮食偏好填过敏原「花生」→ 查 /api/health/foods(无 reportId)2. 前端打开「身→饮食推荐」recommendation 页 3. 校验食物卡片提示条 4. 切「适合」Tab 5. 填 must_eat「鸡蛋」后复看 6. 填宗教饮食「素食」后复看 1. 花生 adjustment=blocked+reason 含「过敏原花生」2. blocked 红条「⚠ 健康问卷不建议」/ warning 黄条「注意:」/ boost 绿条「✓ 符合饮食习惯偏好」/ normal 不渲染 3. suitable Tab 中 blocked 项排末尾 4. 鸡蛋 boost 绿条置顶 5. 荤食 blocked、diet_type=none 不受影响 6. 报告详情页(有 reportId)快照不变 FoodRecommendService.getCurrentFoods/HealthFilterService/recommendation.vue(B1-B3) tests/e2e/diet-recommendation-health-adjust.spec.js(已入库,执行受登录态/问卷数据预置门控)
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. 设数据共享范围 最小权限保底 隐私设置 —

本轮扩展场景用例(新增 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
TC-P-01-E P-1 家庭 家长 P2 异常 已登录(默认 parent) 1. 家庭名称传空 / 超长(>30 字符) / 含 <script> 注入 2. 观察返回与存储 名称空或超长返回 400 且 message 含『家庭名称』校验项;HTML/SQL 注入被转义,库内不落恶意串;不抛 500、不泄露堆栈 FamilyInviteController —
TC-P-02-E P-2 家庭/成员 家长 P2 异常 家庭已创建;爷爷 C 可用 1. 用非 11 位手机号 / 已绑定其他家庭的账号注册 2. 用过期邀请码(>7 天)注册 非法手机号 400 提示格式;已占用账号提示『已存在家庭关系』;过期码提示『邀请已失效,请重新获取』;均不建立成员关系 FamilyInviteController —
TC-P-03-E P-2 成员资料 家长 P2 异常 家庭已创建 1. 生日填未来日期 / 关系选『自己』 2. 姓名填 ' OR 1=1-- 未来生日 400;关系非法值拒绝;姓名特殊字符转义存储、不破坏查询;既有成员数据不被污染 FamilyMembersController —
TC-P-04-E P-2 关系图 家长 P2 异常 成员 C 已加入 1. 将 C 关系重复设为已存在的『外公』 2. 关系类型传非法枚举 alien 重复关系提示已存在、不新增节点;非法枚举 400;关系图不出现重复/幽灵节点 关系类型 CRUD/前端选择器 —
TC-P-05-E P-4 任务 家长 P2 异常 家庭含孩子 B 1. 任务频率填 0 / 负数 / 非枚举 2. 同一创建请求并发双发 频率非法 400;并发双发幂等,仅生成 1 条任务、仅 1 次能量预期;超期任务拒绝提交 TaskController —
TC-P-06-E P-4 任务审核 家长 P2 异常 B 已提交任务 1. 对同一已审批任务重复点『通过』 2. 驳回后孩子重做再提交并审批 重复审批幂等不双计积分;驳回→重做→再审批仅在重做后计 1 次;超期任务审批被拒 TaskController/PointsController —
TC-P-07-E P-5 心愿 家长 P2 异常 孩子已创建心愿 1. 兑换时家长积分余额 < 心愿价 2. 心愿已被孩子取消后再点兑换 3. 并发兑换同一心愿 余额不足拦截且不扣负积分;已取消心愿兑换提示失效;并发幂等仅扣 1 次 WishController/RewardController —
TC-P-08-E P-6 能量 家长 P2 异常 已有能量记录 1. EnergyLog 查询超时 / 某维度权重配置为 0 导致占比除零 2. 无数据首访 查询超时降级为空态提示非 500;权重为 0 时占比按兜底(0%)显示不崩;首访空态正常 EnergyController —
TC-P-09-E P-7 测评订单 家长 P2 异常 已绑定规划师 T;孩子 B 在家庭中 1. 模拟支付回调 signature 错误 / 余额不足 2. 同一订单重复发支付成功回调 回调验签失败订单保持 pending 不进待安排;余额不足回滚;重复回调幂等仅落 1 次已支付 AssessmentAppointmentController —
TC-P-10-E P-8 健康报告 家长 P2 异常 持有募极生物菌群 PDF 1. 上传前 5 字节非 %PDF 的损坏文件 2. 上传其他机构(非募极)报告 3. 上传 >20MB / 加密 PDF 损坏文件识别失败进未知聚类并提示;非募极明确提示『请确认是募极生物肠道菌群报告』;超大/加密提示超限或密码保护,均非 500 健康报告上传解析 —
TC-P-11-E P-8 报告查看 家长 P2 异常 报告已入库 1. 报告 id 不存在 / 已被删除后查看 2. 解析中(report_status=parsing)状态打开详情 不存在/已删返回 404 提示『报告不存在』;解析中提示『报告解析中,请稍候』,不白屏不 500 报告解析 —
TC-P-12-E P-9 饮食推荐 家长 P2 异常 P-10 报告已入库 1. 制造 LangGraph 503/超时 2. 重复点击『生成推荐』 AiGateway Fallback 返回兜底食材清单+友好提示非 500;重复点击幂等仅生成 1 份、不重复扣费 饮食推荐系统 —
TC-P-13-E P-10 AI 方案 家长 P2 异常 孩子 B 有报告;部分需会员 1. 生成时 LangGraph 不可用 2. 未购会员却请求付费板块 Fallback 兜底方案+提示;未购会员请求付费板块返回『请先开通会员』拦截,不白生成 AI 统一走 LangGraph;AiGateway —
TC-P-14-E P-10 方案提交 家长 P2 异常 方案已生成 1. 提交一个尚未生成 overview 的空方案 2. 重复提交同一方案 空方案提交拦截提示『方案未生成』;重复提交幂等不重复进审核 方案状态机 —
TC-P-15-E P-3 双角色 家长 P2 异常 家庭含孩子 B 1. token 缺失/过期访问切换接口 2. 孩子端尝试切回家长 3. 非法 memberId 切换 缺失/过期 token 统一 401 跳登录;孩子端无切回家长入口;非法切换 403 被拒;模拟登录仅测试环境生效 POST /api/family/member/switch(替代废弃 switch-mode);双角色铁律 —
TC-P-16-E P-10 会员 家长 P2 异常 未购会员 1. 购买时支付网关超时 2. 重复点击购买同一档位 支付超时订单回滚不解锁权益;重复购买幂等仅开通 1 次、不重复扣费 MembershipController/ProductOrderController —
TC-P-17-E P-12 积分/成长 家长 P2 异常 已有记录 1. 并发刷新积分 2. 查成长记录时某条关联任务已删 并发刷新总量一致不重复计;关联任务已删时该成长项跳过不报错,时间格式 yyyy-MM-dd HH:mm:ss PointsController/GrowthController —
TC-P-18-E P-11 AI 对话 家长 P2 异常 已登录 1. 发送含敏感词/超长(>2000字)消息 2. LangGraph 不可用时多轮 超长消息 400 提示;敏感词按合规拦截;LangGraph 不可用 Fallback 兜底回答,多轮上下文不丢 AIChatController;LangGraph RAG —
TC-P-19-E SC-P-19 能量配置 家长 P3 异常 进入能量页 1. 配置未同步时首次进入 2. 手动改权重总和≠100% 提交 配置缺失展示兜底说明非 500;权重和非法 400 提示『权重合计需为 100%』 维度配置 —
TC-P-20-E SC-P-20 健康报告 家长 P2 异常 持有募极生物 PDF 1. 上传前 5 字节非 %PDF 的损坏文件 2. 上传其他机构(非募极)报告 3. 上传 >20MB / 加密 PDF 损坏文件识别失败进未知聚类并提示;非募极明确提示『请确认是募极生物肠道菌群报告』;超大/加密提示超限或密码保护,均非 500 报告解析中台/POST /api/media/upload —
TC-P-21-E SC-P-21 报告解析 家长 P2 异常 多类型报告 1. 上传未注册类型(如 CT 影像) 2. 上传 0 字节文件 未注册类型进未知聚类待运营自学习;0 字节文件提示『文件为空』;均非 500 /api/admin/report-parser/types —
TC-P-22-E SC-P-22 报告预览 家长 P2 异常 报告已解析 1. 预览时某指标值为负/异常(如菌群多样性 -1) 2. 解析服务超时 异常值提示『数据异常,暂不入库』不入库;超时提示解析中,不白屏 解析中台 —
TC-P-23-E SC-P-23 报告入库 家长 P2 异常 解析预览完成 1. 确认入库时报告已被运营删除 2. 并发两次确认 报告已删提示『报告不存在,确认失败』;并发确认幂等仅入库 1 次、七维仅刷新 1 次 解析中台 —
TC-P-24-E SC-P-24 报告管理 家长 P2 异常 多份报告 1. 删除带关联方案的报告 2. 删除不存在的报告 id 有方案时提示『请先解除关联方案』再删;不存在 id 返回 404 不崩 报告管理 —
TC-P-25-E SC-P-25 报告趋势 家长 P2 异常 ≥2 同类型报告 1. 仅 1 份同类型报告查趋势 2. 两份报告时间倒挂(新在前) 单报告提示『至少需要 2 份报告才能看趋势』;时间轴按真实时间升序,不倒挂 成长/报告 —
TC-P-26-E SC-P-26 饮食推荐 家长 P2 异常 SC-P-20 已入库 1. 制造 LangGraph 503/超时 2. 重复点击『生成推荐』 AiGateway Fallback 返回兜底食材清单+友好提示非 500;重复点击幂等仅生成 1 份、不重复扣费 饮食推荐系统 —
TC-P-26-A-E S-cfc-115(需求 §4 判据) 饮食推荐·个性化调整异常 家长 P2 异常 后端 healthAdjust 已合入;问卷数据可构造 1. diet_preferences.allergies 为非法 JSON/空数组/超长 2. health_status.lifestyle 为非对象(字符串/数组)3. 问卷数据仅部分维度(如只填过敏、无疾病史)4. 报告详情页与当前推荐页并存加载 1. 解析失败静默降级(adjustment=normal),接口不 500 2. 不崩溃、不返回合成过敏原 3. 缺失维度不参与判定,其余维度正常打标 4. 报告详情页(有 reportId)返回快照不含 adjustment 或为 normal,不被个性化调整污染 HealthFilterService.loadProfile/FoodRecommendService.getCurrentFoods tests/e2e/diet-recommendation-health-adjust.spec.js:62(B1 契约)
TC-P-27-E SC-P-27 家庭食谱 家长 P2 异常 菌群报告+营养目标 1. LangGraph 超时生成食谱 2. 食谱含孩子过敏食材(虾)未排除 超时 Fallback 通用食谱+提示;过敏食材未排除时返回 400 提示『存在过敏冲突』重算 饮食推荐/家庭食谱 —
TC-P-28-E SC-P-28 食谱筛选 家长 P3 异常 已生成食谱 1. 设忌口『海鲜』但食谱仍含鱼 2. 忌口值非法 忌口冲突提示并停止生成;非法忌口值 400;重算生效 饮食推荐 —
TC-P-29-E SC-P-29 食谱收藏 家长 P3 异常 已生成食谱 1. 收藏后手动替换食材使营养超标 2. 重复收藏同一食谱 替换后提示『超出营养目标』不静默;重复收藏幂等仅 1 条 饮食推荐 —
TC-P-30-E SC-P-30 食谱营养 家长 P3 异常 食谱+营养目标 1. 营养合计超目标 200% 2. 目标未设时查营养 超标明确标红提示『超出目标 X%』;未设目标提示先设目标,不除零 饮食推荐 —
TC-P-31-E SC-P-31 测评类型 家长 P2 异常 进入测评页 1. 后端字典缺某类(如 adolescent)时前端仍渲染 2. 传非法 type 查询 字典缺失时前端降级不白屏;非法 type 400;八类以字典为准 DanAssessmentController —
TC-P-32-E SC-P-32 测评规划师 家长 P2 异常 已绑定规划师 1. 未绑定规划师直接选测评选 T 2. 选已解绑的 T 未绑定提示『请先绑定规划师』;已解绑 T 不在可选列表,选则 400 测评订单 —
TC-P-33-E SC-P-33 测评下单 家长 P2 异常 套餐可见 1. 套餐已下架仍下单 2. 数量填 -1 / 库存为 0 下架套餐 400『套餐不可售』;数量非法/库存不足拦截,不生成订单 AssessmentOrder —
TC-P-34-E SC-P-34 测评支付 家长 P2 异常 pending 订单 1. 支付网关超时 2. 同一 pending 订单发两次支付成功 超时回滚不生成额度;重复回调幂等仅生成 1 条额度 支付/AssessmentQuota —
TC-P-35-E SC-P-35 测评额度 家长 P2 异常 支付成功 1. 用已过期额度预约 2. 额度页加载时依赖 AI 服务超时 过期额度预约返回『额度已过期』不落预约;额度页加载降级非 500 AssessmentQuota —
TC-P-36-E SC-P-36 测评预约 家长 P2 异常 有效额度 1. 无有效额度调 create 2. 同一 quotaId+memberId 并发双发 无额度返回『额度不足或已过期』不建预约不发能量;并发双发仅落 1 条预约、能量仅发 1 次(幂等) AssessmentAppointmentController —
TC-P-37-E SC-P-37 预约状态 家长 P2 异常 已有预约 1. 直接 PUT 状态从 pending→completed 跳过 confirmed 2. 查不存在的预约 状态机守卫拒绝非法跃迁返回 400;不存在预约 404;状态准确 AssessmentAppointmentController —
TC-P-38-E SC-P-38 预约取消 家长 P2 异常 已有预约 1. 非本人/非绑定 T 取消他人预约 2. 已 completed 预约再取消 越权取消 403 被拒(CFC-AP);终态预约取消返回『不可取消』;不退款逻辑按配置 AssessmentAppointmentController —
TC-P-39-E SC-P-39 DAN报告 家长 P2 异常 结果已录入 1. 结果未录入打开结果页 2. 上传结果字段缺失(如缺 mind 类分数) 未录入提示『结果待录入』不白屏;缺字段校验 400 提示缺哪项 DanAssessmentResultDTO —
TC-P-40-E SC-P-40 AI方案 家长 P2 异常 孩子 B+目标;部分需会员 1. 生成时 LangGraph 不可用 2. 未购会员却请求付费板块 Fallback 兜底方案+提示;未购会员请求付费板块返回『请先开通会员』拦截,不白生成 AIChatController/AiGateway —
TC-P-41-E SC-P-41 方案迭代 家长 P2 异常 方案已生成 1. 重生成板块 A 时断网 2. 连续点同一板块重生成 断网 Fallback 保留其他板块不丢;连续点击幂等仅 1 次重生成 AIChatController —
TC-P-42-E SC-P-42 方案编辑 家长 P2 异常 方案已生成 1. 编辑超长文本(>10000字) 2. 编辑他人方案 超长 400 提示;越权编辑 403 被拒;编辑后状态标记已改 方案管理 —
TC-P-43-E SC-P-43 方案查看 家长 P2 异常 方案存在 1. 打开 overview 为空的方案 2. 方案 id 不存在 空方案展示占位不白屏;不存在 404 方案管理 —
TC-P-44-E SC-P-44 方案确认 家长 P2 异常 方案 generated 1. 未确认就点激活 2. 重复确认同一方案 未确认激活拦截『请先确认』;重复确认幂等仅 1 次 reviewed 方案状态机 —
TC-P-45-E SC-P-45 方案发布 家长 P2 异常 配置允许 1. 配置需审核却直接发布 2. 发布未 reviewed 方案 需审核配置时发布走审核流不直接 active;未 reviewed 发布拦截 方案管理 —
TC-P-46-E SC-P-46 方案激活 家长 P2 异常 reviewed 方案 1. 已 active 再点激活 2. 激活时任务分解服务超时 已激活再激活幂等不重复生成任务;超时回滚不残半任务,状态回 reviewed 方案激活任务分解 —
TC-P-47-E SC-P-47 方案任务 家长 P2 异常 方案 active 1. 方案 active 时删任务 2. 任务 id 非法 删任务同步方案并提示;非法 id 400;任务增删与方案一致 GrowthPlanController —
TC-P-48-E SC-P-48 方案版本 家长 P3 异常 多版本方案 1. 试图 PUT 修改历史版本内容 2. 版本 id 不存在 历史版本只读返回 403『版本不可篡改』;不存在 404 方案管理 —
TC-P-49-E SC-P-49 AI对话 家长 P2 异常 已登录 1. 发送含敏感词/超长(>2000字)消息 2. LangGraph 不可用时多轮 超长消息 400 提示;敏感词按合规拦截;LangGraph 不可用 Fallback 兜底回答,多轮上下文不丢 AIChatController —
TC-P-50-E SC-P-50 成长记录 家长 P2 异常 有成长数据 1. 成长时间线某条关联报告已删 2. 首访无数据 关联已删项跳过不报错;首访空态正常,时间线不白屏 GrowthController —
TC-P-51-E SC-P-51 成长里程碑 家长 P3 异常 有成长数据 1. 重复标同一里程碑 2. 标不存在的节点 重复标幂等仅 1 条;非法节点 400 GrowthController —
TC-P-52-E SC-P-52 商城浏览 家长 P2 异常 进入商城 1. 搜索 SQL 注入关键词 2. 下架商品仍在列表 注入被转义返回安全结果;下架商品不展示;不 500 MallController/danshop —
TC-P-53-E SC-P-53 商品详情 家长 P2 异常 商品存在 1. 库存为 0 商品打开详情 2. 商品 id 不存在 库存 0 提示『暂时缺货』;不存在 404 MallController —
TC-P-54-E SC-P-54 商城下单 家长 P2 异常 商品可购 1. 库存仅 1 却下单 2 件 2. 重复提交同一购物车 超库存拦截『库存不足』;重复提交幂等仅 1 单 MallController —
TC-P-55-E SC-P-55 订单支付 家长 P2 异常 待支付订单 1. 支付网关超时 2. 重复支付通知 超时回滚订单保持待支付;重复通知幂等仅 1 次 paid 支付 —
TC-P-56-E SC-P-56 订单退款 家长 P2 异常 已有订单 1. 已发货订单申请退款 2. 同一订单重复退款 已发货按规则处理/拒;重复退款拦截仅 1 次 订单服务 —
TC-P-57-E SC-P-57 优惠券 家长 P2 异常 有可用券 1. 用过期券结算 2. 订单未满门槛用满减券 过期券不可用提示;未达门槛拦截『还差 X 元可用』;不重复抵扣 优惠券 —
TC-P-58-E SC-P-58 会员购买 家长 P2 异常 未购会员 1. 支付失败 2. 重复购买同档位 失败回滚不解锁;重复购买幂等仅 1 次、不双扣 MemberController —
TC-P-59-E SC-P-59 会员权益 家长 P2 异常 已购会员 1. 会员已过期仍看权益 2. 越权看他人权益 过期提示『会员已失效』;越权 403;权益随档位 MemberController —
TC-P-60-E SC-P-60 会员续费 家长 P3 异常 会员将到期 1. 续费时原会员未到期 2. 续费金额非法(负) 未到期续费叠加计算正确(延期);负金额 400 MemberController —
TC-P-61-E SC-P-61 联系人 家长 P2 异常 联系人入口 1. 添加重复手机号联系人 2. 手机号格式非法 重复号码去重提示;非法格式 400;不建重复 ContactCard/contact-detail —
TC-P-62-E SC-P-62 联系人导入 家长 P3 异常 联系人存在 1. 导入 CSV 含格式错误行(缺电话) 2. 文件非 CSV 错误行跳过并报告『第 N 行格式错误』;非 CSV 拒绝;正确行入库 ContactImport —
TC-P-63-E SC-P-63 联系人权限 家长 P2 异常 联系人存在 1. 非本人查看他人联系人详情 2. 设可见权限为非法值 越权查看 403;非法权限值 400;最小权限保底 ContactCard —
TC-P-64-E SC-P-64 个人资料 家长 P2 异常 已登录 1. 绑手机填非 11 位 2. 昵称含 emoji 超长 手机格式 400;昵称超长/非法字符拦截;保存生效 AuthController —
TC-P-65-E SC-P-65 通知设置 家长 P3 异常 已登录 1. 关闭所有通知含安全类 2. 提醒时间填 25:00 关键安全通知仍推送不被关;非法时间 400 消息服务 —
TC-P-66-E SC-P-66 隐私设置 家长 P3 异常 已登录 1. 设数据共享范围为非法枚举 2. 设『完全公开』敏感字段 非法范围 400;敏感字段最小权限保底不外露 隐私设置 —

本轮扩展异常流(派生自新增场景)

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-P-67-E P-67 报告代传/report-proxy 家长 P1 异常 已登录(默认 家长);相关前置数据就绪 1. 用他人孩子的代传令牌 2. 代传报告归属非授权孩子 越权代传他人孩子 403 被拒;报告归属校验失败不入档;授权令牌失效提示 报告代传/report-proxy —
TC-P-68-E P-68 家庭天盘 家长 P2 异常 已登录(默认 家长);相关前置数据就绪 1. 某成员报告/能量数据缺失 2. 非家庭成员访问 缺失项降级展示不白屏;非成员访问 403;仅本家庭可见 家庭天盘 —
TC-P-69-E P-69 精准营养 家长 P2 异常 已登录(默认 家长);相关前置数据就绪 1. 目标热量填负/超上限(如 -100 / 100000) 2. 目标非数字 负/超上限 400『热量需在合理区间』;非数字 400;目标生效影响食谱 精准营养 —
TC-P-70-E P-70 舌诊情绪识别 家长 P2 异常 已登录(默认 家长);相关前置数据就绪 1. 上传非照片(纯文本)/模糊图 2. 识别置信度<阈值 非照片/模糊拒绝提示『请上传清晰舌苔照』;低置信度提示『识别不清晰,建议重拍』;隐私标注不外露 舌诊情绪识别 —
TC-P-71-E P-71 AuthController 家长 P2 异常 已登录(默认 家长);相关前置数据就绪 1. 有进行中订单时注销 2. 注销后原 token 仍调用 有在途订单拦截『请先处理进行中订单』;注销后 token 失效 401 不可登录 AuthController —
TC-P-72-E P-72 数据导出(GDPR) 家长 P2 异常 已登录(默认 家长);相关前置数据就绪 1. 越权导出他人数据 2. 1 分钟内重复申请导出 越权导出 403;频次限制提示『导出过于频繁』;敏感字段脱敏 数据导出(GDPR) —
TC-P-73-E P-73 家庭/成员 家长 P2 异常 已登录(默认 家长);相关前置数据就绪 1. 选非本家庭孩子 2. 切换时当前孩子未完成任务丢失 非本家庭孩子不可选 400;切换保持各孩子上下文隔离不串 家庭/成员 —
TC-P-74-E P-74 规划师绑定 家长 P2 异常 已登录(默认 家长);相关前置数据就绪 1. 解绑时有在途方案/预约 2. 绑非本家庭规划师 在途未完成提示『请先处理在途服务』;非本家庭 T 绑定 400 被拒 规划师绑定 —
TC-P-75-E P-75 优惠券 家长 P2 异常 已登录(默认 家长);相关前置数据就绪 1. 库存为 0 领券 2. 重复领同一券 库存 0 提示『已领完』;重复领幂等仅入卡包 1 张 优惠券 —
TC-P-76-E P-76 活动管理 家长 P1 异常 已登录(默认 家长);相关前置数据就绪 1. 名额仅剩 1 时并发报名 2 人 2. 名额已满再报名 并发超卖拦截仅 1 人成功(CFC 已修 bug 回归);满额拒『名额已满』;重复报名幂等 活动管理 —
TC-P-77-E P-77 活动 家长 P2 异常 已登录(默认 家长);相关前置数据就绪 1. 同一天重复打卡 2. 机器刷量(1 秒 100 次) 重复打卡幂等仅计 1 次;刷量风控拦截;进度累计正确 活动 —
TC-P-78-E P-78 消息服务 家长 P2 异常 已登录(默认 家长);相关前置数据就绪 1. 越权看他人消息 2. 消息 id 不存在 越权消息不可见 403;不存在 404;分页正常 消息服务 —
TC-P-79-E P-79 消息服务 家长 P2 异常 已登录(默认 家长);相关前置数据就绪 1. 关全部含关键安全 2. 非法提醒时间 关键安全通知不可关;非法时间 400 消息服务 —
TC-P-80-E P-80 会员/订单 家长 P2 异常 已登录(默认 家长);相关前置数据就绪 1. 已消费会员申请退 2. 重复退 3. 发票信息缺失 已消费不退提示;重复退拦截;发票信息校验缺失字段 400 会员/订单 —
TC-P-81-E P-81 方案/任务 家长 P2 异常 已登录(默认 家长);相关前置数据就绪 1. 恢复已超有效期的草稿 2. 并发存两版草稿 过期草稿提示『草稿已失效』;并发存后者覆盖且提示冲突 方案/任务 —
TC-P-82-E P-82 搜索 家长 P2 异常 已登录(默认 家长);相关前置数据就绪 1. 搜他人家庭私有内容 2. 空关键词 越权结果过滤不可见;空结果不报错提示『请输入关键词』 搜索 —
TC-P-83-E P-83 客服 家长 P2 异常 已登录(默认 家长);相关前置数据就绪 1. 反馈含身份证号等敏感信息 2. 附件 >10MB 敏感信息脱敏存储;附件超限 400『附件不超过 10MB』 客服 —
TC-P-84-E P-84 分享 家长 P2 异常 已登录(默认 家长);相关前置数据就绪 1. 用已失效分享链接 2. 越权分享他人私有内容 失效链接提示『分享已失效』;越权分享 403 被拒 分享 —
TC-P-85-E P-85 AuthController 家长 P2 异常 已登录(默认 家长);相关前置数据就绪 1. 新设备登录触发风控(异地) 2. 退出后旧 token 仍调用 异常设备二次验证/拦截;退出后旧 token 失效 401 AuthController —
TC-P-86-E P-86 勋章/排行 家长 P2 异常 已登录(默认 家长);相关前置数据就绪 1. 看他人家庭排行榜 2. 排名数据实时性滞后 非本家庭榜不可见 403;排名仅本家庭数据,刷新即更新 勋章/排行 —

权限流用例(派生自正常流)

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,不泄露他人数据;横向越权被拒 隐私设置 —

本轮扩展权限流(派生自新增场景)

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,不泄露他人数据;横向越权被拒 勋章/排行 —

五维指标变化专项用例(本轮新增 SC-P-87~93)

完整用户故事见 ../user-scenarios/07-five-dimension.md(ED-1~7)。每条含正常流 + 具体异常流(-E) + 权限流(-P),异常流为明确故障注入与可判定断言,非模板文案。

正常流

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-P-87 SC-P-87 能量/任务 家长 P1 功能 测试家庭1 含 B;EnergyRuleEngine 已配任务→维度归因;B 各维度 balance 已知 1. B 完成任务 2. 家长 POST /api/task/approve 通过 3. 查 B EnergyLog/EnergyBalance B 对应维度 balance/totalEarned +amount;EnergyLog.sourceType=task、balanceAfter 正确;概览/沙盘随新值刷新 EnergyRuleEngine/TaskController tests/e2e/energy-system.spec.js
TC-P-88 SC-P-88 能量/心愿 家长 P1 功能 B 已提心愿且积满;B 某维度 balance≥兑换额;另造 balance 不足对照 1. 家长通过心愿兑换 POST /api/energy/deduct-for-wish 2. 查 EnergyLog/EnergyBalance 扣减成功,EnergyLog 负 amount、balanceAfter=balance-额;balance/totalSpent 同步;心愿已兑换 EnergyController/RewardController —
TC-P-89 SC-P-89 能量/手动 家长 P2 功能 目标成员 B 存在;POST /api/energy/grant 可用 1. 家长调用 grant 指定 memberId/维度/amount/备注 2. 查 EnergyLog/EnergyBalance 指定维度 +amount;EnergyLog.sourceType=manual 留痕;balanceAfter 更新 EnergyController —
TC-P-90 SC-P-90 能量/日上限 家长 P1 功能 DimensionDailyLimit 已配某维度 dailyLimit=N;B 当日该维度接近 N 1. 当日多次触发该维度能量(任务/打卡/活动/手动)2. 观察累计与次日 累计达 N 后新增触发不再累加(或截断到上限);跨日 00:00 清零可重新获取 DimensionDailyLimit —
TC-P-91 SC-P-91 能量/健康报告 家长 P0 功能 持有募极生物 PDF;报告预览完成(SC-P-22) 1. 报告确认入库(SC-P-23)2. 查 HealthDimensionScore 与 score-history/family-score-history 七维/六维评分刷新;概览/沙盘/score-history 按新值重算;时间序列反映改善 HealthReportController tests/e2e/flora-microbiome-flow.spec.js
TC-P-92 SC-P-92 能量/配置 家长 P1 功能 POST /api/energy/configure 与权重配置可用;存量能量存在 1. 运营调整来源比例/权重 2. 家长查概览/沙盘/天盘 按新口径重算并展示;存量重算提示 EnergyController/维度配置 tests/e2e/energy-rules-config.spec.js
TC-P-93 SC-P-93 能量/文章·活动 家长 P1 功能 ArticleService/ActivityService 能量规则已配;当日维度未触顶 1. 发布/评论文章或报名活动 2. 查 EnergyLog 对应维度 +amount;sourceType=article/activity;balanceAfter 更新 ArticleService/ActivityService —

异常流(-E,具体故障注入)

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-P-87-E SC-P-87 能量/任务 家长 P2 异常 B 存在;另造"任务类型无归因配置""规则返回 null"对照 1. 重复审批同任务实例 2. 任务类型未配归因维度 3. approve 参数非法(空 taskId/非本家庭任务)4. 规则计算异常 1. 重复审批幂等不重复加、无第二条 EnergyLog 2. 无归因维度不 500、按规则落 sourceType 或不加 3. 参数非法统一 400、不改动能量 4. 规则异常告警、不写脏流水 EnergyRuleEngine —
TC-P-88-E SC-P-88 能量/心愿 家长 P1 异常 B 某维度 balance 不足对照 + 已兑换心愿 1. 余额不足兑换 2. 并发兑换同一心愿 3. 已兑换心愿再兑换 4. deduct 参数非法(空 wishId) 1. 余额不足明确"能量不足"、心愿保持待审批、无负余额 2. 并发仅一次成功、二次幂等拒 3. 已兑换再提交拒、无负流水 4. 参数非法 400、不扣减 EnergyController/RewardController —
TC-P-89-E SC-P-89 能量/手动 家长 P2 异常 目标成员存在 + 造负额/超大额/非法维度编码 1. 负额/超大额 grant 2. 维度编码不存在 3. 重复发放同工单号 1. 400 拦截不发放 2. 400 不写脏数据 3. 按幂等/业务规则不重复加 EnergyController —
TC-P-90-E SC-P-90 能量/日上限 家长 P2 异常 DimensionDailyLimit 配 dailyLimit;造跨时区/上限 0 或负对照 1. 多来源同维度并发触顶 2. 手动是否计入需断言 3. 客户端改时间绕过 4. 日上限配 0/负 1. 触顶后其余来源同维度受限 2. 手动口径断言一致 3. 以服务端日期为准、不绕过 4. 上限 0/负 拒绝配置或按 0、不崩溃 DimensionDailyLimit —
TC-P-91-E SC-P-91 能量/健康报告 家长 P1 异常 报告预览完成 + 造"类型不一致""缺维度字段""重复入库" 1. 入库前取消 2. 两次非同类报告对比 3. 解析缺某维度字段 4. 重复入库同报告 1. 不刷新、原评分保留 2. 类型不一致不可比/提示、不串维度 3. 该维度保持上一值或空态、不 500 4. 重复入库幂等不重复刷新 HealthReportController —
TC-P-92-E SC-P-92 能量/配置 家长 P2 异常 配置可用 + 造"权重和≠100%""未同步""比例非法" 1. 权重和≠100% 2. 配置未同步到前端缓存 3. 比例参数非法(负/超 1) 1. 报警并拒或归一化、不静默错算 2. 展示兜底旧值并提示"同步中"、不显示错乱 3. 400 拦截 EnergyController/维度配置 —
TC-P-93-E SC-P-93 能量/文章·活动 家长 P2 异常 能量规则已配 + 造"刷量""触顶""内容下架""活动满/结束" 1. 高频评论(刷量)2. 当日已触顶 3. 内容含敏感词被下架 4. 活动名额满/已结束 1. 风控拦截不计能量 2. 触顶不累加 3. 按规则回收或保留、不双发 4. 参与被拒不发放 ArticleService/ActivityService —

权限流(-P)

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-P-87-P SC-P-87 能量/任务 家长 P1 权限 家庭1(A+B+C),无关家庭 F9 1. 家长 A 查/改非本家庭成员(如 F9 成员)能量 2. 孩子 B 直接调 grant 1. 非本家庭能量访问 403 2. 孩子端无 grant 入口、直接调被 role 校验拒 JwtInterceptor+role —
TC-P-88-P SC-P-88 能量/心愿 家长 P1 权限 家庭1 + F9 1. 家长 A 操作非本家庭心愿兑换 2. 孩子 B 直接调 deduct 1. 非本家庭心愿 403 2. 孩子端无扣减入口、直接调被拒 EnergyController —
TC-P-89-P SC-P-89 能量/手动 家长 P1 权限 家庭1 + F9 1. 家长 A 给 F9 成员 grant 2. 孩子 B 调 grant 1. 非本家庭 grant 403 2. 孩子端拒 JwtInterceptor+role —
TC-P-90-P SC-P-90 能量/日上限 家长 P2 权限 家庭1 + F9 1. 家长 A 查 F9 成员日上限累计 2. 越权改 F9 DailyLimit 1. 他人累计不可见 403 2. 越权改配置 403 DimensionDailyLimit —
TC-P-91-P SC-P-91 能量/健康报告 家长 P1 权限 家庭1 + F9 1. 家长 A 查 F9 成员 HealthDimensionScore/score-history 非本家庭健康维度数据 403、不泄露 HealthReportController —
TC-P-92-P SC-P-92 能量/配置 家长 P1 权限 家庭1 + 运营 M 1. 家长 A 调全局权重/configure 改配置 非 admin 改全局 403 EnergyController —
TC-P-93-P SC-P-93 能量/文章·活动 家长 P2 权限 家庭1 + F9 1. 家长 A 查 F9 成员文章/活动能量流水 非本家庭流水 403 ArticleService/ActivityService —

成就与成长历史专项用例(SC-P-94~96,2026-11-06 需求变更 A/B/D)

需求源:docs/需求分析/2026-11-06-成就成长打卡需求变更.md 变更 A/B/D;场景源:tests/user-scenarios/应用场景总览.md 行 339-341;能力键台账:docs/tdd/orchestration/sc-key-map.md(task.history.view / growth.history.view / achievement.grid.fiveCol)。每条含正常流 + 具体异常流(-E) + 权限流(-P)。接口路径以实现为准,未在需求/接口参考中明确的标「需核实」。

正常流

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-P-94 SC-P-94 成就/历史完成任务 家长 P1 功能 家长 A 登录;该成员存在 ≥1 条 status=completed 任务;POST /api/tasks/history 可用 1. 进入我的成就页 2. 点「完成任务」卡 3. 查看历史完成任务页首屏 4. 翻至第 2 页后返回成就页 1. 进入「历史完成任务」页(非 /pages/tasks/tasks),标题正确 2. 仅展示该成员已完成任务、按完成时间倒序 3. page/size 生效,总数与后端 Page<Task> 一致 4. 返回正常;原任务管理入口 /pages/tasks/tasks 保持可用、未被改造 变更A / TaskController.getTaskHistory(/api/tasks/history) + utils/api.js:getTaskHistory —
TC-P-95 SC-P-95 成就/成长历史记录 家长 P1 功能 家长 A 登录;已存在饮食/运动/睡眠/心情等多类型「今日成长」打卡记录及成长档案记录 1. 点「成长记录」卡 2. 查看聚合列表 3. 按类型筛选「睡眠」 4. 点单条记录看明细/回链 5. 分页 1. 进入「成长历史记录」页(非成长首页) 2. 聚合展示全部打卡记录、按日期倒序、类型标识清晰 3. 筛选后仅剩该类型记录 4. 明细/回链可用且数据与列表一致 5. 打卡记录与档案记录口径明确(合并或分栏)且不重复计数;空态「暂无成长记录」 变更B / HealthCheckinController /api/health/checkin/list + GrowthController /api/growth/record/list(合并口径需核实) —
TC-P-96 SC-P-96 成就/布局 家长 P1 功能 家长 A 登录;可切换 320/375/414px 三种视口 1. 打开「我的成就」区块 2. 量测 5 张卡(连续打卡/完成任务/收集勋章/成长记录/参加挑战)列宽与所在行 3. 检查「我的团队」「卡券中心」 4. 长昵称/超长数值/窄屏复测 1. 5 卡单行 5 列等比(各约 20%),不换行、不错位、不溢出 2. 三种视口均保持单行 3. 「我的团队」「卡券中心」列数与间距与改动前一致(独立类隔离,未受 .achievement-grid 全局改动影响) 4. 超长文案省略不撑破网格 变更D / profile.vue「我的成就」区块独立网格类(.ach-item{width:25%} → 20%) —

异常流(-E,具体故障注入)

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-P-94-E SC-P-94 成就/历史完成任务 家长 P2 异常 造「零完成记录」「page=-1/超大」「category 非法」「history 接口 5xx 或超时」四组对照 1. 零完成记录进页 2. 传 page=-1 与 page=999999 3. 传非法 category 4. 令接口返回 5xx/超时后重试 1. 展示空态「暂无已完成任务」、不白屏、不显示他类任务 2. 非法分页 400 或归一到首页、不返回错乱数据 3. 非法 category 400 或忽略、不 500 4. 失败有友好降级与重试入口、不残留半页脏数据;原任务列表入口仍可用 变更A 验收口径 / TaskController.getTaskHistory 分页参数校验 —
TC-P-95-E SC-P-95 成就/成长历史记录 家长 P2 异常 造「checkin 接口超时」「growth/record 返回空」「两源同一记录 ID」「筛选类型非法/日期倒挂」「明细 ID 不存在」 1. 单源超时下进页 2. 另一源返回空 3. 注入两源重复 ID 4. 传非法类型与 start>end 5. 点已删除记录的明细 1. 部分源失败时展示可用源并提示、不 500 不白屏 2. 空源给出空态、不误判为无记录 3. 同源/跨源重复 ID 去重、不重复计数 4. 非法筛选 400 或回退全量、不返回错序数据 5. 明细缺失给明确提示并可返回列表 变更B 风险项(聚合口径需实现方回链)/ 两接口降级契约 —
TC-P-96-E SC-P-96 成就/布局 家长 P2 异常 造「连续打卡 99999 天」「卡名超长」「图标加载失败」「320px 窄屏」「系统字体放大 150%」 1. 注入超长数值与文案 2. 断网或改坏图标 URL 3. 320px 与放大字体下复测 4. 快速横竖屏切换 1. 数值/文案省略或换行在卡内、不撑破 20% 列宽、5 卡仍单行 2. 图标失败有占位、不错位 3. 窄屏/大字体下不换行错位、不出现横向滚动 4. 切换后列宽重算正确、「我的团队」「卡券中心」不受影响 变更D 隔离要求(不得改 .achievement-grid 全局) —

权限流(-P,针对具体越权对象)

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-P-94-P SC-P-94 成就/历史完成任务 家长 P1 权限 家庭1(A+B)与无关家庭 F9(成员 D)均有已完成任务;孩子 B 可登录 1. 家长 A 调 /api/tasks/history 传 F9 成员 memberId 2. 孩子 B 直接调同一接口查家长 A 的任务历史 3. 未登录访问历史页 1. 非本家庭 memberId 403,响应不泄露 F9 任务标题/完成时间 2. 孩子端无「历史完成任务」入口,直调被 role 校验拒(403/401) 3. 未登录 401 且跳登录、不返回任务数据 JwtInterceptor + 家庭归属校验(TaskController.getTaskHistory) —
TC-P-95-P SC-P-95 成就/成长历史记录 家长 P1 权限 家庭1 与 F9 各有打卡/档案记录 1. 家长 A 传 F9 成员 ID 查 /api/health/checkin/list 与 /api/growth/record/list 2. 孩子 B 查非本人成长档案记录 3. 家长 A 尝试改他人打卡记录 1. 两类接口对非本家庭成员一律 403、不返回记录内容 2. 孩子端仅见本人打卡、直调他人 403 3. 家长无编辑权限、写操作被拒(403)、数据不被改动 HealthCheckinController / GrowthController + 家庭归属校验 —
TC-P-96-P SC-P-96 成就/布局 家长 P2 权限 家长 A 与 F9 家长 D 各有不同成就统计值;孩子 B 可登录 1. A、D 分别登录看 5 张卡数值 2. A 带 F9 成员 memberId 调成就统计接口 3. 孩子 B 直接拼家长端成就页路由 1. 每张卡数值仅为当前登录成员自己的,A 与 D 数值互不可见 2. 传他人 memberId 403、不返回他人统计值(样式改造不得顺带暴露数据) 3. 孩子端被 role 校验拦截、无「我的成就」5 列区块及其数据 变更D 隔离要求 + profile.vue 成就统计取值归属(接口名需核实) —

非功能测试用例(性能 / 兼容 / 安全)

非功能维度:性能(大文件/并发/限流)、兼容(多端/多浏览器/主题)、安全(IDOR/XSS/上传/鉴权/SSRF)。编号后缀 -N 与正常流/异常流(-E)/权限流(-P)并列。

TC 编号 所属场景 模块 角色 优先级 类型 前置条件 测试步骤 预期结果 关联需求/设计 对应 e2e
TC-P-N01 SC-P-10 健康报告 家长 P1 性能 持有 20MB+ 多页募极 PDF 1. 上传大报告 2. 观察上传+解析耗时 上传+解析 ≤ 30s;超时走 AiGateway 友好降级而非 500;进度可见 健康报告上传解析 —
TC-P-N02 SC-P-13 AI 方案 家长 P1 性能 孩子 B 有报告;会员 1. 并发发起 3 个不同目标方案生成 2. 比对各方案 各方案独立完整、数据不串;单请求 P95 ≤ 15s;LangGraph 超时回退 Fallback AiGateway/LangGraph e2e/ai-plan-task-flow
TC-P-N03 SC-P-5 任务 家长 P2 性能 家庭累计 ≥ 500 任务 1. 打开任务列表 2. 翻页 首屏 ≤ 2s;翻页流畅;分页/虚拟滚动生效 TaskController —
TC-P-N04 SC-P-86 全局搜索 家长 P2 性能 家庭含大量任务/成员/报告 1. 输入关键词搜索 2. 测量响应 搜索结果 ≤ 1.5s;匹配高亮;空结果空态 搜索接口 —
TC-P-N05 SC-P-10 报告查看 家长 P2 性能 多报告(≥10 份) 1. 打开报告列表 2. 进详情 列表/详情渲染 ≤ 2s;七维评分刷新不卡顿 报告解析 —
TC-P-N06 SC-P-8 双角色 家长 P1 兼容 iOS15/16、Android12/13、微信小程序、H5 1. 各端切孩子视角→打卡→切回 四端功能一致;切回家长需密码;孩子端不可回切 双角色铁律 e2e/family-management
TC-P-N07 SC-P-12 饮食推荐 家长 P2 兼容 微信 webview / Safari / Chrome / 小程序 1. 各端打开饮食推荐页 推荐列表与可吃/慎吃标签布局正常;图片自适应 饮食推荐 —
TC-P-N08 SC-P-86 设置 家长 P2 兼容 亮/暗主题、320~430dp 屏宽 1. 切换主题与屏幕宽度 无样式错位;可点区域 ≥ 44px;无横向滚动 前端适配 —
TC-P-N09 SC-P-11 报告闭环 家长 P0 安全 存在家庭 F2 的报告/方案 1. 用家庭 F1 的 token 请求 F2 报告详情 API 返回 403(IDOR 横向越权拦截);不泄露跨家庭数据 报告鉴权 e2e/api/nonfunc-security.spec.js
TC-P-N10 SC-P-18 AI 对话 家长 P1 安全 已登录 1. 在 AI 对话输入 <script>alert(1)</script> 2. 提交并刷新 输入后端 HTML 转义存储/渲染;无脚本执行 AIChatController e2e/api/nonfunc-security.spec.js
TC-P-N11 SC-P-10 健康报告 家长 P0 安全 准备非 PDF/超大/含脚本文件名 1. 上传 .exe/.html/50MB+ 文件 类型/大小校验拒绝(400/413);不落盘执行;不触发解析 上传校验 e2e/api/nonfunc-security.spec.js
TC-P-N12 SC-P-8 双角色 家长 P1 安全 抓包工具 1. 拦截切回家长请求 2. 篡改 memberId 或伪造 服务端二次校验身份;篡改无效;不越权 switch 接口鉴权 —
TC-P-N13 SC-P-86 设置 家长 P1 安全 审查 API 响应与日志 1. 调报告/孩子接口 2. 检查响应与日志是否含明文 PII 无身份证/手机号明文泄露;日志脱敏;状态变更含 CSRF token 校验 数据安全 —