# 测试用例 · 平台运营(Admin / Web 管理端) > 关联场景:`../user-scenarios/05-admin.md`。对应 e2e:`../e2e/roles/admin/*.spec.js`、`../e2e/article-management.spec.js`、`../e2e/health-knowledge-base.spec.js`、`../e2e/health-report-audit.spec.js`。 | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e | |---|---|---|---|---|---|---|---|---|---|---| | TC-A-01 | A-1 | 认证 | 运营 | P0 | 接口 | admin 账号 | 1. 管理端密码登录 | 登录进入 Dashboard;错误密码不签发 token | `AdminAuthController` | `e2e/roles/admin/login.spec.js` | | TC-A-02 | A-1 | 统计 | 运营 | P1 | 功能 | 有业务数据 | 1. 打开任务统计页 | 显示任务总量/完成率,与库内一致 | `StatsController` | `e2e/admin-panel.spec.js` | | TC-A-03 | A-2 | 方案管理 | 运营 | P1 | 功能 | 多家庭方案 | 1. 打开方案管理页(不筛家庭) | 列出全部方案(含 source/进度/审核时间);可筛状态 | 方案管理(全量) | — | | TC-A-04 | A-2 | 方案激活 | 运营 | P1 | 功能 | reviewed 方案 | 1. 对 reviewed 方案点击激活 | 生成任务成功,提示成功 | 方案激活 | — | | TC-A-05 | A-2 | 报告解析 | 运营 | P1 | 功能 | gut_flora 已注册 | 1. 打开报告解析中台 | 类型列表返回≥1 条(含 gut_flora) | `AdminReportParserController` | `e2e/health-report-audit.spec.js` | | TC-A-06 | A-2 | 报告解析 | 运营 | P1 | 接口 | — | 1. `POST /api/admin/report-parser/types/save`(typeId/显示名/路径/threshold) 2. 重复同 typeId | 保存成功列表可见;重复 typeId 被拒绝 | 报告类型注册 | — | | TC-A-07 | A-2 | 报告解析 | 运营 | P2 | 功能 | 有未知报告上传 | 1. 打开未知报告聚类 2. 查看上传 3. 自学习生成类型 | 聚类列表可见;可自学习生成类型 | 未知聚类自学习 | — | | TC-A-08 | A-3 | 文章 | 运营 | P0 | 功能 | 文章素材 | 1. 创建文章→提交审核→通过 2. 长文(8000字)创建+更新 | 创建 1s 内返回成功(无超时);审核通过 C 端可见;长文稳定 | 文章发布-审核 | `e2e/article-management.spec.js` | | TC-A-09 | A-3 | 文章·去重 | 运营 | P1 | 异常 | 已有文章标题 | 1. 同标题重复创建 | 第二次被拦截(标题已存在) | 文章标题去重 | — | | TC-A-10 | A-4 | 关系类型 | 运营 | P1 | 功能 | 关系类型管理页 | 1. 新增/编辑/停用关系类型 | 操作成功;家长端关系选择器同步生效 | 关系类型 CRUD | `e2e/roles/admin/../relationship` | | TC-A-11 | A-4 | 勋章 | 运营 | P0 | 接口 | 勋章素材 | 1. `POST` 创建勋章(名称/图标/触发条件/门槛) | 200 成功,badgeId 自动生成,列表可见 | 勋章管理;黑盒回归 | `e2e/points-system.spec.js`(参考) | | TC-A-12 | A-4 | 供应商 | 运营 | P0 | 接口 | 供应商素材 | 1. `POST /api/admin/ecom-supplier/save`(昵称/手机号/真实姓名) | 200 成功,列表 name=昵称;同手机号重复被拒/可控覆盖 | 供应商管理;黑盒回归 | `e2e/roles/admin/vendor/management.spec.js` | | TC-A-13 | A-5 | 活动 | 运营 | P1 | 功能 | 草稿活动 | 1. 草稿→提交审核→通过→撤回→退回草稿 | 状态流转正确;已发布可撤回;全流程无 500 | 活动审核撤回;黑盒回归 | `e2e/roles/admin/activity-review.spec.js` | | TC-A-14 | A-6 | 知识库 | 运营 | P1 | 接口 | 知识条目存在(如 id=1) | 1. 删除知识条目 | 200 成功,列表移除,无 500 | 知识库管理;黑盒回归 | `e2e/health-knowledge-base.spec.js` | | TC-A-15 | A-6 | 数据迁移 | 运营 | P2 | 功能 | sfms 源就绪 | 1. 执行 sfms→cfc 迁移 | 接口返回成功,关键业务表数据量更新;失败回滚+明确错误 | 多数据源/SfmsDataSourceConfig | — | | TC-A-16 | A-7 | 参数校验 | 运营 | P0 | 异常 | 各管理接口可用 | 1. 各接口传空 body/错类型字段 | 返回 400 + 具体字段提示(不再裸 500) | 统一 `Result`+全局异常;黑盒回归 | `e2e/admin-panel.spec.js` | ### 门禁项(近期修复回归) - **TC-A-11(勋章创建 200)**、**TC-A-12(供应商创建 200)**、**TC-A-13(活动审核撤回无 500)**、**TC-A-14(知识库删除 200)**、**TC-A-08(长文文章无超时)**、**TC-A-16(参数校验 400 非 500)** 必须全部通过。 --- ### 本轮扩展场景用例(新增 SC-A) | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e | |---|---|---|---|---|---|---|---|---|---|---| | TC-A-17 | A-16 | /api/admin/report-parser/* | 运营 | P1 | 功能 | 已登录(默认 运营);相关前置数据就绪 | 1. 按场景流程执行:看未知类型 → 标类别 → 生效 2. 观察结果 | 达成目标:标注未知聚类;边界:新类先注册再解析 | /api/admin/report-parser/* | — | | TC-A-18 | A-17 | 优惠券/活动管理 | 运营 | P1 | 功能 | 已登录(默认 运营);相关前置数据就绪 | 1. 按场景流程执行:建券/活动 → 设规则/名额 → 上线 2. 观察结果 | 达成目标:后台配券建活动;边界:时间冲突校验;名额超卖配置保护 | 优惠券/活动管理 | — | | TC-A-19 | A-18 | 内容安全 | 运营 | P1 | 功能 | 已登录(默认 运营);相关前置数据就绪 | 1. 按场景流程执行:队列 → 通过/下架 2. 观察结果 | 达成目标:审 UGC/AI;边界:敏感词命中拦截 | 内容安全 | — | | TC-A-20 | A-19 | GDPR 工单 | 运营 | P1 | 功能 | 已登录(默认 运营);相关前置数据就绪 | 1. 按场景流程执行:接工单 → 执行归档/导出 2. 观察结果 | 达成目标:处理用户注销/导出;边界:审计留痕;冷静期 | GDPR 工单 | — | | TC-A-21 | A-20 | 网关/限流 | 运营 | P1 | 功能 | 已登录(默认 运营);相关前置数据就绪 | 1. 按场景流程执行:配限流规则 → 生效 2. 观察结果 | 达成目标:接口防护;边界:误杀白名单 | 网关/限流 | — | | TC-A-22 | A-21 | 模型管理 | 运营 | P1 | 功能 | 已登录(默认 运营);相关前置数据就绪 | 1. 按场景流程执行:版控/上下线 2. 观察结果 | 达成目标:模型版本/开关;边界:下线前回退方案 | 模型管理 | — | | TC-A-23 | A-22 | 知识库 | 运营 | P1 | 功能 | 已登录(默认 运营);相关前置数据就绪 | 1. 按场景流程执行:CRUD → 同步 2. 观察结果 | 达成目标:维护营养知识;边界:同步失败重试 | 知识库 | — | ## 异常流用例(派生自正常流) | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e | |---|---|---|---|---|---|---|---|---|---|---| | TC-A-01-E | A-1 | 认证 | 运营 | P2 | 异常 | admin 账号 | 1. 密码错误超 5 次 2. token 过期访问 3. 弱密码(如 123456)设新密码 | 错误密码不签发 token 且提示次数限制/锁定;过期 token 401 跳登录;弱密码 400 拦截 | `AdminAuthController` | — | | TC-A-02-E | A-1 | 统计 | 运营 | P2 | 异常 | 有业务数据 | 1. 统计接口超时/库内无数据 2. 时间范围非法(起>止) | 超时降级提示非500;无数据显示『暂无数据』;时间非法 400 | `StatsController` | — | | TC-A-03-E | A-2 | 方案管理 | 运营 | P2 | 异常 | 多家庭方案 | 1. 方案列表接口超时 2. 状态筛选值非法 3. 跨家庭方案数据隔离 | 超时降级非500;非法筛选 400;仅返回有权家庭数据不串 | 方案管理(全量) | — | | TC-A-04-E | A-2 | 方案激活 | 运营 | P2 | 异常 | reviewed 方案 | 1. 激活非 reviewed 方案 2. 激活时任务分解服务超时 3. 并发激活同一方案 | 非 reviewed 激活拦截;超时回滚不残半任务;并发幂等仅生成 1 次任务 | 方案激活 | — | | TC-A-05-E | A-2 | 报告解析 | 运营 | P2 | 异常 | gut_flora 已注册 | 1. 类型列表接口超时 2. 注册重复 typeId 3. 类型路径非法 | 超时降级非500;重复 typeId 400 拒绝;路径非法 400 | `AdminReportParserController` | — | | TC-A-06-E | A-2 | 报告解析 | 运营 | P2 | 异常 | — | 1. 重复 typeId 保存 2. 必填缺失(无 typeId/显示名) 3. threshold 非法(负) | 重复 typeId 拒绝;必填缺失 400;threshold 非法 400 | 报告类型注册 | — | | TC-A-07-E | A-2 | 报告解析 | 运营 | P3 | 异常 | 有未知报告上传 | 1. 未知聚类列表接口超时 2. 自学习生成的类型与已注册重名 | 超时降级非500;重名类型生成被拒/提示已存在 | 未知聚类自学习 | — | | TC-A-08-E | A-3 | 文章 | 运营 | P2 | 异常 | 文章素材 | 1. 重复创建同标题文章 2. 长文(8000字)提交时网络中断 3. 标题含注入 | 同标题 400『标题已存在』;长文提交超时重试不丢稿;注入 400 或转义 | 文章发布-审核 | — | | TC-A-09-E | A-3 | 文章·去重 | 运营 | P2 | 异常 | 已有文章标题 | 1. 同标题重复创建 2. 标题空/超长 | 重复创建被拦截提示标题已存在;空/超长 400 | 文章标题去重 | — | | TC-A-10-E | A-4 | 关系类型 | 运营 | P2 | 异常 | 关系类型管理页 | 1. 新增重名关系类型 2. 停用后被引用的关系类型 3. 名称含注入 | 重名拒绝;停用被引用类型提示先解绑;注入 400/转义;家长端选择器同步生效仍正确 | 关系类型 CRUD | — | | TC-A-11-E | A-4 | 勋章 | 运营 | P2 | 异常 | 勋章素材 | 1. 重复 POST 同名称勋章 2. 触发条件/门槛非法(负) 3. 并发创建 | 重复 400/幂等;非法门槛 400;并发创建各自独立不串 | 勋章管理;黑盒回归 | — | | TC-A-12-E | A-4 | 供应商 | 运营 | P2 | 异常 | 供应商素材 | 1. 同手机号重复保存 2. 手机号格式非法 3. 必填缺失(无真实姓名) | 同手机号拒绝/可控覆盖;非法格式 400;必填缺失 400;列表 name=昵称正确 | 供应商管理;黑盒回归 | — | | TC-A-13-E | A-5 | 活动 | 运营 | P2 | 异常 | 草稿活动 | 1. 活动已发布后再『提交审核』 2. 撤回非本人创建活动 3. 时间冲突(起<止非法) | 已发布再提交审核守卫拦截;非本人撤回 403;时间冲突 400;撤回退回草稿 | 活动审核撤回;黑盒回归 | — | | TC-A-14-E | A-6 | 知识库 | 运营 | P2 | 异常 | 知识条目存在(如 id=1) | 1. 删除被方案/文章引用的知识条目 2. 删除不存在 id 3. 并发删除同 id | 被引用删除提示先解绑;不存在 404;并发删除幂等 | 知识库管理;黑盒回归 | — | | TC-A-15-E | A-6 | 数据迁移 | 运营 | P3 | 异常 | sfms 源就绪 | 1. 迁移中源连接中断 2. 目标表锁 3. 重复执行迁移 | 中断回滚+明确错误非500;锁等待超时提示;重复执行幂等/提示已迁移 | 多数据源/SfmsDataSourceConfig | — | | TC-A-16-E | A-7 | 参数校验 | 运营 | P2 | 异常 | 各管理接口可用 | 1. 各接口传空 body 2. 字段类型错配(字符串传数字位) 3. 超长字段 | 空 body 400 含具体字段提示;类型错配 400;超长 400;不再裸 500 | 统一 `Result`+全局异常;黑盒回归 | — | ### 本轮扩展异常流(派生自新增场景) | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e | |---|---|---|---|---|---|---|---|---|---|---| | TC-A-17-E | A-16 | /api/admin/report-parser/* | 运营 | P2 | 异常 | 已登录(默认 运营);相关前置数据就绪 | 1. 标注未知聚类时类目重名 2. 生效未注册路径 | 重名类目拒绝;未注册路径 400;先注册再解析 | /api/admin/report-parser/* | — | | TC-A-18-E | A-17 | 优惠券/活动管理 | 运营 | P2 | 异常 | 已登录(默认 运营);相关前置数据就绪 | 1. 券时间冲突(起>止) 2. 名额配置超卖保护 3. 重复提交同活动 | 时间冲突 400;名额超卖配置保护生效;重复提交幂等 | 优惠券/活动管理 | — | | TC-A-19-E | A-18 | 内容安全 | 运营 | P2 | 异常 | 已登录(默认 运营);相关前置数据就绪 | 1. 审核队列接口超时 2. 命中敏感词内容通过 | 超时降级非500;命中敏感词强制拦截不放行 | 内容安全 | — | | TC-A-20-E | A-19 | GDPR 工单 | 运营 | P2 | 异常 | 已登录(默认 运营);相关前置数据就绪 | 1. 并发处理同用户注销+导出工单 2. 越权处理他人工单 | 并发安全:注销与导出按序执行不冲突;越权工单 403 | GDPR 工单 | — | | TC-A-21-E | A-20 | 网关/限流 | 运营 | P2 | 异常 | 已登录(默认 运营);相关前置数据就绪 | 1. 限流规则误杀白名单 IP 2. 规则配置非法(负阈值) | 白名单不被限流;非法阈值 400;规则生效可控 | 网关/限流 | — | | TC-A-22-E | A-21 | 模型管理 | 运营 | P2 | 异常 | 已登录(默认 运营);相关前置数据就绪 | 1. 下线模型无回退方案 2. 上线非法模型版本 | 无回退方案拦截下线;非法版本 400;上下线版控正确 | 模型管理 | — | | TC-A-22-E | A-22 | 知识库 | 运营 | P2 | 异常 | 已登录(默认 运营);相关前置数据就绪 | 1. 同步失败(网络抖动) 2. 并发 CRUD 同条目 | 同步失败自动重试非500;并发 CRUD 乐观锁不互相覆盖 | 知识库 | — | ## 权限流用例(派生自正常流) | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e | |---|---|---|---|---|---|---|---|---|---|---| | TC-A-01-P | A-1 | 认证 | 运营 | P1 | 权限 | admin 账号 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察 | 非 admin 角色访问管理端接口统一 401/403,不泄露后台数据 | `AdminAuthController` | — | | TC-A-02-P | A-1 | 统计 | 运营 | P1 | 权限 | 有业务数据 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察 | 非 admin 角色访问管理端接口统一 401/403,不泄露后台数据 | `StatsController` | — | | TC-A-03-P | A-2 | 方案管理 | 运营 | P1 | 权限 | 多家庭方案 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察 | 非 admin 角色访问管理端接口统一 401/403,不泄露后台数据 | 方案管理(全量) | — | | TC-A-04-P | A-2 | 方案激活 | 运营 | P1 | 权限 | reviewed 方案 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察 | 非 admin 角色访问管理端接口统一 401/403,不泄露后台数据 | 方案激活 | — | | TC-A-05-P | A-2 | 报告解析 | 运营 | P1 | 权限 | gut_flora 已注册 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察 | 非 admin 角色访问管理端接口统一 401/403,不泄露后台数据 | `AdminReportParserController` | — | | TC-A-06-P | A-2 | 报告解析 | 运营 | P1 | 权限 | — | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察 | 非 admin 角色访问管理端接口统一 401/403,不泄露后台数据 | 报告类型注册 | — | | TC-A-07-P | A-2 | 报告解析 | 运营 | P2 | 权限 | 有未知报告上传 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察 | 非 admin 角色访问管理端接口统一 401/403,不泄露后台数据 | 未知聚类自学习 | — | | TC-A-08-P | A-3 | 文章 | 运营 | P1 | 权限 | 文章素材 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察 | 非 admin 角色访问管理端接口统一 401/403,不泄露后台数据 | 文章发布-审核 | — | | TC-A-09-P | A-3 | 文章·去重 | 运营 | P1 | 权限 | 已有文章标题 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察 | 非 admin 角色访问管理端接口统一 401/403,不泄露后台数据 | 文章标题去重 | — | | TC-A-10-P | A-4 | 关系类型 | 运营 | P1 | 权限 | 关系类型管理页 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察 | 非 admin 角色访问管理端接口统一 401/403,不泄露后台数据 | 关系类型 CRUD | — | | TC-A-11-P | A-4 | 勋章 | 运营 | P1 | 权限 | 勋章素材 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察 | 非 admin 角色访问管理端接口统一 401/403,不泄露后台数据 | 勋章管理;黑盒回归 | — | | TC-A-12-P | A-4 | 供应商 | 运营 | P1 | 权限 | 供应商素材 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察 | 非 admin 角色访问管理端接口统一 401/403,不泄露后台数据 | 供应商管理;黑盒回归 | — | | TC-A-13-P | A-5 | 活动 | 运营 | P1 | 权限 | 草稿活动 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察 | 非 admin 角色访问管理端接口统一 401/403,不泄露后台数据 | 活动审核撤回;黑盒回归 | — | | TC-A-14-P | A-6 | 知识库 | 运营 | P1 | 权限 | 知识条目存在(如 id=1) | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察 | 非 admin 角色访问管理端接口统一 401/403,不泄露后台数据 | 知识库管理;黑盒回归 | — | | TC-A-15-P | A-6 | 数据迁移 | 运营 | P2 | 权限 | sfms 源就绪 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察 | 非 admin 角色访问管理端接口统一 401/403,不泄露后台数据 | 多数据源/SfmsDataSourceConfig | — | | TC-A-16-P | A-7 | 参数校验 | 运营 | P1 | 权限 | 各管理接口可用 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察 | 非 admin 角色访问管理端接口统一 401/403,不泄露后台数据 | 统一 `Result`+全局异常;黑盒回归 | — | ### 本轮扩展权限流(派生自新增场景) | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e | |---|---|---|---|---|---|---|---|---|---|---| | TC-A-17-P | A-16 | /api/admin/report-parser/* | 运营 | P1 | 权限 | 已登录(默认 运营);相关前置数据就绪 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察拦截 | 非 admin 角色访问统一 401/403,不泄露后台数据 | /api/admin/report-parser/* | — | | TC-A-18-P | A-17 | 优惠券/活动管理 | 运营 | P1 | 权限 | 已登录(默认 运营);相关前置数据就绪 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察拦截 | 非 admin 角色访问统一 401/403,不泄露后台数据 | 优惠券/活动管理 | — | | TC-A-19-P | A-18 | 内容安全 | 运营 | P1 | 权限 | 已登录(默认 运营);相关前置数据就绪 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察拦截 | 非 admin 角色访问统一 401/403,不泄露后台数据 | 内容安全 | — | | TC-A-20-P | A-19 | GDPR 工单 | 运营 | P1 | 权限 | 已登录(默认 运营);相关前置数据就绪 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察拦截 | 非 admin 角色访问统一 401/403,不泄露后台数据 | GDPR 工单 | — | | TC-A-21-P | A-20 | 网关/限流 | 运营 | P1 | 权限 | 已登录(默认 运营);相关前置数据就绪 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察拦截 | 非 admin 角色访问统一 401/403,不泄露后台数据 | 网关/限流 | — | | TC-A-22-P | A-21 | 模型管理 | 运营 | P1 | 权限 | 已登录(默认 运营);相关前置数据就绪 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察拦截 | 非 admin 角色访问统一 401/403,不泄露后台数据 | 模型管理 | — | | TC-A-22-P | A-22 | 知识库 | 运营 | P1 | 权限 | 已登录(默认 运营);相关前置数据就绪 | 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察拦截 | 非 admin 角色访问统一 401/403,不泄露后台数据 | 知识库 | — | ## 五维指标变化专项用例(本轮新增 SC-A-25~27) > 完整用户故事见 `../user-scenarios/07-five-dimension.md`(ED-13~14)。每条含正常流 + 具体异常流(-E) + 权限流(-P)。 ### 正常流 | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e | |---|---|---|---|---|---|---|---|---|---|---| | TC-A-25 | SC-A-25 | 维度/权重/上限配置 | 运营 | P1 | 功能 | 维度/权重/`DailyLimit` 配置管理接口可用 | 1. 对维度/权重/每日上限做 CRUD 2. 查变更生效 | 变更生效、后续能量按新配置;存量影响提示 | `DimensionConfigController`/`DimensionWeightController` | `tests/e2e/energy-rules-config.spec.js` | | TC-A-26 | SC-A-26 | 能量/归因权重 | 运营 | P1 | 功能 | `AttributionWeights`/`configureSourceRatios` 可用 | 1. 调整来源比例/归因权重 2. 查审计与概览影响 | 全局生效;变更写审计;概览/沙盘/天盘影响可观测 | `EnergyController`/`AttributionWeights` | — | | TC-A-27 | S-cfc-68(team.admin.manage) | 团队分润/成本价/流水/提现审核 | 运营 | P0 | 功能 | 管理端可访问 `team.admin.manage` 分润配置链路(`TeamProfitAdminController` +276/+741、S-cfc-68 已合入 17b6d6bfb) | 1. 配置团队分润比例(成本价口径)2. 查询分润流水 3. 提现审核发起/驳回 4. 复核配置生效 | 1. 分润比例保存成功并按成本价计算 2. 流水查询含分润来源/金额/状态,分页正常 3. 审核动作留痕且仅授权角色可操作 4. 重查配置与计算一致 | `TeamProfitAdminController`/`TeamProfitConfigService`/`WithdrawalService`(S-cfc-68,17b6d6bfb) | — | | TC-A-28 | S-cfc-71(team.star.myView) | 我的星级看板 | 家长/运营 | P1 | 功能 | 已登录且存在星级评分数据(`StarScoreCalculator` 三维一次性加权,S-cfc-71 已合入 2b73e20f6/0f663eb9e) | 1. 打开「我的星级」看板 2. 校验三维构成与差距换算 3. 对比 totalScore 口径 | 1. 看板可渲染、星级与差距计算正确 2. 三维构成合计 = totalScore(一次性加权口径)3. 维度为空数据时展示空态不报错 | `TeamStarController`/`StarScoreCalculator`(S-cfc-71,2b73e20f6) | `TeamStarMyViewContractTest` 24/24(研发侧契约单测已绿) | | TC-A-29 | S-cfc-70(team.star.digest) | 月度星级简报 | 运营/家长 | P1 | 功能 | 存在跨月星级评分数据(`StarDigestService`,S-cfc-70 已合入 de16f40b0) | 1. 触发月度星级简报生成 2. 校验升/降/持平分类 3. 校验简报内容(恭喜/提示/行动建议+权益) | 1. 当月星级 > 上月 → 升星简报(+1);降 → 降星简报(-1);持平 → 持平文案 2. 简报含新星级/解锁份数/权益或原因+补分回原级 3. 空数据不推送、无异常 | `StarDigestService`(S-cfc-70,786c88e02) | `TeamStarDigestContractTest`(研发侧契约单测已绿) | | TC-A-30 | S-cfc-60(team.invitation.create) | 团队邀请创建 | 运营/团队负责人 | P1 | 功能 | 已登录且为分销体系 admin/active 成员(`DistributionInviteController`,S-cfc-60 已合入 de16f40b0) | 1. 调 `POST /api/distribution/invite/generate` 2. 校验返回对象结构 | 1. 返回 data 为对象:含 `inviteCode`/`wxacode`(小程序码独立落地页)/`systemId`/`teamName`/`inviterId` 2. 复用 `distribution_relations.invite_code` 不新建表 3. 越权(非 admin/active 成员)403 | `DistributionInviteController`/`TeamInvitationCreateContractTest`(S-cfc-60,36974f042) | — | ### 异常流(-E,具体故障注入) | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e | |---|---|---|---|---|---|---|---|---|---|---| | TC-A-25-E | SC-A-25 | 维度/权重/上限配置 | 运营 | P2 | 异常 | 配置可用 + 造"删除被引用维度""权重非法""上限非法" | 1. 删除被引用维度 2. 权重/上限非法(负/超界/和≠100%)3. 并发改同配置 | 1. 需确认/拒、不级联破坏存量 2. 400 拦截 3. 乐观锁/版本控制不互相覆盖 | `DimensionConfigController` | — | | TC-A-27-E | S-cfc-68 | 团队分润 | 运营 | P2 | 异常 | 配置可用 + 造"比例非法""流水缺失""审批冲突" | 1. 分润比例非法(负/超 100%)2. 同一提现单并发审核 3. 流水来源缺失 | 1. 400 拦截不落库 2. 乐观锁只允许一人审核 3. 流水标记来源缺失并提示、不静默记账 | `TeamProfitAdminController` | — | | TC-A-26-E | SC-A-26 | 能量/归因权重 | 运营 | P2 | 异常 | 配置可用 + 造"比例非法""未同步" | 1. 比例非法(负/超 1/和≠1)2. 配置未同步计算节点 | 1. 400 拦截 2. 展示兜底并提示、不静默错算 | `EnergyController`/`AttributionWeights` | — | ### 权限流(-P) | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e | |---|---|---|---|---|---|---|---|---|---|---| | TC-A-25-P | SC-A-25 | 维度/权重/上限配置 | 运营 | P1 | 权限 | 运营 M + 家长 A | 1. 家长 A 调维度/权重/上限 CRUD | 非 admin 操作 403 | `DimensionConfigController` | — | | TC-A-26-P | SC-A-26 | 能量/归因权重 | 运营 | P1 | 权限 | 运营 M + 家长 A | 1. 家长 A 调全局归因权重/`configure` | 非 admin 改全局 403 | `EnergyController` | — | | TC-A-27-P | S-cfc-68 | 团队分润/提现审核 | 运营 | P1 | 权限 | 运营 M(授权)+ 家长 A | 1. 家长 A 访问分润配置/提现审核 2. 无 token 访问 | 非授权角色 403;匿名 401(对齐 `LOGIN_REQUIRED_PATHS`) | `TeamProfitAdminController`/`JwtInterceptor` | — | ## 睡眠情况选项后台维护专项用例(SC-A-27,2026-11-06 需求变更 C) > ⚠️ **编号占用冲突(2026-11-10 实测发现)**:`TC-A-27` / `-E` / `-P` 三流已被 **S-cfc-68 团队分润/成本价/提现审核** 占用(见上方五维专项段),与 `SC-A-27`「后台维护睡眠情况选项」语义完全无关。为不破坏既有资产,本专项采用不冲突编号 `TC-A-27-S*`(S = Sleep config);**编号重排需主理人裁决**,已登记 `tests/TRACEABILITY-MATRIX.md` 缺口 G-2。 > 需求源:`docs/需求分析/2026-11-06-成就成长打卡需求变更.md` 变更 C;场景源:`tests/user-scenarios/应用场景总览.md` 行 356;能力键:`sleep.config.tags`。配置接口最终路径由实现方定(候选 `/api/admin/sleep/tags` get/save 或 `/api/config/public/value`),标「需核实」。 ### 正常流 | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e | |---|---|---|---|---|---|---|---|---|---|---| | TC-A-27-S | SC-A-27 | 管理端/睡眠配置 | 运营 | P1 | 功能 | 运营 M(admin)登录;`sys_config` 可写 | 1. 打开睡眠情况选项维护页、查当前列表 2. 新增一项并保存 3. 修改一项文案并调整顺序 4. 删除一项后保存 5. 小程序端刷新睡眠打卡页 | 1. 展示当前配置(默认 9 项含「正常」) 2. 增/改/删/排序均保存成功并回显一致 3. 小程序端按新列表与顺序生效,未配置时回退默认 9 项 4. 保存写操作留痕(操作人/时间) | 变更C / `AdminSleepConfigController`(参考 `AdminGuideConfigController` get/save 模式)+ `sleep.quality.tags` | — | ### 异常流(-E,具体故障注入) | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e | |---|---|---|---|---|---|---|---|---|---|---| | TC-A-27-S-E | SC-A-27 | 管理端/睡眠配置 | 运营 | P2 | 异常 | 造「空列表」「重复项」「超长标签」「非法 JSON」「并发保存」「删掉「正常」」 | 1. 保存空列表 2. 保存含重复项或 200 字超长标签 3. 写入非法 JSON value 4. 两个 admin 并发保存不同列表 5. 删除「正常」后查历史 remark | 1. 空列表 400 或拒绝保存并保留原配置、不写空值 2. 重复项去重、超长拒绝或截断、不超存 3. 非法 JSON 400、前端读时回退默认 9 项不白屏 4. 并发按乐观锁/版本控制不互相覆盖、结果可判定 5. 历史 remark 字符串不受影响、无迁移副作用 | 变更C 验收口径 + 风险项 3 / 配置校验与回退契约 | — | ### 权限流(-P,针对具体越权对象) | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e | |---|---|---|---|---|---|---|---|---|---|---| | TC-A-27-S-P | SC-A-27 | 管理端/睡眠配置 | 运营 | P1 | 权限 | 家长 A、孩子 B、无 token、非授权运营账号各一 | 1. 家长 A 调 `save` 改睡眠选项 2. 孩子 B 调 `get`/`save` 3. 无 token 访问维护页 4. 非授权运营账号调 `save` | 1. 家长 403、配置不被改动 2. 孩子端无入口、直调 403/401 3. 匿名 401 跳登录 4. 非授权账号 403;仅 admin 可维护且不留越权脏数据 | 变更C / `AdminSleepConfigController` 权限校验 + `LOGIN_REQUIRED_PATHS` | — | ## 团队收益 / 财富中心贡献榜专项用例(SC-A-23~24,2026-11-12 需求派生) > 需求源:`docs/需求分析/2026-11-06-我的团队收益口径与邀请分享需求变更.md`(T1 推广收益 CF 口径 `team.referral.earnings.cf`、T2 邀请成员直接分享 `team.invite.share`)、`docs/需求分析/2026-11-07-财富中心贡献榜管理员口径需求变更.md`(F1 管理员身份统一为 role `family.earnings.admin.role`、F2 池权限可切换 `family.earnings.pool.toggle`)。前述 241 SC 无「团队收益/财富中心」主题,本轮派生 SC-A-23 / SC-A-24 入册并补三流用例,闭环需求侧 G-1。实现路径由实现方定(候选 `/api/team/referral/*` / `/api/family/earnings/*`),标「需核实」。 ### 正常流 | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e | |---|---|---|---|---|---|---|---|---|---|---| | TC-A-23 | SC-A-23 | 团队收益·推广分享 | 运营/团队负责人 | P1 | 功能 | 分销体系已开通;存在邀请关系 | 1. 查看推广收益 CF 口径 2. 生成邀请二维码直接分享 3. 查看收益明细 | 1. 推广收益按 CF 口径计算并展示 2. 二维码落地页可分享、复用 `distribution_relations.invite_code` 3. 收益明细含来源/金额/状态、分页正常 | `team.referral.earnings.cf` / `team.invite.share` | — | | TC-A-24 | SC-A-24 | 财富中心·贡献榜 | 运营/管理员 | P1 | 功能 | 存在贡献榜数据与成员池 | 1. 以 admin role 进入财富中心 2. 切换池权限(toggle-member) 3. 查看贡献榜 | 1. 仅 `role=admin` 可进入 2. 池权限切换生效、越权成员不可见 3. 贡献榜按贡献排序展示 | `family.earnings.admin.role` / `family.earnings.pool.toggle` | — | ### 异常流(-E,具体故障注入) | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e | |---|---|---|---|---|---|---|---|---|---|---| | TC-A-23-E | SC-A-23 | 团队收益·推广分享 | 运营/团队负责人 | P2 | 异常 | 造「收益口径非法」「邀请码失效」「并发分享」 | 1. 收益口径参数非法 2. 失效/已用邀请码分享 3. 并发生成同一邀请 | 1. 非法口径 400 2. 失效码拒绝分享、提示已失效 3. 并发幂等、不重复建关系 | `team.referral.earnings.cf` | — | | TC-A-24-E | SC-A-24 | 财富中心·贡献榜 | 运营/管理员 | P2 | 异常 | 造「role 非法」「池权限越权切换」「空贡献数据」 | 1. 以非 admin role 调贡献榜接口 2. 越权切换他人池权限 3. 贡献榜无数据 | 1. 非 admin 400/403 2. 越权切换被拒、留痕 3. 空数据展示空态不报错 | `family.earnings.admin.role` / `family.earnings.pool.toggle` | — | ### 权限流(-P,针对具体越权对象) | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e | |---|---|---|---|---|---|---|---|---|---|---| | TC-A-23-P | SC-A-23 | 团队收益·推广分享 | 运营/团队负责人 | P1 | 权限 | 家长 A、孩子 B、无 token | 1. 家长 A 调推广收益/邀请接口 2. 无 token 访问 | 非授权角色 403;匿名 401 | `team.referral.earnings.cf` / `JwtInterceptor` | — | | TC-A-24-P | SC-A-24 | 财富中心·贡献榜 | 运营/管理员 | P1 | 权限 | 家长 A、无 token、非授权运营账号 | 1. 家长 A 调贡献榜/池权限接口 2. 无 token 访问 3. 非授权运营账号切换 | 非授权角色 403;匿名 401;仅 admin 可维护 | `family.earnings.admin.role` / `LOGIN_REQUIRED_PATHS` | — | ## 非功能测试用例(性能 / 兼容 / 安全) > 非功能维度:性能(大文件/并发/限流)、兼容(多端/多浏览器/主题)、安全(IDOR/XSS/上传/鉴权/SSRF)。编号后缀 `-N` 与正常流/异常流(-E)/权限流(-P)并列。 | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e | |---|---|---|---|---|---|---|---|---|---|---| | TC-A-N01 | SC-A-05 | 配置CRUD | 运营 | P1 | 性能 | 配置项 ≥ 1000 | 1. 打开配置列表 2. 翻页/筛选 | 列表 ≤ 2s;CRUD 即时生效 | 配置管理 | — | | TC-A-N02 | SC-A-02 | 报告解析中台 | 运营 | P0 | 性能 | 解析队列积压 ≥ 100 | 1. 观察队列吞吐/监控 | 单条 ≤ 30s;失败进未知聚类;监控可见积压 | 解析中台 | — | | TC-A-N03 | SC-A-01 | 登录统计 | 运营 | P1 | 性能 | 统计数据量大 | 1. 打开统计面板 2. 选时间范围 | 聚合 ≤ 3s;支持分页/缓存;大数据不超时 | 统计聚合 | — | | TC-A-N04 | SC-A-20 | 限流熔断 | 运营 | P0 | 性能 | 压测解析/AI 接口 | 1. 施压至阈值 2. 观察 | 触发限流/熔断返回 429/友好降级;系统不雪崩;恢复后正常 | 限流熔断 | e2e/api/nonfunc-perf-compat.spec.js | | TC-A-N05 | SC-A-01 | 登录统计 | 运营 | P0 | 安全 | 非 admin 账号 | 1. 用普通家长 token 访问 `/api/admin/*` | 返回 401/403;后台不可被非管理员进入 | 后台鉴权 | e2e/api/nonfunc-security.spec.js | | TC-A-N06 | SC-A-03 | 文章审核 | 运营 | P1 | 安全 | 提交含 `