关联场景:
../user-scenarios/04-teacher.md。对应 e2e:../e2e/roles/teacher/*.spec.js、../e2e/assessment-order-flow.spec.js、../e2e/dan-report-flow.spec.js、../e2e/ai-plan-task-flow.spec.js。
| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
|---|---|---|---|---|---|---|---|---|---|---|
| TC-T-01 | T-1 | 认证/双角色 | 规划师 | P0 | 权限 | 已分配规划师账号 | 1. 密码登录 2. 切回家长视角 3. 访问无关家庭数据 | 进入仪表板;可切回自身家长视角;越权访问无关家庭被拒 | AuthController;规划师可切回家长 |
e2e/roles/teacher/login.spec.js |
| TC-T-02 | T-2 | 家庭绑定 | 规划师 | P1 | 功能 | 家长已生成邀请码 | 1. 输入邀请码绑定 2. 查看「我的家庭」 | 家庭出现在列表,可见成员;无效码提示失败;重复绑定幂等 | FamilyInviteController |
e2e/roles/teacher/family-binding.spec.js |
| TC-T-03 | T-3 | 健康报告 | 规划师 | P0 | 功能 | 已绑定家庭与孩子 B | 1. 上传募极生物 PDF+选 B 2. 三阶段:上传→解析预览→确认入库 | 报告进入孩子档案;健康列表可见;识别失败进草稿/未知聚类 | 报告上传解析;规划师代传 | e2e/roles/teacher/dan-report-flow.spec.js |
| TC-T-04 | T-3 | 报告审核 | 规划师 | P1 | 功能 | 有报告草稿(如 id=28) | 1. 打开审核队列草稿 2. 确认 | 草稿确认入库,健康报告列表可见;确认前可取消不入库 | 报告审核 | — |
| TC-T-05 | T-4 | 方案管理 | 规划师 | P0 | 功能 | 有 generated/reviewed/active 方案 | 1. 打开方案管理页 | 列表正常渲染(无白屏);函数不报未定义 | 方案管理;黑盒回归项 | e2e/admin-panel.spec.js(参考) |
| TC-T-06 | T-4 | 方案审核 | 规划师 | P0 | 功能 | 家长已提交方案(generated) | 1. 对方案 A 点「批准」 | 状态 generated→reviewed | 方案状态机 | — |
| TC-T-07 | T-5 | 方案激活 | 规划师 | P0 | 功能 | 方案已 reviewed | 1. 点「激活」→确认 2. 激活后查看孩子任务 | 状态 reviewed→active;生成引导任务+模板任务;孩子 B 出现方案启动任务 | 激活拆任务 | e2e/ai-plan-task-flow.spec.js |
| TC-T-08 | T-5 | 方案激活·幂等 | 规划师 | P0 | 异常 | 方案已 active | 1. 对已激活方案再次激活 | 返回状态异常提示,不重复生成任务(幂等) | 幂等约束(黑盒回归) | — |
| TC-T-09 | T-6 | 任务审核 | 规划师 | P1 | 功能 | 孩子已提交任务 | 1. 打开家庭任务列表 2. 审核 | 通过→孩子得积分;驳回→退回重做;越权审核非绑定家庭被拒 | TaskController |
— |
| TC-T-10 | T-7 | 测评录入 | 规划师 | P0 | 功能 | 家长已支付测评订单(待安排→已预约) | 1. 打开测评订单 2. 录入各维度得分 3. 保存 | 结果可见;触发规则引擎自动生成方案(generated);必填缺失→校验拦截;重复录入覆盖 | AssessmentAppointmentController/DanAssessmentController |
e2e/assessment-order-flow.spec.js |
| TC-T-11 | T-8 | 成长计划 | 规划师 | P1 | 功能 | 已绑定家庭 | 1. 打开「成长计划」页 | 列表显示自己创建的计划(childName/状态/时间);不再 400 | GrowthPlanController;黑盒回归 |
e2e/guide-family-list.spec.js(参考) |
| TC-T-12 | T-8 | 套餐 | 规划师 | P1 | 功能 | 套餐素材就绪 | 1. 创建「专注力提升套餐」含任务项 2. 提交审核 3. 审核通过后购买 | 上架前提交审核;审核通过后可被市场购买;任务项为空→校验拦截 | GuidePackageController |
— |
confirm/{id} → 返回「您不是被指派的测评师」,status 不变(TC-DV-05)。confirm → 当前仍置 1(非法回退)【缺陷】,期望失败(TC-DV-02)。cancel/{id} 不接收调用者身份,任何登录用户凭 id 即可取消他人预约【高危缺陷】;期望增加归属校验(TC-DV-01)。test-cases/deep-dive-assessment-appointment.md。| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
|---|---|---|---|---|---|---|---|---|---|---|
| TC-T-13 | SC-T-13 | 数据隔离 | 规划师 | P1 | 权限 | 已绑定家庭 | 1. 列家庭/成员/报告 2. 越权查非绑定家庭 | 非绑定家庭统一 403;仅见绑定家庭数据 | 控制器内 role 检查 | — |
| TC-T-14 | SC-T-14 | 方案编辑 | 规划师 | P1 | 功能 | 方案存在 | 1. 编辑板块/任务项 2. 保存 | 编辑后状态标记已改;保存生效 | 方案管理 | — |
| TC-T-15 | SC-T-15 | 套餐任务 | 规划师 | P1 | 功能 | 套餐存在 | 1. 增删任务项 2. 重算 | 空套餐拦截上架;重算后任务项正确 | GuidePackageController |
— |
| TC-T-16 | SC-T-16 | 健康总览 | 规划师 | P1 | 功能 | 已绑定家庭 | 1. 家庭仪表板→能量/报告/方案汇总 | 数据缺失项降级展示不 500 | 仪表板 | — |
| TC-T-17 | SC-T-17 | 计划进度 | 规划师 | P1 | 功能 | 计划存在 | 1. 计划→任务完成度 | 进度计算准确;与任务状态一致 | GrowthPlanController |
— |
| TC-T-18 | SC-T-18 | 批量任务 | 规划师 | P1 | 功能 | 多孩子成员 | 1. 选多成员→批量建任务 | 部分失败不影响其他成员;各自独立落库 | TaskController |
— |
| TC-T-19 | SC-T-19 | 消息推送 | 规划师 | P1 | 功能 | 已绑定客户 | 1. 发消息/提醒→客户收到 | 客户端收到;免打扰设置生效 | 消息服务 | — |
| TC-T-20 | SC-T-20 | 退出/切换 | 规划师 | P1 | 功能 | 已登录 | 1. 退出→清 token 2. 切回家长 | 退出清缓存;切回家长视角正常 | AuthController |
— |
| TC-T-21 | SC-T-21 | 报告对比 | 规划师 | P1 | 功能 | 多份报告 | 1. 多报告对比→差异标注 | 报告类型一致才可比对;差异清晰标注 | 报告管理 | — |
| TC-T-22 | SC-T-22 | 方案归档 | 规划师 | P2 | 功能 | 方案完成 | 1. 归档→只读 | 归档后方案仅可读,不可再编辑/激活 | 方案管理 | — |
| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
|---|---|---|---|---|---|---|---|---|---|---|
| TC-T-23 | T-23 | 报告代传/report-proxy | 规划师 | P1 | 功能 | 已登录(默认 规划师);相关前置数据就绪 | 1. 按场景流程执行:上传 PDF+选孩子 → 解析 → 关联孩子档案 2. 观察结果 | 达成目标:帮客户上传;边界:非绑定家庭拒;识别失败进草稿 | 报告代传/report-proxy | — |
| TC-T-24 | T-24 | 规划师绑定 | 规划师 | P1 | 功能 | 已登录(默认 规划师);相关前置数据就绪 | 1. 按场景流程执行:解绑 → 重绑新家庭 2. 观察结果 | 达成目标:更换绑定;边界:在途方案/预约处理;非绑定家庭不可操作 | 规划师绑定 | — |
| TC-T-25 | T-25 | 舌诊情绪识别 | 规划师 | P1 | 功能 | 已登录(默认 规划师);相关前置数据就绪 | 1. 按场景流程执行:上传/录入 → 关联报告 2. 观察结果 | 达成目标:录入识别结果;边界:识别失败回退人工 | 舌诊情绪识别 | — |
| TC-T-26 | T-26 | 精准营养 | 规划师 | P1 | 功能 | 已登录(默认 规划师);相关前置数据就绪 | 1. 按场景流程执行:设目标 → 生成方案 2. 观察结果 | 达成目标:基于营养目标出方案;边界:目标非法拦截 | 精准营养 | — |
| TC-T-27 | T-27 | 家庭天盘 | 规划师 | P1 | 功能 | 已登录(默认 规划师);相关前置数据就绪 | 1. 按场景流程执行:打开天盘 → 解读 2. 观察结果 | 达成目标:给家庭看聚合视图并解读;边界:仅绑定家庭可见 | 家庭天盘 | — |
| TC-T-28 | T-28 | 内容安全 | 规划师 | P1 | 功能 | 已登录(默认 规划师);相关前置数据就绪 | 1. 按场景流程执行:AI 生成 → 敏感词/合规检查 → 放行/驳回 2. 观察结果 | 达成目标:复核 AI 敏感内容;边界:命中即拦截 | 内容安全 | — |
| TC-T-29 | T-29 | 数据导出(GDPR) | 规划师 | P1 | 功能 | 已登录(默认 规划师);相关前置数据就绪 | 1. 按场景流程执行:申请 → 生成包 → 下载 2. 观察结果 | 达成目标:导出客户数据;边界:授权/脱敏;越权拒 | 数据导出(GDPR) | — |
| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
|---|---|---|---|---|---|---|---|---|---|---|
| TC-T-01-E | T-1 | 认证/双角色 | 规划师 | P2 | 异常 | 已分配规划师账号 | 1. token 缺失/过期访问规划师接口 2. 非指派家庭直接拼路由访问 3. 模拟登录开关校验 | 缺失/过期 token 统一 401 跳登录;非绑定家庭路由 403 被拒;模拟登录开关仅在测试环境可开 | AuthController;规划师可切回家长 |
— |
| TC-T-02-E | T-2 | 家庭绑定 | 规划师 | P2 | 异常 | 家长已生成邀请码 | 1. 邀请码填错/过期(>7天) 2. 重复绑定同一家庭 3. 绑定已注销家庭 | 错码/过期提示『邀请码无效或已失效』;重复绑定幂等不双建;注销家庭不可绑 | FamilyInviteController |
— |
| TC-T-03-E | T-3 | 健康报告 | 规划师 | P2 | 异常 | 已绑定家庭与孩子 B | 1. 上传损坏PDF/非募极/超大 2. 解析超时 3. 选非绑定家庭的孩子 | 损坏/非募极提示明确(非募极提示请确认募极生物);超大超限提示;解析超时进草稿非500;非绑定孩子 403 | 报告上传解析;规划师代传 | — |
| TC-T-04-E | T-3 | 报告审核 | 规划师 | P2 | 异常 | 有报告草稿(如 id=28) | 1. 确认一个已被他人确认/删除的草稿 2. 解析超时草稿点确认 3. 非绑定家庭草稿 | 已删草稿提示『不存在』;解析中确认提示稍候;非绑定家庭草稿 403 不可操作 | 报告审核 | — |
| TC-T-05-E | T-4 | 方案管理 | 规划师 | P2 | 异常 | 有 generated/reviewed/active 方案 | 1. 方案列表接口超时 2. 方案含未定义函数引用渲染 3. 空方案列表 | 列表超时降级提示非500;黑盒回归:函数不再未定义、不白屏;空列表正常占位 | 方案管理;黑盒回归项 | — |
| TC-T-06-E | T-4 | 方案审核 | 规划师 | P2 | 异常 | 家长已提交方案(generated) | 1. 对非 generated 态(如已 reviewed)方案再点批准 2. 并发双批准 | 非 generated 态批准拦截(状态机守卫);并发双批准幂等仅 1 次状态跃迁 | 方案状态机 | — |
| TC-T-07-E | T-5 | 方案激活 | 规划师 | P2 | 异常 | 方案已 reviewed | 1. 激活时任务分解服务超时 2. 对已激活方案再激活 3. 激活非 reviewed 方案 | 超时回滚不残半任务、状态回 reviewed;已激活再激活幂等不重复生成任务;非 reviewed 激活拦截 | 激活拆任务 | — |
| TC-T-08-E | T-5 | 方案激活·幂等 | 规划师 | P2 | 异常 | 方案已 active | 1. 对已 active 方案连续点激活两次(并发) | 第二次幂等返回现状、不重复生成引导/模板任务;任务数与首次一致 | 幂等约束(黑盒回归) | — |
| TC-T-09-E | T-6 | 任务审核 | 规划师 | P2 | 异常 | 孩子已提交任务 | 1. 审核非绑定家庭孩子任务 2. 同任务并发双审 3. 超期任务审核 | 非绑定家庭 403;并发双审幂等仅计 1 次积分;超期任务审核被拒 | TaskController |
— |
| TC-T-10-E | T-7 | 测评录入 | 规划师 | P2 | 异常 | 家长已支付测评订单(待安排→已预约) | 1. 必填维度缺失录入 2. 同一订单重复录入 3. 分值越界(>量纲) 4. 非指派规划师 confirm | 必填缺失 400 不生成半成品;重复录入覆盖非新增;越界 400 不写脏分;非指派 confirm 返回『您不是被指派测评师』 | AssessmentAppointmentController/DanAssessmentController |
— |
| TC-T-11-E | T-8 | 成长计划 | 规划师 | P2 | 异常 | 已绑定家庭 | 1. 成长计划列表接口超时 2. 空计划列表 3. 越权查非绑定家庭计划 | 超时降级非500;空列表正常;非绑定家庭 403 | GrowthPlanController;黑盒回归 |
— |
| TC-T-12-E | T-8 | 套餐 | 规划师 | P2 | 异常 | 套餐素材就绪 | 1. 提交空任务项套餐上架 2. 套餐审核超时 3. 重复提交同一套餐 | 空任务项拦截上架;审核超时回退草稿非500;重复提交幂等 | GuidePackageController |
— |
| TC-T-13-E | SC-T-13 | 数据隔离 | 规划师 | P2 | 异常 | 已绑定家庭 | 1. 直接拼路由查非绑定家庭报告/任务 2. 越权访问并发 | 非绑定家庭统一 403;不泄露他人数据;并发越权同样 403 | 控制器内 role 检查 | — |
| TC-T-14-E | SC-T-14 | 方案编辑 | 规划师 | P2 | 异常 | 方案存在 | 1. 编辑已归档方案 2. 编辑非绑定家庭方案 3. 超长文本 | 归档方案编辑拦截;非绑定家庭 403;超长 400 | 方案管理 | — |
| TC-T-15-E | SC-T-15 | 套餐任务 | 规划师 | P2 | 异常 | 套餐存在 | 1. 套餐任务重算服务超时 2. 空套餐任务重算 3. 并发增删任务 | 重算超时降级提示非500;空套餐拦截;并发增删各自生效不丢项 | GuidePackageController |
— |
| TC-T-16-E | SC-T-16 | 健康总览 | 规划师 | P2 | 异常 | 已绑定家庭 | 1. 仪表板某成员报告/能量数据缺失 2. 接口超时 | 缺失项降级展示不白屏;超时降级提示非500;仅绑定家庭数据 | 仪表板 | — |
| TC-T-17-E | SC-T-17 | 计划进度 | 规划师 | P2 | 异常 | 计划存在 | 1. 计划进度接口超时 2. 进度与任务状态不一致时 | 超时降级非500;进度按任务状态实时计算、一致 | GrowthPlanController |
— |
| TC-T-18-E | SC-T-18 | 批量任务 | 规划师 | P2 | 异常 | 多孩子成员 | 1. 批量建任务时部分成员失败(如某成员已注销) 2. 并发批量 | 部分失败不影响其他成员独立落库;并发批量各自独立不串 | TaskController |
— |
| TC-T-19-E | SC-T-19 | 消息推送 | 规划师 | P2 | 异常 | 已绑定客户 | 1. 推送目标含已注销客户 2. 消息内容含注入 3. 免打扰客户 | 已注销客户跳过不报错;内容转义不执行脚本;免打扰不推送 | 消息服务 | — |
| TC-T-20-E | SC-T-20 | 退出/切换 | 规划师 | P2 | 异常 | 已登录 | 1. 退出后旧 token 仍调用 2. 切回家长视角时网络中断 | 旧 token 失效 401;网络中断退出清缓存、下次需重登;切回家长正常 | AuthController |
— |
| TC-T-21-E | SC-T-21 | 报告对比 | 规划师 | P2 | 异常 | 多份报告 | 1. 对比不同类型报告(菌群 vs DAN) 2. 对比不存在的报告 id | 类型不一致提示不可比;不存在 id 404;差异清晰标注 | 报告管理 | — |
| TC-T-22-E | SC-T-22 | 方案归档 | 规划师 | P3 | 异常 | 方案完成 | 1. 归档后尝试编辑/激活 2. 归档不存在方案 | 归档后编辑/激活拦截;不存在 404 | 方案管理 | — |
| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
|---|---|---|---|---|---|---|---|---|---|---|
| TC-T-23-E | T-23 | 报告代传/report-proxy | 规划师 | P2 | 异常 | 已登录(默认 规划师);相关前置数据就绪 | 1. 代传非绑定家庭孩子报告 2. 上传损坏/非募极 3. 识别失败 | 非绑定家庭 403 拒;损坏/非募极提示明确;识别失败进草稿非500 | 报告代传/report-proxy | — |
| TC-T-24-E | T-24 | 规划师绑定 | 规划师 | P2 | 异常 | 已登录(默认 规划师);相关前置数据就绪 | 1. 绑定有在途方案/预约的家庭 2. 绑定非本平台家庭 | 在途未完成提示先处理;非平台家庭绑定 400 拒 | 规划师绑定 | — |
| TC-T-25-E | T-25 | 舌诊情绪识别 | 规划师 | P2 | 异常 | 已登录(默认 规划师);相关前置数据就绪 | 1. 上传非照片/恶意图片(.php) 2. 识别置信度<阈值 | 类型校验拒绝(.php/.html)不执行;非照片/模糊拒;低置信度提示重拍 | 舌诊情绪识别 | — |
| TC-T-26-E | T-26 | 精准营养 | 规划师 | P2 | 异常 | 已登录(默认 规划师);相关前置数据就绪 | 1. 营养目标填负/超上限 2. 目标含 <script> |
负/超上限 400『热量需在合理区间』;脚本转义存储不执行 | 精准营养 | — |
| TC-T-27-E | T-27 | 家庭天盘 | 规划师 | P2 | 异常 | 已登录(默认 规划师);相关前置数据就绪 | 1. 打开非绑定家庭天盘 2. 某成员数据缺失 | 非绑定家庭 403;缺失项降级展示不白屏 | 家庭天盘 | — |
| TC-T-28-E | T-28 | 内容安全 | 规划师 | P2 | 异常 | 已登录(默认 规划师);相关前置数据就绪 | 1. AI 生成内容命中敏感词 2. 生成超时 | 命中即拦截不放行;超时 Fallback 兜底、友好提示非500 | 内容安全 | — |
| TC-T-29-E | T-29 | 数据导出(GDPR) | 规划师 | P2 | 异常 | 已登录(默认 规划师);相关前置数据就绪 | 1. 越权导出非绑定家庭数据 2. 1分钟内重复申请 | 越权导出 403;频次限制提示『导出过于频繁』;敏感字段脱敏 | 数据导出(GDPR) | — |
| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
|---|---|---|---|---|---|---|---|---|---|---|
| TC-T-01-P | T-1 | 认证/双角色 | 规划师 | P1 | 权限 | 已分配规划师账号 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | AuthController;规划师可切回家长 |
— |
| TC-T-02-P | T-2 | 家庭绑定 | 规划师 | P1 | 权限 | 家长已生成邀请码 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | FamilyInviteController |
— |
| TC-T-03-P | T-3 | 健康报告 | 规划师 | P1 | 权限 | 已绑定家庭与孩子 B | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | 报告上传解析;规划师代传 | — |
| TC-T-04-P | T-3 | 报告审核 | 规划师 | P1 | 权限 | 有报告草稿(如 id=28) | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | 报告审核 | — |
| TC-T-05-P | T-4 | 方案管理 | 规划师 | P1 | 权限 | 有 generated/reviewed/active 方案 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | 方案管理;黑盒回归项 | — |
| TC-T-06-P | T-4 | 方案审核 | 规划师 | P1 | 权限 | 家长已提交方案(generated) | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | 方案状态机 | — |
| TC-T-07-P | T-5 | 方案激活 | 规划师 | P1 | 权限 | 方案已 reviewed | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | 激活拆任务 | — |
| TC-T-08-P | T-5 | 方案激活·幂等 | 规划师 | P1 | 权限 | 方案已 active | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | 幂等约束(黑盒回归) | — |
| TC-T-09-P | T-6 | 任务审核 | 规划师 | P1 | 权限 | 孩子已提交任务 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | TaskController |
— |
| TC-T-10-P | T-7 | 测评录入 | 规划师 | P1 | 权限 | 家长已支付测评订单(待安排→已预约) | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | AssessmentAppointmentController/DanAssessmentController |
— |
| TC-T-11-P | T-8 | 成长计划 | 规划师 | P1 | 权限 | 已绑定家庭 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | GrowthPlanController;黑盒回归 |
— |
| TC-T-12-P | T-8 | 套餐 | 规划师 | P1 | 权限 | 套餐素材就绪 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | GuidePackageController |
— |
| TC-T-13-P | SC-T-13 | 数据隔离 | 规划师 | P1 | 权限 | 已绑定家庭 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | 控制器内 role 检查 | — |
| TC-T-14-P | SC-T-14 | 方案编辑 | 规划师 | P1 | 权限 | 方案存在 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | 方案管理 | — |
| TC-T-15-P | SC-T-15 | 套餐任务 | 规划师 | P1 | 权限 | 套餐存在 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | GuidePackageController |
— |
| TC-T-16-P | SC-T-16 | 健康总览 | 规划师 | P1 | 权限 | 已绑定家庭 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | 仪表板 | — |
| TC-T-17-P | SC-T-17 | 计划进度 | 规划师 | P1 | 权限 | 计划存在 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | GrowthPlanController |
— |
| TC-T-18-P | SC-T-18 | 批量任务 | 规划师 | P1 | 权限 | 多孩子成员 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | TaskController |
— |
| TC-T-19-P | SC-T-19 | 消息推送 | 规划师 | P1 | 权限 | 已绑定客户 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | 消息服务 | — |
| TC-T-20-P | SC-T-20 | 退出/切换 | 规划师 | P1 | 权限 | 已登录 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | AuthController |
— |
| TC-T-21-P | SC-T-21 | 报告对比 | 规划师 | P1 | 权限 | 多份报告 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | 报告管理 | — |
| TC-T-22-P | SC-T-22 | 方案归档 | 规划师 | P2 | 权限 | 方案完成 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单) 2. 对非指派预约 confirm/cancel 3. 观察 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒(高危越权修复) | 方案管理 | — |
| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
|---|---|---|---|---|---|---|---|---|---|---|
| TC-T-23-P | T-23 | 报告代传/report-proxy | 规划师 | P1 | 权限 | 已登录(默认 规划师);相关前置数据就绪 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单);对非指派预约 confirm/cancel 2. 观察拦截 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒 | 报告代传/report-proxy | — |
| TC-T-24-P | T-24 | 规划师绑定 | 规划师 | P1 | 权限 | 已登录(默认 规划师);相关前置数据就绪 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单);对非指派预约 confirm/cancel 2. 观察拦截 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒 | 规划师绑定 | — |
| TC-T-25-P | T-25 | 舌诊情绪识别 | 规划师 | P1 | 权限 | 已登录(默认 规划师);相关前置数据就绪 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单);对非指派预约 confirm/cancel 2. 观察拦截 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒 | 舌诊情绪识别 | — |
| TC-T-26-P | T-26 | 精准营养 | 规划师 | P1 | 权限 | 已登录(默认 规划师);相关前置数据就绪 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单);对非指派预约 confirm/cancel 2. 观察拦截 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒 | 精准营养 | — |
| TC-T-27-P | T-27 | 家庭天盘 | 规划师 | P1 | 权限 | 已登录(默认 规划师);相关前置数据就绪 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单);对非指派预约 confirm/cancel 2. 观察拦截 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒 | 家庭天盘 | — |
| TC-T-28-P | T-28 | 内容安全 | 规划师 | P1 | 权限 | 已登录(默认 规划师);相关前置数据就绪 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单);对非指派预约 confirm/cancel 2. 观察拦截 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒 | 内容安全 | — |
| TC-T-29-P | T-29 | 数据导出(GDPR) | 规划师 | P1 | 权限 | 已登录(默认 规划师);相关前置数据就绪 | 1. 访问非绑定家庭的数据(报告/任务/方案/订单);对非指派预约 confirm/cancel 2. 观察拦截 | 非绑定家庭数据统一 403;confirm/cancel 增加归属校验,非指派调用被拒 | 数据导出(GDPR) | — |
完整用户故事见
../user-scenarios/07-five-dimension.md(ED-10~12)。每条含正常流 + 具体异常流(-E) + 权限流(-P)。
| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
|---|---|---|---|---|---|---|---|---|---|---|
| TC-T-30 | SC-T-30 | 测评/五维 | 规划师 | P1 | 功能 | 测评订单已建;规则引擎八类→五维映射已配 | 1. 录入各维度分(SC-T-07)2. 查五维评分与 generated 方案 |
八类分→五维刷新;生成 generated 方案;概览/沙盘刷新 |
AssessmentAppointmentService |
tests/e2e/dan-report-flow.spec.js |
| TC-T-31 | SC-T-31 | 维度/手动 | 规划师 | P1 | 功能 | ManualDimensionScoreController 可用;B 当前维度分已知 |
1. 提交某维度新分 2. 查概览/沙盘与调整痕迹 | 目标维度覆盖/调整并留痕;概览/沙盘随新值刷新 | ManualDimensionScoreController |
— |
| TC-T-32 | SC-T-32 | 五维/自评 | 规划师 | P2 | 功能 | FiveDimensionSelfCheckController 可用 |
1. 提交五维自评 2. 查评分历史 | 自评微调并叠加;FiveDimensionSelfCheck 留记录;历史可查 |
FiveDimensionSelfCheckController |
— |
| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
|---|---|---|---|---|---|---|---|---|---|---|
| TC-T-30-E | SC-T-30 | 测评/五维 | 规划师 | P1 | 异常 | 订单已建 + 造"必填缺失""重复录入""分值越界" | 1. 必填维度缺失录入 2. 同一订单重复录入 3. 分值>量纲上限 | 1. 400 不生成半成品 2. 覆盖非新增、无重复记录 3. 越界 400 不写脏分 | AssessmentAppointmentService |
— |
| TC-T-31-E | SC-T-31 | 维度/手动 | 规划师 | P2 | 异常 | B 维度分已知 + 造"越界""同值重复" | 1. 越界分值提交 2. 同值重复提交 | 1. 400 拦截 2. 幂等无重复痕迹;不影响其他维度(断言) | ManualDimensionScoreController |
— |
| TC-T-32-E | SC-T-32 | 五维/自评 | 规划师 | P3 | 异常 | 自评可用 + 造"分值越界" | 1. 自评分值越界提交 | 400 拦截;不写脏分 | FiveDimensionSelfCheckController |
— |
| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
|---|---|---|---|---|---|---|---|---|---|---|
| TC-T-30-P | SC-T-30 | 测评/五维 | 规划师 | P1 | 权限 | 绑定家庭 F2 + 非绑定 F9 | 1. 规划师 T 录入 F9 成员测评分 | 非绑定家庭录入 403 | AssessmentAppointmentService |
— |
| TC-T-31-P | SC-T-31 | 维度/手动 | 规划师 | P1 | 权限 | 绑定家庭 F2 + 非绑定 F9 | 1. T 改 F9 成员维度分 | 非绑定家庭 403 | ManualDimensionScoreController |
— |
| TC-T-32-P | SC-T-32 | 五维/自评 | 规划师 | P1 | 权限 | 绑定家庭 F2 + 非绑定 F9 | 1. T 提交 F9 成员自评 | 非绑定家庭 403 | FiveDimensionSelfCheckController |
— |
非功能维度:性能(大文件/并发/限流)、兼容(多端/多浏览器/主题)、安全(IDOR/XSS/上传/鉴权/SSRF)。编号后缀
-N与正常流/异常流(-E)/权限流(-P)并列。
| TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
|---|---|---|---|---|---|---|---|---|---|---|
| TC-T-N01 | SC-T-03 | 健康报告 | 规划师 | P1 | 性能 | 批量代传 ≥ 10 份 PDF | 1. 连续代传报告 2. 观察解析队列 | 队列不堵;单份 ≤ 30s;失败重试不重复入库 | 报告解析中台 | — |
| TC-T-N02 | SC-T-06 | 方案审核 | 规划师 | P1 | 性能 | 待审核方案 ≥ 50 | 1. 打开审核列表 2. 翻页/筛选 | 列表 ≤ 2s;筛选/排序生效 | 方案状态机 | — |
| TC-T-N03 | SC-T-01 | 绑定家庭 | 规划师 | P2 | 性能 | 绑定 ≥ 30 家庭 | 1. 切换绑定家庭 2. 查数据 | 切换 ≤ 1.5s;数据隔离不串 | 绑定家庭 | — |
| TC-T-N04 | SC-T-23 | 报告代传 | 规划师 | P1 | 兼容 | 微信小程序/Web 后台 | 1. 各端代传报告 | 上传入口一致;解析预览正常 | 代传入口 | — |
| TC-T-N05 | SC-T-03 | 健康报告 | 规划师 | P0 | 安全 | 存在非绑定家庭 F9 | 1. 用本人 token 请求 F9 报告/方案 | 返回 403(非绑定家庭越权拦截);不泄露 | 规划师鉴权 | — |
| TC-T-N06 | SC-T-06 | 方案审核 | 规划师 | P0 | 安全 | 抓包 | 1. 拦截 confirm/cancel 2. 篡改 planId 为其他家庭 | 服务端归属校验;非法操作 403/拒绝 | 方案鉴权 | — |
| TC-T-N07 | SC-T-25 | 舌诊录入 | 规划师 | P1 | 安全 | 上传含脚本文件名/恶意图片 | 1. 上传舌诊图(.php/.html) | 类型校验拒绝;不执行;存储路径随机化防遍历 | 上传校验 | — |
| TC-T-N08 | SC-T-26 | 精准营养 | 规划师 | P1 | 安全 | 构造长文本/特殊字符营养方案 | 1. 提交含 <script> 的方案文本 |
后端转义存储;前端不执行 | 方案内容安全 | — |