[ { "id": "TC-A-01", "scene": "A-1", "module": "认证", "role": "运营", "priority": "P0", "type": "接口", "precondition": "admin 账号", "steps": "1. 管理端密码登录", "expected": "登录进入 Dashboard;错误密码不签发 token", "design": "`AdminAuthController`", "e2e": "`e2e/roles/admin/login.spec.js`", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 7, "section": "测试用例 · 平台运营(Admin / Web 管理端)", "role_key": "admin", "tier": "linked-e2e", "reason": "文档已关联既有规格 e2e/roles/admin/login.spec.js;本条为文档锚点,执行请直接跑原 spec", "ui_mixed": false, "api": null, "expected_codes": [], "e2e_ref": "e2e/roles/admin/login.spec.js", "e2e_exists": true, "route_level": "", "route_evidence": "", "tag": "[TC-A-01][P0][既有]", "title": "[TC-A-01][P0][既有] 认证 · 1. 管理端密码登录", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-02", "scene": "A-1", "module": "统计", "role": "运营", "priority": "P1", "type": "功能", "precondition": "有业务数据", "steps": "1. 打开任务统计页", "expected": "显示任务总量/完成率,与库内一致", "design": "`StatsController`", "e2e": "`e2e/admin-panel.spec.js`", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 8, "section": "测试用例 · 平台运营(Admin / Web 管理端)", "role_key": "admin", "tier": "linked-e2e", "reason": "文档已关联既有规格 e2e/admin-panel.spec.js;本条为文档锚点,执行请直接跑原 spec", "ui_mixed": false, "api": null, "expected_codes": [], "e2e_ref": "e2e/admin-panel.spec.js", "e2e_exists": true, "route_level": "", "route_evidence": "", "tag": "[TC-A-02][P1][既有]", "title": "[TC-A-02][P1][既有] 统计 · 1. 打开任务统计页", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-03", "scene": "A-2", "module": "方案管理", "role": "运营", "priority": "P1", "type": "功能", "precondition": "多家庭方案", "steps": "1. 打开方案管理页(不筛家庭)", "expected": "列出全部方案(含 source/进度/审核时间);可筛状态", "design": "方案管理(全量)", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 9, "section": "测试用例 · 平台运营(Admin / Web 管理端)", "role_key": "admin", "tier": "design-fixture", "reason": "需业务夹具/种子数据或人工场景编排", "ui_mixed": false, "api": null, "expected_codes": [], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-03][P1][设计态]", "title": "[TC-A-03][P1][设计态] 方案管理 · 1. 打开方案管理页(不筛家庭)", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-04", "scene": "A-2", "module": "方案激活", "role": "运营", "priority": "P1", "type": "功能", "precondition": "reviewed 方案", "steps": "1. 对 reviewed 方案点击激活", "expected": "生成任务成功,提示成功", "design": "方案激活", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 10, "section": "测试用例 · 平台运营(Admin / Web 管理端)", "role_key": "admin", "tier": "design-ui", "reason": "依赖前端 SPA/DOM 与浏览器,远程环境不可用", "ui_mixed": true, "api": null, "expected_codes": [], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-04][P1][设计态]", "title": "[TC-A-04][P1][设计态] 方案激活 · 1. 对 reviewed 方案点击激活", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-05", "scene": "A-2", "module": "报告解析", "role": "运营", "priority": "P1", "type": "功能", "precondition": "gut_flora 已注册", "steps": "1. 打开报告解析中台", "expected": "类型列表返回≥1 条(含 gut_flora)", "design": "`AdminReportParserController`", "e2e": "`e2e/health-report-audit.spec.js`", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 11, "section": "测试用例 · 平台运营(Admin / Web 管理端)", "role_key": "admin", "tier": "linked-e2e", "reason": "文档已关联既有规格 e2e/health-report-audit.spec.js;本条为文档锚点,执行请直接跑原 spec", "ui_mixed": false, "api": null, "expected_codes": [], "e2e_ref": "e2e/health-report-audit.spec.js", "e2e_exists": true, "route_level": "", "route_evidence": "", "tag": "[TC-A-05][P1][既有]", "title": "[TC-A-05][P1][既有] 报告解析 · 1. 打开报告解析中台", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-06", "scene": "A-2", "module": "报告解析", "role": "运营", "priority": "P1", "type": "接口", "precondition": "—", "steps": "1. `POST /api/admin/report-parser/types/save`(typeId/显示名/路径/threshold) 2. 重复同 typeId", "expected": "保存成功列表可见;重复 typeId 被拒绝", "design": "报告类型注册", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 12, "section": "测试用例 · 平台运营(Admin / Web 管理端)", "role_key": "admin", "tier": "active-probe", "reason": "", "ui_mixed": true, "api": { "path": "/api/admin/report-parser/types/save", "paths": [ "/api/admin/report-parser/types/save" ], "codes": [], "body": {} }, "expected_codes": [], "e2e_ref": "", "e2e_exists": false, "route_level": "inline", "route_evidence": "用例步骤/预期中显式给出", "tag": "[TC-A-06][P1][探针]", "title": "[TC-A-06][P1][探针] 报告解析 · 1. POST /api/admin/report-parser/t", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-07", "scene": "A-2", "module": "报告解析", "role": "运营", "priority": "P2", "type": "功能", "precondition": "有未知报告上传", "steps": "1. 打开未知报告聚类 2. 查看上传 3. 自学习生成类型", "expected": "聚类列表可见;可自学习生成类型", "design": "未知聚类自学习", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 13, "section": "测试用例 · 平台运营(Admin / Web 管理端)", "role_key": "admin", "tier": "design-ui", "reason": "依赖前端 SPA/DOM 与浏览器,远程环境不可用", "ui_mixed": true, "api": null, "expected_codes": [], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-07][P2][设计态]", "title": "[TC-A-07][P2][设计态] 报告解析 · 1. 打开未知报告聚类 2. 查看上传 3. 自学习生成类型", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-08", "scene": "A-3", "module": "文章", "role": "运营", "priority": "P0", "type": "功能", "precondition": "文章素材", "steps": "1. 创建文章→提交审核→通过 2. 长文(8000字)创建+更新", "expected": "创建 1s 内返回成功(无超时);审核通过 C 端可见;长文稳定", "design": "文章发布-审核", "e2e": "`e2e/article-management.spec.js`", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 14, "section": "测试用例 · 平台运营(Admin / Web 管理端)", "role_key": "admin", "tier": "linked-e2e", "reason": "文档已关联既有规格 e2e/article-management.spec.js;本条为文档锚点,执行请直接跑原 spec", "ui_mixed": true, "api": null, "expected_codes": [], "e2e_ref": "e2e/article-management.spec.js", "e2e_exists": true, "route_level": "", "route_evidence": "", "tag": "[TC-A-08][P0][既有]", "title": "[TC-A-08][P0][既有] 文章 · 1. 创建文章→提交审核→通过 2. 长文(8000字)创建+更新", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-09", "scene": "A-3", "module": "文章·去重", "role": "运营", "priority": "P1", "type": "异常", "precondition": "已有文章标题", "steps": "1. 同标题重复创建", "expected": "第二次被拦截(标题已存在)", "design": "文章标题去重", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 15, "section": "测试用例 · 平台运营(Admin / Web 管理端)", "role_key": "admin", "tier": "design-fixture", "reason": "需业务夹具/种子数据或人工场景编排", "ui_mixed": false, "api": null, "expected_codes": [], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-09][P1][设计态]", "title": "[TC-A-09][P1][设计态] 文章·去重 · 1. 同标题重复创建", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-10", "scene": "A-4", "module": "关系类型", "role": "运营", "priority": "P1", "type": "功能", "precondition": "关系类型管理页", "steps": "1. 新增/编辑/停用关系类型", "expected": "操作成功;家长端关系选择器同步生效", "design": "关系类型 CRUD", "e2e": "`e2e/roles/admin/../relationship`", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 16, "section": "测试用例 · 平台运营(Admin / Web 管理端)", "role_key": "admin", "tier": "design-ui", "reason": "依赖前端 SPA/DOM 与浏览器,远程环境不可用", "ui_mixed": true, "api": null, "expected_codes": [], "e2e_ref": "e2e/roles/admin/../relationship", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-10][P1][设计态]", "title": "[TC-A-10][P1][设计态] 关系类型 · 1. 新增/编辑/停用关系类型", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-11", "scene": "A-4", "module": "勋章", "role": "运营", "priority": "P0", "type": "接口", "precondition": "勋章素材", "steps": "1. `POST` 创建勋章(名称/图标/触发条件/门槛)", "expected": "200 成功,badgeId 自动生成,列表可见", "design": "勋章管理;黑盒回归", "e2e": "`e2e/points-system.spec.js`(参考)", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 17, "section": "测试用例 · 平台运营(Admin / Web 管理端)", "role_key": "admin", "tier": "linked-e2e", "reason": "文档已关联既有规格 e2e/points-system.spec.js;本条为文档锚点,执行请直接跑原 spec", "ui_mixed": true, "api": null, "expected_codes": [ 200 ], "e2e_ref": "e2e/points-system.spec.js", "e2e_exists": true, "route_level": "", "route_evidence": "", "tag": "[TC-A-11][P0][既有]", "title": "[TC-A-11][P0][既有] 勋章 · 1. POST 创建勋章(名称/图标/触发条件/门槛)", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-12", "scene": "A-4", "module": "供应商", "role": "运营", "priority": "P0", "type": "接口", "precondition": "供应商素材", "steps": "1. `POST /api/admin/ecom-supplier/save`(昵称/手机号/真实姓名)", "expected": "200 成功,列表 name=昵称;同手机号重复被拒/可控覆盖", "design": "供应商管理;黑盒回归", "e2e": "`e2e/roles/admin/vendor/management.spec.js`", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 18, "section": "测试用例 · 平台运营(Admin / Web 管理端)", "role_key": "admin", "tier": "active-api", "reason": "", "ui_mixed": false, "api": { "path": "/api/admin/ecom-supplier/save", "paths": [ "/api/admin/ecom-supplier/save" ], "codes": [ 200 ], "body": {} }, "expected_codes": [ 200 ], "e2e_ref": "e2e/roles/admin/vendor/management.spec.js", "e2e_exists": true, "route_level": "inline", "route_evidence": "用例步骤/预期中显式给出", "tag": "[TC-A-12][P0][API]", "title": "[TC-A-12][P0][API] 供应商 · 1. POST /api/admin/ecom-supplier/s", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-13", "scene": "A-5", "module": "活动", "role": "运营", "priority": "P1", "type": "功能", "precondition": "草稿活动", "steps": "1. 草稿→提交审核→通过→撤回→退回草稿", "expected": "状态流转正确;已发布可撤回;全流程无 500", "design": "活动审核撤回;黑盒回归", "e2e": "`e2e/roles/admin/activity-review.spec.js`", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 19, "section": "测试用例 · 平台运营(Admin / Web 管理端)", "role_key": "admin", "tier": "design-contract", "reason": "源码 Controller / 接口文档 / 关联 spec 均未找到可靠路由,预期码 500,需人工补 API 映射", "ui_mixed": false, "api": null, "expected_codes": [ 500 ], "e2e_ref": "e2e/roles/admin/activity-review.spec.js", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-13][P1][设计态]", "title": "[TC-A-13][P1][设计态] 活动 · 1. 草稿→提交审核→通过→撤回→退回草稿", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-14", "scene": "A-6", "module": "知识库", "role": "运营", "priority": "P1", "type": "接口", "precondition": "知识条目存在(如 id=1)", "steps": "1. 删除知识条目", "expected": "200 成功,列表移除,无 500", "design": "知识库管理;黑盒回归", "e2e": "`e2e/health-knowledge-base.spec.js`", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 20, "section": "测试用例 · 平台运营(Admin / Web 管理端)", "role_key": "admin", "tier": "linked-e2e", "reason": "文档已关联既有规格 e2e/health-knowledge-base.spec.js;本条为文档锚点,执行请直接跑原 spec", "ui_mixed": false, "api": null, "expected_codes": [ 200, 500 ], "e2e_ref": "e2e/health-knowledge-base.spec.js", "e2e_exists": true, "route_level": "", "route_evidence": "", "tag": "[TC-A-14][P1][既有]", "title": "[TC-A-14][P1][既有] 知识库 · 1. 删除知识条目", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-15", "scene": "A-6", "module": "数据迁移", "role": "运营", "priority": "P2", "type": "功能", "precondition": "sfms 源就绪", "steps": "1. 执行 sfms→cfc 迁移", "expected": "接口返回成功,关键业务表数据量更新;失败回滚+明确错误", "design": "多数据源/SfmsDataSourceConfig", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 21, "section": "测试用例 · 平台运营(Admin / Web 管理端)", "role_key": "admin", "tier": "design-fixture", "reason": "需业务夹具/种子数据或人工场景编排", "ui_mixed": false, "api": null, "expected_codes": [], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-15][P2][设计态]", "title": "[TC-A-15][P2][设计态] 数据迁移 · 1. 执行 sfms→cfc 迁移", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-16", "scene": "A-7", "module": "参数校验", "role": "运营", "priority": "P0", "type": "异常", "precondition": "各管理接口可用", "steps": "1. 各接口传空 body/错类型字段", "expected": "返回 400 + 具体字段提示(不再裸 500)", "design": "统一 `Result`+全局异常;黑盒回归", "e2e": "`e2e/admin-panel.spec.js`", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 22, "section": "测试用例 · 平台运营(Admin / Web 管理端)", "role_key": "admin", "tier": "linked-e2e", "reason": "文档已关联既有规格 e2e/admin-panel.spec.js;本条为文档锚点,执行请直接跑原 spec", "ui_mixed": false, "api": null, "expected_codes": [ 400 ], "e2e_ref": "e2e/admin-panel.spec.js", "e2e_exists": true, "route_level": "", "route_evidence": "", "tag": "[TC-A-16][P0][既有]", "title": "[TC-A-16][P0][既有] 参数校验 · 1. 各接口传空 body/错类型字段", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-17", "scene": "A-16", "module": "/api/admin/report-parser/*", "role": "运营", "priority": "P1", "type": "功能", "precondition": "已登录(默认 运营);相关前置数据就绪", "steps": "1. 按场景流程执行:看未知类型 → 标类别 → 生效 2. 观察结果", "expected": "达成目标:标注未知聚类;边界:新类先注册再解析", "design": "/api/admin/report-parser/*", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 35, "section": "本轮扩展场景用例(新增 SC-A)", "role_key": "admin", "tier": "design-fixture", "reason": "需业务夹具/种子数据或人工场景编排", "ui_mixed": false, "api": null, "expected_codes": [], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-17][P1][设计态]", "title": "[TC-A-17][P1][设计态] /api/admin/report-parser/* · 1. 按场景流程执行:看未知类型 → 标类别 → 生效 2. 观察结", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-18", "scene": "A-17", "module": "优惠券/活动管理", "role": "运营", "priority": "P1", "type": "功能", "precondition": "已登录(默认 运营);相关前置数据就绪", "steps": "1. 按场景流程执行:建券/活动 → 设规则/名额 → 上线 2. 观察结果", "expected": "达成目标:后台配券建活动;边界:时间冲突校验;名额超卖配置保护", "design": "优惠券/活动管理", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 36, "section": "本轮扩展场景用例(新增 SC-A)", "role_key": "admin", "tier": "design-fixture", "reason": "需业务夹具/种子数据或人工场景编排", "ui_mixed": false, "api": null, "expected_codes": [], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-18][P1][设计态]", "title": "[TC-A-18][P1][设计态] 优惠券/活动管理 · 1. 按场景流程执行:建券/活动 → 设规则/名额 → 上线 2.", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-19", "scene": "A-18", "module": "内容安全", "role": "运营", "priority": "P1", "type": "功能", "precondition": "已登录(默认 运营);相关前置数据就绪", "steps": "1. 按场景流程执行:队列 → 通过/下架 2. 观察结果", "expected": "达成目标:审 UGC/AI;边界:敏感词命中拦截", "design": "内容安全", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 37, "section": "本轮扩展场景用例(新增 SC-A)", "role_key": "admin", "tier": "design-fixture", "reason": "需业务夹具/种子数据或人工场景编排", "ui_mixed": false, "api": null, "expected_codes": [], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-19][P1][设计态]", "title": "[TC-A-19][P1][设计态] 内容安全 · 1. 按场景流程执行:队列 → 通过/下架 2. 观察结果", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-20", "scene": "A-19", "module": "GDPR 工单", "role": "运营", "priority": "P1", "type": "功能", "precondition": "已登录(默认 运营);相关前置数据就绪", "steps": "1. 按场景流程执行:接工单 → 执行归档/导出 2. 观察结果", "expected": "达成目标:处理用户注销/导出;边界:审计留痕;冷静期", "design": "GDPR 工单", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 38, "section": "本轮扩展场景用例(新增 SC-A)", "role_key": "admin", "tier": "design-fixture", "reason": "需业务夹具/种子数据或人工场景编排", "ui_mixed": false, "api": null, "expected_codes": [], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-20][P1][设计态]", "title": "[TC-A-20][P1][设计态] GDPR 工单 · 1. 按场景流程执行:接工单 → 执行归档/导出 2. 观察结果", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-21", "scene": "A-20", "module": "网关/限流", "role": "运营", "priority": "P1", "type": "功能", "precondition": "已登录(默认 运营);相关前置数据就绪", "steps": "1. 按场景流程执行:配限流规则 → 生效 2. 观察结果", "expected": "达成目标:接口防护;边界:误杀白名单", "design": "网关/限流", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 39, "section": "本轮扩展场景用例(新增 SC-A)", "role_key": "admin", "tier": "design-fixture", "reason": "需业务夹具/种子数据或人工场景编排", "ui_mixed": false, "api": null, "expected_codes": [], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-21][P1][设计态]", "title": "[TC-A-21][P1][设计态] 网关/限流 · 1. 按场景流程执行:配限流规则 → 生效 2. 观察结果", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-22", "scene": "A-21", "module": "模型管理", "role": "运营", "priority": "P1", "type": "功能", "precondition": "已登录(默认 运营);相关前置数据就绪", "steps": "1. 按场景流程执行:版控/上下线 2. 观察结果", "expected": "达成目标:模型版本/开关;边界:下线前回退方案", "design": "模型管理", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 40, "section": "本轮扩展场景用例(新增 SC-A)", "role_key": "admin", "tier": "design-fixture", "reason": "需业务夹具/种子数据或人工场景编排", "ui_mixed": false, "api": null, "expected_codes": [], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-22][P1][设计态]", "title": "[TC-A-22][P1][设计态] 模型管理 · 1. 按场景流程执行:版控/上下线 2. 观察结果", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-23", "scene": "A-22", "module": "知识库", "role": "运营", "priority": "P1", "type": "功能", "precondition": "已登录(默认 运营);相关前置数据就绪", "steps": "1. 按场景流程执行:CRUD → 同步 2. 观察结果", "expected": "达成目标:维护营养知识;边界:同步失败重试", "design": "知识库", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 41, "section": "本轮扩展场景用例(新增 SC-A)", "role_key": "admin", "tier": "design-fixture", "reason": "需业务夹具/种子数据或人工场景编排", "ui_mixed": false, "api": null, "expected_codes": [], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-23][P1][设计态]", "title": "[TC-A-23][P1][设计态] 知识库 · 1. 按场景流程执行:CRUD → 同步 2. 观察结果", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-01-E", "scene": "A-1", "module": "认证", "role": "运营", "priority": "P2", "type": "异常", "precondition": "admin 账号", "steps": "1. 密码错误超 5 次 2. token 过期访问 3. 弱密码(如 123456)设新密码", "expected": "错误密码不签发 token 且提示次数限制/锁定;过期 token 401 跳登录;弱密码 400 拦截", "design": "`AdminAuthController`", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 47, "section": "异常流用例(派生自正常流)", "role_key": "admin", "tier": "active-api", "reason": "空参数探针:body={} 触发参数校验,不等同完整故障注入", "ui_mixed": false, "api": { "path": "/api/admin-auth/info", "paths": [ "/api/admin-auth/info" ], "codes": [ 400, 401 ], "body": {} }, "expected_codes": [ 400, 401 ], "e2e_ref": "", "e2e_exists": false, "route_level": "controller", "route_evidence": "源码 cfc-backend/src/main/java/com/etotem/cfc/controller/admin/AdminAuthController.java:173(AdminAuthController)", "tag": "[TC-A-01-E][P2][API]", "title": "[TC-A-01-E][P2][API] 认证 · 1. 密码错误超 5 次 2. token 过期访问 3. 弱密码(", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-02-E", "scene": "A-1", "module": "统计", "role": "运营", "priority": "P2", "type": "异常", "precondition": "有业务数据", "steps": "1. 统计接口超时/库内无数据 2. 时间范围非法(起>止)", "expected": "超时降级提示非500;无数据显示『暂无数据』;时间非法 400", "design": "`StatsController`", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 48, "section": "异常流用例(派生自正常流)", "role_key": "admin", "tier": "active-api", "reason": "空参数探针:body={} 触发参数校验,不等同完整故障注入", "ui_mixed": false, "api": { "path": "/api/stats/overview", "paths": [ "/api/stats/overview" ], "codes": [ 400 ], "body": {} }, "expected_codes": [ 400 ], "e2e_ref": "", "e2e_exists": false, "route_level": "controller", "route_evidence": "源码 cfc-backend/src/main/java/com/etotem/cfc/controller/stats/StatsController.java:122(StatsController)", "tag": "[TC-A-02-E][P2][API]", "title": "[TC-A-02-E][P2][API] 统计 · 1. 统计接口超时/库内无数据 2. 时间范围非法(起>止)", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-03-E", "scene": "A-2", "module": "方案管理", "role": "运营", "priority": "P2", "type": "异常", "precondition": "多家庭方案", "steps": "1. 方案列表接口超时 2. 状态筛选值非法 3. 跨家庭方案数据隔离", "expected": "超时降级非500;非法筛选 400;仅返回有权家庭数据不串", "design": "方案管理(全量)", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 49, "section": "异常流用例(派生自正常流)", "role_key": "admin", "tier": "active-api", "reason": "空参数探针:body={} 触发参数校验,不等同完整故障注入", "ui_mixed": false, "api": { "path": "/api/family/attributes/get", "paths": [ "/api/family/attributes/get" ], "codes": [ 400 ], "body": {} }, "expected_codes": [ 400 ], "e2e_ref": "", "e2e_exists": false, "route_level": "doc-fuzzy", "route_evidence": "API_REFERENCE 章节「家庭与成员」→ 源码 cfc-backend/src/main/java/com/etotem/cfc/controller/admin/FamilyAttributeController.java:25(模块级关联,需人工复核)", "tag": "[TC-A-03-E][P2][API]", "title": "[TC-A-03-E][P2][API] 方案管理 · 1. 方案列表接口超时 2. 状态筛选值非法 3. 跨家庭方案数据隔", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-04-E", "scene": "A-2", "module": "方案激活", "role": "运营", "priority": "P2", "type": "异常", "precondition": "reviewed 方案", "steps": "1. 激活非 reviewed 方案 2. 激活时任务分解服务超时 3. 并发激活同一方案", "expected": "非 reviewed 激活拦截;超时回滚不残半任务;并发幂等仅生成 1 次任务", "design": "方案激活", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 50, "section": "异常流用例(派生自正常流)", "role_key": "admin", "tier": "design-fixture", "reason": "需业务夹具/种子数据或人工场景编排", "ui_mixed": false, "api": null, "expected_codes": [], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-04-E][P2][设计态]", "title": "[TC-A-04-E][P2][设计态] 方案激活 · 1. 激活非 reviewed 方案 2. 激活时任务分解服务超时", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-05-E", "scene": "A-2", "module": "报告解析", "role": "运营", "priority": "P2", "type": "异常", "precondition": "gut_flora 已注册", "steps": "1. 类型列表接口超时 2. 注册重复 typeId 3. 类型路径非法", "expected": "超时降级非500;重复 typeId 400 拒绝;路径非法 400", "design": "`AdminReportParserController`", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 51, "section": "异常流用例(派生自正常流)", "role_key": "admin", "tier": "active-api", "reason": "空参数探针:body={} 触发参数校验,不等同完整故障注入", "ui_mixed": false, "api": { "path": "/api/report-parser/types/links", "paths": [ "/api/report-parser/types/links" ], "codes": [ 400 ], "body": {} }, "expected_codes": [ 400 ], "e2e_ref": "", "e2e_exists": false, "route_level": "controller", "route_evidence": "源码 cfc-backend/src/main/java/com/etotem/cfc/controller/ReportParserController.java:57(ReportParserController)", "tag": "[TC-A-05-E][P2][API]", "title": "[TC-A-05-E][P2][API] 报告解析 · 1. 类型列表接口超时 2. 注册重复 typeId 3. 类型路径", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-06-E", "scene": "A-2", "module": "报告解析", "role": "运营", "priority": "P2", "type": "异常", "precondition": "—", "steps": "1. 重复 typeId 保存 2. 必填缺失(无 typeId/显示名) 3. threshold 非法(负)", "expected": "重复 typeId 拒绝;必填缺失 400;threshold 非法 400", "design": "报告类型注册", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 52, "section": "异常流用例(派生自正常流)", "role_key": "admin", "tier": "active-api", "reason": "空参数探针:body={} 触发参数校验,不等同完整故障注入", "ui_mixed": false, "api": { "path": "/api/admin/report-parser/types/save", "paths": [ "/api/admin/report-parser/types/save" ], "codes": [ 400 ], "body": {} }, "expected_codes": [ 400 ], "e2e_ref": "", "e2e_exists": false, "route_level": "inherit", "route_evidence": "派生自 TC-A-06(基用例步骤中已给出该路径)", "tag": "[TC-A-06-E][P2][API]", "title": "[TC-A-06-E][P2][API] 报告解析 · 1. 重复 typeId 保存 2. 必填缺失(无 typeId/显", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-07-E", "scene": "A-2", "module": "报告解析", "role": "运营", "priority": "P3", "type": "异常", "precondition": "有未知报告上传", "steps": "1. 未知聚类列表接口超时 2. 自学习生成的类型与已注册重名", "expected": "超时降级非500;重名类型生成被拒/提示已存在", "design": "未知聚类自学习", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 53, "section": "异常流用例(派生自正常流)", "role_key": "admin", "tier": "design-fixture", "reason": "需业务夹具/种子数据或人工场景编排", "ui_mixed": false, "api": null, "expected_codes": [], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-07-E][P3][设计态]", "title": "[TC-A-07-E][P3][设计态] 报告解析 · 1. 未知聚类列表接口超时 2. 自学习生成的类型与已注册重名", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-08-E", "scene": "A-3", "module": "文章", "role": "运营", "priority": "P2", "type": "异常", "precondition": "文章素材", "steps": "1. 重复创建同标题文章 2. 长文(8000字)提交时网络中断 3. 标题含注入", "expected": "同标题 400『标题已存在』;长文提交超时重试不丢稿;注入 400 或转义", "design": "文章发布-审核", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 54, "section": "异常流用例(派生自正常流)", "role_key": "admin", "tier": "active-api", "reason": "空参数探针:body={} 触发参数校验,不等同完整故障注入", "ui_mixed": false, "api": { "path": "/api/admin/vendor/list", "paths": [ "/api/admin/vendor/list" ], "codes": [ 400 ], "body": {} }, "expected_codes": [ 400 ], "e2e_ref": "", "e2e_exists": false, "route_level": "linked-spec", "route_evidence": "既有规格 management.spec.js 实际调用 /api/admin/vendor/list", "tag": "[TC-A-08-E][P2][API]", "title": "[TC-A-08-E][P2][API] 文章 · 1. 重复创建同标题文章 2. 长文(8000字)提交时网络中断 3", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-09-E", "scene": "A-3", "module": "文章·去重", "role": "运营", "priority": "P2", "type": "异常", "precondition": "已有文章标题", "steps": "1. 同标题重复创建 2. 标题空/超长", "expected": "重复创建被拦截提示标题已存在;空/超长 400", "design": "文章标题去重", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 55, "section": "异常流用例(派生自正常流)", "role_key": "admin", "tier": "design-contract", "reason": "源码 Controller / 接口文档 / 关联 spec 均未找到可靠路由,预期码 400,需人工补 API 映射", "ui_mixed": false, "api": null, "expected_codes": [ 400 ], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-09-E][P2][设计态]", "title": "[TC-A-09-E][P2][设计态] 文章·去重 · 1. 同标题重复创建 2. 标题空/超长", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-10-E", "scene": "A-4", "module": "关系类型", "role": "运营", "priority": "P2", "type": "异常", "precondition": "关系类型管理页", "steps": "1. 新增重名关系类型 2. 停用后被引用的关系类型 3. 名称含注入", "expected": "重名拒绝;停用被引用类型提示先解绑;注入 400/转义;家长端选择器同步生效仍正确", "design": "关系类型 CRUD", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 56, "section": "异常流用例(派生自正常流)", "role_key": "admin", "tier": "design-contract", "reason": "源码 Controller / 接口文档 / 关联 spec 均未找到可靠路由,预期码 400,需人工补 API 映射", "ui_mixed": true, "api": null, "expected_codes": [ 400 ], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-10-E][P2][设计态]", "title": "[TC-A-10-E][P2][设计态] 关系类型 · 1. 新增重名关系类型 2. 停用后被引用的关系类型 3. 名称含注", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-11-E", "scene": "A-4", "module": "勋章", "role": "运营", "priority": "P2", "type": "异常", "precondition": "勋章素材", "steps": "1. 重复 POST 同名称勋章 2. 触发条件/门槛非法(负) 3. 并发创建", "expected": "重复 400/幂等;非法门槛 400;并发创建各自独立不串", "design": "勋章管理;黑盒回归", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 57, "section": "异常流用例(派生自正常流)", "role_key": "admin", "tier": "design-contract", "reason": "源码 Controller / 接口文档 / 关联 spec 均未找到可靠路由,预期码 400,需人工补 API 映射", "ui_mixed": false, "api": null, "expected_codes": [ 400 ], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-11-E][P2][设计态]", "title": "[TC-A-11-E][P2][设计态] 勋章 · 1. 重复 POST 同名称勋章 2. 触发条件/门槛非法(负) 3", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-12-E", "scene": "A-4", "module": "供应商", "role": "运营", "priority": "P2", "type": "异常", "precondition": "供应商素材", "steps": "1. 同手机号重复保存 2. 手机号格式非法 3. 必填缺失(无真实姓名)", "expected": "同手机号拒绝/可控覆盖;非法格式 400;必填缺失 400;列表 name=昵称正确", "design": "供应商管理;黑盒回归", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 58, "section": "异常流用例(派生自正常流)", "role_key": "admin", "tier": "active-api", "reason": "空参数探针:body={} 触发参数校验,不等同完整故障注入", "ui_mixed": false, "api": { "path": "/api/admin/ecom-supplier/save", "paths": [ "/api/admin/ecom-supplier/save" ], "codes": [ 400 ], "body": {} }, "expected_codes": [ 400 ], "e2e_ref": "", "e2e_exists": false, "route_level": "inherit", "route_evidence": "派生自 TC-A-12(基用例步骤中已给出该路径)", "tag": "[TC-A-12-E][P2][API]", "title": "[TC-A-12-E][P2][API] 供应商 · 1. 同手机号重复保存 2. 手机号格式非法 3. 必填缺失(无真实", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-13-E", "scene": "A-5", "module": "活动", "role": "运营", "priority": "P2", "type": "异常", "precondition": "草稿活动", "steps": "1. 活动已发布后再『提交审核』 2. 撤回非本人创建活动 3. 时间冲突(起<止非法)", "expected": "已发布再提交审核守卫拦截;非本人撤回 403;时间冲突 400;撤回退回草稿", "design": "活动审核撤回;黑盒回归", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 59, "section": "异常流用例(派生自正常流)", "role_key": "admin", "tier": "design-contract", "reason": "源码 Controller / 接口文档 / 关联 spec 均未找到可靠路由,预期码 400/403,需人工补 API 映射", "ui_mixed": false, "api": null, "expected_codes": [ 400, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-13-E][P2][设计态]", "title": "[TC-A-13-E][P2][设计态] 活动 · 1. 活动已发布后再『提交审核』 2. 撤回非本人创建活动 3. 时", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-14-E", "scene": "A-6", "module": "知识库", "role": "运营", "priority": "P2", "type": "异常", "precondition": "知识条目存在(如 id=1)", "steps": "1. 删除被方案/文章引用的知识条目 2. 删除不存在 id 3. 并发删除同 id", "expected": "被引用删除提示先解绑;不存在 404;并发删除幂等", "design": "知识库管理;黑盒回归", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 60, "section": "异常流用例(派生自正常流)", "role_key": "admin", "tier": "active-api", "reason": "空参数探针:body={} 触发参数校验,不等同完整故障注入", "ui_mixed": false, "api": { "path": "/api/admin-auth/login-by-password", "paths": [ "/api/admin-auth/login-by-password" ], "codes": [ 404 ], "body": {} }, "expected_codes": [ 404 ], "e2e_ref": "", "e2e_exists": false, "route_level": "linked-spec", "route_evidence": "既有规格 health-knowledge-base.spec.js 实际调用 /api/admin-auth/login-by-password", "tag": "[TC-A-14-E][P2][API]", "title": "[TC-A-14-E][P2][API] 知识库 · 1. 删除被方案/文章引用的知识条目 2. 删除不存在 id 3.", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-15-E", "scene": "A-6", "module": "数据迁移", "role": "运营", "priority": "P3", "type": "异常", "precondition": "sfms 源就绪", "steps": "1. 迁移中源连接中断 2. 目标表锁 3. 重复执行迁移", "expected": "中断回滚+明确错误非500;锁等待超时提示;重复执行幂等/提示已迁移", "design": "多数据源/SfmsDataSourceConfig", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 61, "section": "异常流用例(派生自正常流)", "role_key": "admin", "tier": "design-fixture", "reason": "需业务夹具/种子数据或人工场景编排", "ui_mixed": false, "api": null, "expected_codes": [], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-15-E][P3][设计态]", "title": "[TC-A-15-E][P3][设计态] 数据迁移 · 1. 迁移中源连接中断 2. 目标表锁 3. 重复执行迁移", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-16-E", "scene": "A-7", "module": "参数校验", "role": "运营", "priority": "P2", "type": "异常", "precondition": "各管理接口可用", "steps": "1. 各接口传空 body 2. 字段类型错配(字符串传数字位) 3. 超长字段", "expected": "空 body 400 含具体字段提示;类型错配 400;超长 400;不再裸 500", "design": "统一 `Result`+全局异常;黑盒回归", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 62, "section": "异常流用例(派生自正常流)", "role_key": "admin", "tier": "design-contract", "reason": "源码 Controller / 接口文档 / 关联 spec 均未找到可靠路由,预期码 400/500,需人工补 API 映射", "ui_mixed": false, "api": null, "expected_codes": [ 400, 500 ], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-16-E][P2][设计态]", "title": "[TC-A-16-E][P2][设计态] 参数校验 · 1. 各接口传空 body 2. 字段类型错配(字符串传数字位) 3", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-17-E", "scene": "A-16", "module": "/api/admin/report-parser/*", "role": "运营", "priority": "P2", "type": "异常", "precondition": "已登录(默认 运营);相关前置数据就绪", "steps": "1. 标注未知聚类时类目重名 2. 生效未注册路径", "expected": "重名类目拒绝;未注册路径 400;先注册再解析", "design": "/api/admin/report-parser/*", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 68, "section": "本轮扩展异常流(派生自新增场景)", "role_key": "admin", "tier": "design-contract", "reason": "源码 Controller / 接口文档 / 关联 spec 均未找到可靠路由,预期码 400,需人工补 API 映射", "ui_mixed": false, "api": null, "expected_codes": [ 400 ], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-17-E][P2][设计态]", "title": "[TC-A-17-E][P2][设计态] /api/admin/report-parser/* · 1. 标注未知聚类时类目重名 2. 生效未注册路径", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-18-E", "scene": "A-17", "module": "优惠券/活动管理", "role": "运营", "priority": "P2", "type": "异常", "precondition": "已登录(默认 运营);相关前置数据就绪", "steps": "1. 券时间冲突(起>止) 2. 名额配置超卖保护 3. 重复提交同活动", "expected": "时间冲突 400;名额超卖配置保护生效;重复提交幂等", "design": "优惠券/活动管理", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 69, "section": "本轮扩展异常流(派生自新增场景)", "role_key": "admin", "tier": "active-api", "reason": "空参数探针:body={} 触发参数校验,不等同完整故障注入", "ui_mixed": false, "api": { "path": "/api/coupon/list", "paths": [ "/api/coupon/list" ], "codes": [ 400 ], "body": {} }, "expected_codes": [ 400 ], "e2e_ref": "", "e2e_exists": false, "route_level": "doc-fuzzy", "route_evidence": "API_REFERENCE 章节「优惠券」→ 源码 cfc-backend/src/main/java/com/etotem/cfc/controller/CouponController.java:26(模块级关联,需人工复核)", "tag": "[TC-A-18-E][P2][API]", "title": "[TC-A-18-E][P2][API] 优惠券/活动管理 · 1. 券时间冲突(起>止) 2. 名额配置超卖保护 3. 重复提交同", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-19-E", "scene": "A-18", "module": "内容安全", "role": "运营", "priority": "P2", "type": "异常", "precondition": "已登录(默认 运营);相关前置数据就绪", "steps": "1. 审核队列接口超时 2. 命中敏感词内容通过", "expected": "超时降级非500;命中敏感词强制拦截不放行", "design": "内容安全", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 70, "section": "本轮扩展异常流(派生自新增场景)", "role_key": "admin", "tier": "design-fixture", "reason": "需业务夹具/种子数据或人工场景编排", "ui_mixed": false, "api": null, "expected_codes": [], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-19-E][P2][设计态]", "title": "[TC-A-19-E][P2][设计态] 内容安全 · 1. 审核队列接口超时 2. 命中敏感词内容通过", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-20-E", "scene": "A-19", "module": "GDPR 工单", "role": "运营", "priority": "P2", "type": "异常", "precondition": "已登录(默认 运营);相关前置数据就绪", "steps": "1. 并发处理同用户注销+导出工单 2. 越权处理他人工单", "expected": "并发安全:注销与导出按序执行不冲突;越权工单 403", "design": "GDPR 工单", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 71, "section": "本轮扩展异常流(派生自新增场景)", "role_key": "admin", "tier": "active-api", "reason": "空参数探针:body={} 触发参数校验,不等同完整故障注入", "ui_mixed": false, "api": { "path": "/api/user/children/list", "paths": [ "/api/user/children/list" ], "codes": [ 403 ], "body": {} }, "expected_codes": [ 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "doc-fuzzy", "route_evidence": "API_REFERENCE 章节「认证与用户」→ 源码 cfc-backend/src/main/java/com/etotem/cfc/controller/UserController.java:72(模块级关联,需人工复核)", "tag": "[TC-A-20-E][P2][API]", "title": "[TC-A-20-E][P2][API] GDPR 工单 · 1. 并发处理同用户注销+导出工单 2. 越权处理他人工单", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-21-E", "scene": "A-20", "module": "网关/限流", "role": "运营", "priority": "P2", "type": "异常", "precondition": "已登录(默认 运营);相关前置数据就绪", "steps": "1. 限流规则误杀白名单 IP 2. 规则配置非法(负阈值)", "expected": "白名单不被限流;非法阈值 400;规则生效可控", "design": "网关/限流", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 72, "section": "本轮扩展异常流(派生自新增场景)", "role_key": "admin", "tier": "design-contract", "reason": "源码 Controller / 接口文档 / 关联 spec 均未找到可靠路由,预期码 400,需人工补 API 映射", "ui_mixed": false, "api": null, "expected_codes": [ 400 ], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-21-E][P2][设计态]", "title": "[TC-A-21-E][P2][设计态] 网关/限流 · 1. 限流规则误杀白名单 IP 2. 规则配置非法(负阈值)", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-22-E", "scene": "A-21", "module": "模型管理", "role": "运营", "priority": "P2", "type": "异常", "precondition": "已登录(默认 运营);相关前置数据就绪", "steps": "1. 下线模型无回退方案 2. 上线非法模型版本", "expected": "无回退方案拦截下线;非法版本 400;上下线版控正确", "design": "模型管理", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 73, "section": "本轮扩展异常流(派生自新增场景)", "role_key": "admin", "tier": "design-contract", "reason": "源码 Controller / 接口文档 / 关联 spec 均未找到可靠路由,预期码 400,需人工补 API 映射", "ui_mixed": false, "api": null, "expected_codes": [ 400 ], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-22-E][P2][设计态]", "title": "[TC-A-22-E][P2][设计态] 模型管理 · 1. 下线模型无回退方案 2. 上线非法模型版本", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-23-E", "scene": "A-22", "module": "知识库", "role": "运营", "priority": "P2", "type": "异常", "precondition": "已登录(默认 运营);相关前置数据就绪", "steps": "1. 同步失败(网络抖动) 2. 并发 CRUD 同条目", "expected": "同步失败自动重试非500;并发 CRUD 乐观锁不互相覆盖", "design": "知识库", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 74, "section": "本轮扩展异常流(派生自新增场景)", "role_key": "admin", "tier": "design-fixture", "reason": "需业务夹具/种子数据或人工场景编排", "ui_mixed": false, "api": null, "expected_codes": [], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-23-E][P2][设计态]", "title": "[TC-A-23-E][P2][设计态] 知识库 · 1. 同步失败(网络抖动) 2. 并发 CRUD 同条目", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-01-P", "scene": "A-1", "module": "认证", "role": "运营", "priority": "P1", "type": "权限", "precondition": "admin 账号", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察", "expected": "非 admin 角色访问管理端接口统一 401/403,不泄露后台数据", "design": "`AdminAuthController`", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 80, "section": "权限流用例(派生自正常流)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/admin-auth/info", "paths": [ "/api/admin-auth/info" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "controller", "route_evidence": "源码 cfc-backend/src/main/java/com/etotem/cfc/controller/admin/AdminAuthController.java:173(AdminAuthController)", "tag": "[TC-A-01-P][P1][鉴权]", "title": "[TC-A-01-P][P1][鉴权] 认证 · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-02-P", "scene": "A-1", "module": "统计", "role": "运营", "priority": "P1", "type": "权限", "precondition": "有业务数据", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察", "expected": "非 admin 角色访问管理端接口统一 401/403,不泄露后台数据", "design": "`StatsController`", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 81, "section": "权限流用例(派生自正常流)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/stats/overview", "paths": [ "/api/stats/overview" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "controller", "route_evidence": "源码 cfc-backend/src/main/java/com/etotem/cfc/controller/stats/StatsController.java:122(StatsController)", "tag": "[TC-A-02-P][P1][鉴权]", "title": "[TC-A-02-P][P1][鉴权] 统计 · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-03-P", "scene": "A-2", "module": "方案管理", "role": "运营", "priority": "P1", "type": "权限", "precondition": "多家庭方案", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察", "expected": "非 admin 角色访问管理端接口统一 401/403,不泄露后台数据", "design": "方案管理(全量)", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 82, "section": "权限流用例(派生自正常流)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/product/list", "paths": [ "/api/product/list" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "doc-fuzzy", "route_evidence": "API_REFERENCE 章节「商品与订单」→ 源码 cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProductController.java:56(模块级关联,需人工复核)", "tag": "[TC-A-03-P][P1][鉴权]", "title": "[TC-A-03-P][P1][鉴权] 方案管理 · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-04-P", "scene": "A-2", "module": "方案激活", "role": "运营", "priority": "P1", "type": "权限", "precondition": "reviewed 方案", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察", "expected": "非 admin 角色访问管理端接口统一 401/403,不泄露后台数据", "design": "方案激活", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 83, "section": "权限流用例(派生自正常流)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/product/list", "paths": [ "/api/product/list" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "doc-fuzzy", "route_evidence": "API_REFERENCE 章节「商品与订单」→ 源码 cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProductController.java:56(模块级关联,需人工复核)", "tag": "[TC-A-04-P][P1][鉴权]", "title": "[TC-A-04-P][P1][鉴权] 方案激活 · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-05-P", "scene": "A-2", "module": "报告解析", "role": "运营", "priority": "P1", "type": "权限", "precondition": "gut_flora 已注册", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察", "expected": "非 admin 角色访问管理端接口统一 401/403,不泄露后台数据", "design": "`AdminReportParserController`", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 84, "section": "权限流用例(派生自正常流)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/report-parser/types/links", "paths": [ "/api/report-parser/types/links" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "controller", "route_evidence": "源码 cfc-backend/src/main/java/com/etotem/cfc/controller/ReportParserController.java:57(ReportParserController)", "tag": "[TC-A-05-P][P1][鉴权]", "title": "[TC-A-05-P][P1][鉴权] 报告解析 · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-06-P", "scene": "A-2", "module": "报告解析", "role": "运营", "priority": "P1", "type": "权限", "precondition": "—", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察", "expected": "非 admin 角色访问管理端接口统一 401/403,不泄露后台数据", "design": "报告类型注册", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 85, "section": "权限流用例(派生自正常流)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/admin/report-parser/types/save", "paths": [ "/api/admin/report-parser/types/save" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "inherit", "route_evidence": "派生自 TC-A-06(基用例步骤中已给出该路径)", "tag": "[TC-A-06-P][P1][鉴权]", "title": "[TC-A-06-P][P1][鉴权] 报告解析 · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-07-P", "scene": "A-2", "module": "报告解析", "role": "运营", "priority": "P2", "type": "权限", "precondition": "有未知报告上传", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察", "expected": "非 admin 角色访问管理端接口统一 401/403,不泄露后台数据", "design": "未知聚类自学习", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 86, "section": "权限流用例(派生自正常流)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/product/list", "paths": [ "/api/product/list" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "doc-fuzzy", "route_evidence": "API_REFERENCE 章节「商品与订单」→ 源码 cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProductController.java:56(模块级关联,需人工复核)", "tag": "[TC-A-07-P][P2][鉴权]", "title": "[TC-A-07-P][P2][鉴权] 报告解析 · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-08-P", "scene": "A-3", "module": "文章", "role": "运营", "priority": "P1", "type": "权限", "precondition": "文章素材", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察", "expected": "非 admin 角色访问管理端接口统一 401/403,不泄露后台数据", "design": "文章发布-审核", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 87, "section": "权限流用例(派生自正常流)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/product/list", "paths": [ "/api/product/list" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "doc-fuzzy", "route_evidence": "API_REFERENCE 章节「商品与订单」→ 源码 cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProductController.java:56(模块级关联,需人工复核)", "tag": "[TC-A-08-P][P1][鉴权]", "title": "[TC-A-08-P][P1][鉴权] 文章 · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-09-P", "scene": "A-3", "module": "文章·去重", "role": "运营", "priority": "P1", "type": "权限", "precondition": "已有文章标题", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察", "expected": "非 admin 角色访问管理端接口统一 401/403,不泄露后台数据", "design": "文章标题去重", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 88, "section": "权限流用例(派生自正常流)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/product/list", "paths": [ "/api/product/list" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "doc-fuzzy", "route_evidence": "API_REFERENCE 章节「商品与订单」→ 源码 cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProductController.java:56(模块级关联,需人工复核)", "tag": "[TC-A-09-P][P1][鉴权]", "title": "[TC-A-09-P][P1][鉴权] 文章·去重 · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-10-P", "scene": "A-4", "module": "关系类型", "role": "运营", "priority": "P1", "type": "权限", "precondition": "关系类型管理页", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察", "expected": "非 admin 角色访问管理端接口统一 401/403,不泄露后台数据", "design": "关系类型 CRUD", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 89, "section": "权限流用例(派生自正常流)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/product/list", "paths": [ "/api/product/list" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "doc-fuzzy", "route_evidence": "API_REFERENCE 章节「商品与订单」→ 源码 cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProductController.java:56(模块级关联,需人工复核)", "tag": "[TC-A-10-P][P1][鉴权]", "title": "[TC-A-10-P][P1][鉴权] 关系类型 · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-11-P", "scene": "A-4", "module": "勋章", "role": "运营", "priority": "P1", "type": "权限", "precondition": "勋章素材", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察", "expected": "非 admin 角色访问管理端接口统一 401/403,不泄露后台数据", "design": "勋章管理;黑盒回归", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 90, "section": "权限流用例(派生自正常流)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/product/list", "paths": [ "/api/product/list" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "doc-fuzzy", "route_evidence": "API_REFERENCE 章节「商品与订单」→ 源码 cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProductController.java:56(模块级关联,需人工复核)", "tag": "[TC-A-11-P][P1][鉴权]", "title": "[TC-A-11-P][P1][鉴权] 勋章 · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-12-P", "scene": "A-4", "module": "供应商", "role": "运营", "priority": "P1", "type": "权限", "precondition": "供应商素材", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察", "expected": "非 admin 角色访问管理端接口统一 401/403,不泄露后台数据", "design": "供应商管理;黑盒回归", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 91, "section": "权限流用例(派生自正常流)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/admin/ecom-supplier/save", "paths": [ "/api/admin/ecom-supplier/save" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "inherit", "route_evidence": "派生自 TC-A-12(基用例步骤中已给出该路径)", "tag": "[TC-A-12-P][P1][鉴权]", "title": "[TC-A-12-P][P1][鉴权] 供应商 · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-13-P", "scene": "A-5", "module": "活动", "role": "运营", "priority": "P1", "type": "权限", "precondition": "草稿活动", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察", "expected": "非 admin 角色访问管理端接口统一 401/403,不泄露后台数据", "design": "活动审核撤回;黑盒回归", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 92, "section": "权限流用例(派生自正常流)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/product/list", "paths": [ "/api/product/list" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "doc-fuzzy", "route_evidence": "API_REFERENCE 章节「商品与订单」→ 源码 cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProductController.java:56(模块级关联,需人工复核)", "tag": "[TC-A-13-P][P1][鉴权]", "title": "[TC-A-13-P][P1][鉴权] 活动 · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-14-P", "scene": "A-6", "module": "知识库", "role": "运营", "priority": "P1", "type": "权限", "precondition": "知识条目存在(如 id=1)", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察", "expected": "非 admin 角色访问管理端接口统一 401/403,不泄露后台数据", "design": "知识库管理;黑盒回归", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 93, "section": "权限流用例(派生自正常流)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/product/list", "paths": [ "/api/product/list" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "doc-fuzzy", "route_evidence": "API_REFERENCE 章节「商品与订单」→ 源码 cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProductController.java:56(模块级关联,需人工复核)", "tag": "[TC-A-14-P][P1][鉴权]", "title": "[TC-A-14-P][P1][鉴权] 知识库 · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-15-P", "scene": "A-6", "module": "数据迁移", "role": "运营", "priority": "P2", "type": "权限", "precondition": "sfms 源就绪", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察", "expected": "非 admin 角色访问管理端接口统一 401/403,不泄露后台数据", "design": "多数据源/SfmsDataSourceConfig", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 94, "section": "权限流用例(派生自正常流)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/product/list", "paths": [ "/api/product/list" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "doc-fuzzy", "route_evidence": "API_REFERENCE 章节「商品与订单」→ 源码 cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProductController.java:56(模块级关联,需人工复核)", "tag": "[TC-A-15-P][P2][鉴权]", "title": "[TC-A-15-P][P2][鉴权] 数据迁移 · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-16-P", "scene": "A-7", "module": "参数校验", "role": "运营", "priority": "P1", "type": "权限", "precondition": "各管理接口可用", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察", "expected": "非 admin 角色访问管理端接口统一 401/403,不泄露后台数据", "design": "统一 `Result`+全局异常;黑盒回归", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 95, "section": "权限流用例(派生自正常流)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/product/list", "paths": [ "/api/product/list" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "doc-fuzzy", "route_evidence": "API_REFERENCE 章节「商品与订单」→ 源码 cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProductController.java:56(模块级关联,需人工复核)", "tag": "[TC-A-16-P][P1][鉴权]", "title": "[TC-A-16-P][P1][鉴权] 参数校验 · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-17-P", "scene": "A-16", "module": "/api/admin/report-parser/*", "role": "运营", "priority": "P1", "type": "权限", "precondition": "已登录(默认 运营);相关前置数据就绪", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察拦截", "expected": "非 admin 角色访问统一 401/403,不泄露后台数据", "design": "/api/admin/report-parser/*", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 100, "section": "本轮扩展权限流(派生自新增场景)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/product/list", "paths": [ "/api/product/list" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "doc-fuzzy", "route_evidence": "API_REFERENCE 章节「商品与订单」→ 源码 cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProductController.java:56(模块级关联,需人工复核)", "tag": "[TC-A-17-P][P1][鉴权]", "title": "[TC-A-17-P][P1][鉴权] /api/admin/report-parser/* · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-18-P", "scene": "A-17", "module": "优惠券/活动管理", "role": "运营", "priority": "P1", "type": "权限", "precondition": "已登录(默认 运营);相关前置数据就绪", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察拦截", "expected": "非 admin 角色访问统一 401/403,不泄露后台数据", "design": "优惠券/活动管理", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 101, "section": "本轮扩展权限流(派生自新增场景)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/product/list", "paths": [ "/api/product/list" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "doc-fuzzy", "route_evidence": "API_REFERENCE 章节「商品与订单」→ 源码 cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProductController.java:56(模块级关联,需人工复核)", "tag": "[TC-A-18-P][P1][鉴权]", "title": "[TC-A-18-P][P1][鉴权] 优惠券/活动管理 · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-19-P", "scene": "A-18", "module": "内容安全", "role": "运营", "priority": "P1", "type": "权限", "precondition": "已登录(默认 运营);相关前置数据就绪", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察拦截", "expected": "非 admin 角色访问统一 401/403,不泄露后台数据", "design": "内容安全", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 102, "section": "本轮扩展权限流(派生自新增场景)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/product/list", "paths": [ "/api/product/list" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "doc-fuzzy", "route_evidence": "API_REFERENCE 章节「商品与订单」→ 源码 cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProductController.java:56(模块级关联,需人工复核)", "tag": "[TC-A-19-P][P1][鉴权]", "title": "[TC-A-19-P][P1][鉴权] 内容安全 · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-20-P", "scene": "A-19", "module": "GDPR 工单", "role": "运营", "priority": "P1", "type": "权限", "precondition": "已登录(默认 运营);相关前置数据就绪", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察拦截", "expected": "非 admin 角色访问统一 401/403,不泄露后台数据", "design": "GDPR 工单", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 103, "section": "本轮扩展权限流(派生自新增场景)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/product/list", "paths": [ "/api/product/list" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "doc-fuzzy", "route_evidence": "API_REFERENCE 章节「商品与订单」→ 源码 cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProductController.java:56(模块级关联,需人工复核)", "tag": "[TC-A-20-P][P1][鉴权]", "title": "[TC-A-20-P][P1][鉴权] GDPR 工单 · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-21-P", "scene": "A-20", "module": "网关/限流", "role": "运营", "priority": "P1", "type": "权限", "precondition": "已登录(默认 运营);相关前置数据就绪", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察拦截", "expected": "非 admin 角色访问统一 401/403,不泄露后台数据", "design": "网关/限流", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 104, "section": "本轮扩展权限流(派生自新增场景)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/product/list", "paths": [ "/api/product/list" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "doc-fuzzy", "route_evidence": "API_REFERENCE 章节「商品与订单」→ 源码 cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProductController.java:56(模块级关联,需人工复核)", "tag": "[TC-A-21-P][P1][鉴权]", "title": "[TC-A-21-P][P1][鉴权] 网关/限流 · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-22-P", "scene": "A-21", "module": "模型管理", "role": "运营", "priority": "P1", "type": "权限", "precondition": "已登录(默认 运营);相关前置数据就绪", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察拦截", "expected": "非 admin 角色访问统一 401/403,不泄露后台数据", "design": "模型管理", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 105, "section": "本轮扩展权限流(派生自新增场景)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/product/list", "paths": [ "/api/product/list" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "doc-fuzzy", "route_evidence": "API_REFERENCE 章节「商品与订单」→ 源码 cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProductController.java:56(模块级关联,需人工复核)", "tag": "[TC-A-22-P][P1][鉴权]", "title": "[TC-A-22-P][P1][鉴权] 模型管理 · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-23-P", "scene": "A-22", "module": "知识库", "role": "运营", "priority": "P1", "type": "权限", "precondition": "已登录(默认 运营);相关前置数据就绪", "steps": "1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品/勋章/供应商/活动/知识库) 2. 观察拦截", "expected": "非 admin 角色访问统一 401/403,不泄露后台数据", "design": "知识库", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 106, "section": "本轮扩展权限流(派生自新增场景)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/product/list", "paths": [ "/api/product/list" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 401, 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "doc-fuzzy", "route_evidence": "API_REFERENCE 章节「商品与订单」→ 源码 cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProductController.java:56(模块级关联,需人工复核)", "tag": "[TC-A-23-P][P1][鉴权]", "title": "[TC-A-23-P][P1][鉴权] 知识库 · 1. 非 admin 角色访问管理端接口(统计/方案/报告解析/商品", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-25", "scene": "SC-A-25", "module": "维度/权重/上限配置", "role": "运营", "priority": "P1", "type": "功能", "precondition": "维度/权重/`DailyLimit` 配置管理接口可用", "steps": "1. 对维度/权重/每日上限做 CRUD 2. 查变更生效", "expected": "变更生效、后续能量按新配置;存量影响提示", "design": "`DimensionConfigController`/`DimensionWeightController`", "e2e": "`tests/e2e/energy-rules-config.spec.js`", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 115, "section": "正常流", "role_key": "admin", "tier": "design-fixture", "reason": "需业务夹具/种子数据或人工场景编排", "ui_mixed": false, "api": null, "expected_codes": [], "e2e_ref": "tests/e2e/energy-rules-config.spec.js", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-25][P1][设计态]", "title": "[TC-A-25][P1][设计态] 维度/权重/上限配置 · 1. 对维度/权重/每日上限做 CRUD 2. 查变更生效", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-26", "scene": "SC-A-26", "module": "能量/归因权重", "role": "运营", "priority": "P1", "type": "功能", "precondition": "`AttributionWeights`/`configureSourceRatios` 可用", "steps": "1. 调整来源比例/归因权重 2. 查审计与概览影响", "expected": "全局生效;变更写审计;概览/沙盘/天盘影响可观测", "design": "`EnergyController`/`AttributionWeights`", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 116, "section": "正常流", "role_key": "admin", "tier": "design-fixture", "reason": "需业务夹具/种子数据或人工场景编排", "ui_mixed": false, "api": null, "expected_codes": [], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-26][P1][设计态]", "title": "[TC-A-26][P1][设计态] 能量/归因权重 · 1. 调整来源比例/归因权重 2. 查审计与概览影响", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-25-E", "scene": "SC-A-25", "module": "维度/权重/上限配置", "role": "运营", "priority": "P2", "type": "异常", "precondition": "配置可用 + 造\"删除被引用维度\"\"权重非法\"\"上限非法\"", "steps": "1. 删除被引用维度 2. 权重/上限非法(负/超界/和≠100%)3. 并发改同配置", "expected": "1. 需确认/拒、不级联破坏存量 2. 400 拦截 3. 乐观锁/版本控制不互相覆盖", "design": "`DimensionConfigController`", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 121, "section": "异常流(-E,具体故障注入)", "role_key": "admin", "tier": "active-api", "reason": "空参数探针:body={} 触发参数校验,不等同完整故障注入", "ui_mixed": false, "api": { "path": "/api/admin/dimension-config/list", "paths": [ "/api/admin/dimension-config/list" ], "codes": [ 400 ], "body": {} }, "expected_codes": [ 400 ], "e2e_ref": "", "e2e_exists": false, "route_level": "controller", "route_evidence": "源码 cfc-backend/src/main/java/com/etotem/cfc/controller/admin/DimensionConfigController.java:26(DimensionConfigController)", "tag": "[TC-A-25-E][P2][API]", "title": "[TC-A-25-E][P2][API] 维度/权重/上限配置 · 1. 删除被引用维度 2. 权重/上限非法(负/超界/和≠100%)", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-26-E", "scene": "SC-A-26", "module": "能量/归因权重", "role": "运营", "priority": "P2", "type": "异常", "precondition": "配置可用 + 造\"比例非法\"\"未同步\"", "steps": "1. 比例非法(负/超 1/和≠1)2. 配置未同步计算节点", "expected": "1. 400 拦截 2. 展示兜底并提示、不静默错算", "design": "`EnergyController`/`AttributionWeights`", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 122, "section": "异常流(-E,具体故障注入)", "role_key": "admin", "tier": "active-api", "reason": "空参数探针:body={} 触发参数校验,不等同完整故障注入", "ui_mixed": false, "api": { "path": "/api/energy/overview", "paths": [ "/api/energy/overview" ], "codes": [ 400 ], "body": {} }, "expected_codes": [ 400 ], "e2e_ref": "", "e2e_exists": false, "route_level": "controller", "route_evidence": "源码 cfc-backend/src/main/java/com/etotem/cfc/controller/EnergyController.java:157(EnergyController)", "tag": "[TC-A-26-E][P2][API]", "title": "[TC-A-26-E][P2][API] 能量/归因权重 · 1. 比例非法(负/超 1/和≠1)2. 配置未同步计算节点", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-25-P", "scene": "SC-A-25", "module": "维度/权重/上限配置", "role": "运营", "priority": "P1", "type": "权限", "precondition": "运营 M + 家长 A", "steps": "1. 家长 A 调维度/权重/上限 CRUD", "expected": "非 admin 操作 403", "design": "`DimensionConfigController`", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 127, "section": "权限流(-P)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/admin/dimension-config/list", "paths": [ "/api/admin/dimension-config/list" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "controller", "route_evidence": "源码 cfc-backend/src/main/java/com/etotem/cfc/controller/admin/DimensionConfigController.java:26(DimensionConfigController)", "tag": "[TC-A-25-P][P1][鉴权]", "title": "[TC-A-25-P][P1][鉴权] 维度/权重/上限配置 · 1. 家长 A 调维度/权重/上限 CRUD", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-26-P", "scene": "SC-A-26", "module": "能量/归因权重", "role": "运营", "priority": "P1", "type": "权限", "precondition": "运营 M + 家长 A", "steps": "1. 家长 A 调全局归因权重/`configure`", "expected": "非 admin 改全局 403", "design": "`EnergyController`", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 128, "section": "权限流(-P)", "role_key": "admin", "tier": "auth-probe", "reason": "未授权探针:不带 token 访问受保护接口应 401/403;不覆盖「低权限 token 越权访问他人资源」场景", "ui_mixed": false, "api": { "path": "/api/energy/overview", "paths": [ "/api/energy/overview" ], "codes": [ 401, 403 ], "body": {} }, "expected_codes": [ 403 ], "e2e_ref": "", "e2e_exists": false, "route_level": "controller", "route_evidence": "源码 cfc-backend/src/main/java/com/etotem/cfc/controller/EnergyController.java:157(EnergyController)", "tag": "[TC-A-26-P][P1][鉴权]", "title": "[TC-A-26-P][P1][鉴权] 能量/归因权重 · 1. 家长 A 调全局归因权重/configure", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-N01", "scene": "SC-A-05", "module": "配置CRUD", "role": "运营", "priority": "P1", "type": "性能", "precondition": "配置项 ≥ 1000", "steps": "1. 打开配置列表 2. 翻页/筛选", "expected": "列表 ≤ 2s;CRUD 即时生效", "design": "配置管理", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 136, "section": "非功能测试用例(性能 / 兼容 / 安全)", "role_key": "admin", "tier": "design-env", "reason": "性能/兼容类:需压测授权或多端/前端环境(远程无 SPA)", "ui_mixed": true, "api": null, "expected_codes": [], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-N01][P1][设计态]", "title": "[TC-A-N01][P1][设计态] 配置CRUD · 1. 打开配置列表 2. 翻页/筛选", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-N02", "scene": "SC-A-02", "module": "报告解析中台", "role": "运营", "priority": "P0", "type": "性能", "precondition": "解析队列积压 ≥ 100", "steps": "1. 观察队列吞吐/监控", "expected": "单条 ≤ 30s;失败进未知聚类;监控可见积压", "design": "解析中台", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 137, "section": "非功能测试用例(性能 / 兼容 / 安全)", "role_key": "admin", "tier": "design-env", "reason": "性能/兼容类:需压测授权或多端/前端环境(远程无 SPA)", "ui_mixed": true, "api": null, "expected_codes": [], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-N02][P0][设计态]", "title": "[TC-A-N02][P0][设计态] 报告解析中台 · 1. 观察队列吞吐/监控", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-N03", "scene": "SC-A-01", "module": "登录统计", "role": "运营", "priority": "P1", "type": "性能", "precondition": "统计数据量大", "steps": "1. 打开统计面板 2. 选时间范围", "expected": "聚合 ≤ 3s;支持分页/缓存;大数据不超时", "design": "统计聚合", "e2e": "—", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 138, "section": "非功能测试用例(性能 / 兼容 / 安全)", "role_key": "admin", "tier": "design-env", "reason": "性能/兼容类:需压测授权或多端/前端环境(远程无 SPA)", "ui_mixed": false, "api": null, "expected_codes": [], "e2e_ref": "", "e2e_exists": false, "route_level": "", "route_evidence": "", "tag": "[TC-A-N03][P1][设计态]", "title": "[TC-A-N03][P1][设计态] 登录统计 · 1. 打开统计面板 2. 选时间范围", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-N04", "scene": "SC-A-20", "module": "限流熔断", "role": "运营", "priority": "P0", "type": "性能", "precondition": "压测解析/AI 接口", "steps": "1. 施压至阈值 2. 观察", "expected": "触发限流/熔断返回 429/友好降级;系统不雪崩;恢复后正常", "design": "限流熔断", "e2e": "e2e/api/nonfunc-perf-compat.spec.js", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 139, "section": "非功能测试用例(性能 / 兼容 / 安全)", "role_key": "admin", "tier": "design-env", "reason": "性能/兼容类:需压测授权或多端/前端环境(远程无 SPA)", "ui_mixed": false, "api": null, "expected_codes": [ 429 ], "e2e_ref": "e2e/api/nonfunc-perf-compat.spec.js", "e2e_exists": true, "route_level": "", "route_evidence": "", "tag": "[TC-A-N04][P0][设计态]", "title": "[TC-A-N04][P0][设计态] 限流熔断 · 1. 施压至阈值 2. 观察", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-N05", "scene": "SC-A-01", "module": "登录统计", "role": "运营", "priority": "P0", "type": "安全", "precondition": "非 admin 账号", "steps": "1. 用普通家长 token 访问 `/api/admin/*`", "expected": "返回 401/403;后台不可被非管理员进入", "design": "后台鉴权", "e2e": "e2e/api/nonfunc-security.spec.js", "occurrence": 1, "source_file": "tests/test-cases/admin.md", "source_line": 140, "section": "非功能测试用例(性能 / 兼容 / 安全)", "role_key": "admin", "tier": "linked-e2e", "reason": "文档已关联既有规格 e2e/api/nonfunc-security.spec.js;本条为文档锚点,执行请直接跑原 spec", "ui_mixed": false, "api": null, "expected_codes": [ 401, 403 ], "e2e_ref": "e2e/api/nonfunc-security.spec.js", "e2e_exists": true, "route_level": "", "route_evidence": "", "tag": "[TC-A-N05][P0][既有]", "title": "[TC-A-N05][P0][既有] 登录统计 · 1. 用普通家长 token 访问 /api/admin/*", "script": "tests/e2e/api/generated/tc-scripted.spec.js" }, { "id": "TC-A-N06", "scene": "SC-A-03", "module": "文章审核", "role": "运营", "priority": "P1", "type": "安全", "precondition": "提交含 `` 2. 提交并刷新", "expected": "输入后端 HTML 转义存储/渲染;无脚本执行", "design": "AIChatController", "e2e": "e2e/api/nonfunc-security.spec.js", "occurrence": 1, "source_file": "tests/test-cases/parent.md", "source_line": 360, "section": "非功能测试用例(性能 / 兼容 / 安全)", "role_key": "parent", "tier": "linked-e2e", "reason": "文档已关联既有规格 e2e/api/nonfunc-security.spec.js;本条为文档锚点,执行请直接跑原 spec", "ui_mixed": true, "api": null, "expected_codes": [], "e2e_ref": "e2e/api/nonfunc-security.spec.js", "e2e_exists": true, "route_level": "", "route_evidence": "", "tag": "[TC-P-N10][P1][既有]", "title": "[TC-P-N10][P1][既有] AI 对话 · 1. 在 AI 对话输入