|
|
@@ -118,97 +118,97 @@
|
|
|
|
|
|
| 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-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-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. 观察处理 | 识别失败或解析超时给出明确提示,进入未知聚类/草稿而非 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-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;排名仅本家庭数据,刷新即更新 | 勋章/排行 | — |
|
|
|
|
|
|
## 权限流用例(派生自正常流)
|
|
|
|
|
|
@@ -305,6 +305,43 @@
|
|
|
| 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` | — |
|
|
|
+
|
|
|
## 非功能测试用例(性能 / 兼容 / 安全)
|
|
|
|
|
|
> 非功能维度:性能(大文件/并发/限流)、兼容(多端/多浏览器/主题)、安全(IDOR/XSS/上传/鉴权/SSRF)。编号后缀 `-N` 与正常流/异常流(-E)/权限流(-P)并列。
|