Просмотр исходного кода

test(assets): 补全 user-scenarios 各角色叙事场景并对齐测试用例

- 叙事层补齐:guest 12 / parent 86 / child 22 / teacher 29 / admin 22 / vendor 11
- 五维专项 ED-1~17 保持独立于 07-five-dimension.md
- 用例编号规范化:TC-S-9→TC-S-09;admin 五维统一 SC-A-25/26
- 补写块关联用例按 SC 同号对齐(脚本修正 83 处)
Agnes Agent 1 неделя назад
Родитель
Сommit
2b3f290a55

+ 3 - 3
tests/test-cases/vendor.md

@@ -31,7 +31,7 @@
 ### 本轮扩展场景用例(新增 SC-S)
 | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
 |---|---|---|---|---|---|---|---|---|---|---|
-| TC-S-9 | S-9 | 服务商集成/解析中台 | 服务商 | P1 | 功能 | 已登录(默认 服务商);相关前置数据就绪 | 1. 按场景流程执行:接中台 → 自测 2. 观察结果 | 达成目标:提供解析能力;边界:跨商户隔离;鉴权 | 服务商集成/解析中台 | — |
+| TC-S-09 | S-9 | 服务商集成/解析中台 | 服务商 | P1 | 功能 | 已登录(默认 服务商);相关前置数据就绪 | 1. 按场景流程执行:接中台 → 自测 2. 观察结果 | 达成目标:提供解析能力;边界:跨商户隔离;鉴权 | 服务商集成/解析中台 | — |
 | TC-S-10 | S-10 | 食谱库 | 服务商 | P1 | 功能 | 已登录(默认 服务商);相关前置数据就绪 | 1. 按场景流程执行:上架食谱 → 同步 2. 观察结果 | 达成目标:供食谱数据;边界:数据合规;格式校验 | 食谱库 | — |
 | TC-S-11 | S-11 | 合规 | 服务商 | P1 | 功能 | 已登录(默认 服务商);相关前置数据就绪 | 1. 按场景流程执行:申请授权 → 取数 2. 观察结果 | 达成目标:授权内用数;边界:越授权拒;脱敏 | 合规 | — |
 
@@ -52,7 +52,7 @@
 ### 本轮扩展异常流(派生自新增场景)
 | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
 |---|---|---|---|---|---|---|---|---|---|---|
-| TC-S-9-E | S-9 | 服务商集成/解析中台 | 服务商 | P2 | 异常 | 已登录(默认 服务商);相关前置数据就绪 | 1. 跨商户访问他商解析结果 2. 上传损坏/超大解析文件 3. 鉴权失效 | 跨商户隔离 403;损坏/超大文件明确提示非500;鉴权失效 401 | 服务商集成/解析中台 | — |
+| TC-S-09-E | S-9 | 服务商集成/解析中台 | 服务商 | P2 | 异常 | 已登录(默认 服务商);相关前置数据就绪 | 1. 跨商户访问他商解析结果 2. 上传损坏/超大解析文件 3. 鉴权失效 | 跨商户隔离 403;损坏/超大文件明确提示非500;鉴权失效 401 | 服务商集成/解析中台 | — |
 | TC-S-10-E | S-10 | 食谱库 | 服务商 | P2 | 异常 | 已登录(默认 服务商);相关前置数据就绪 | 1. 上架格式非法食谱(JSON 残缺) 2. 含 XSS 描述 3. 非本商户食谱覆盖 | 格式校验 400;XSS 转义存储不执行;非本商户 403 | 食谱库 | — |
 | TC-S-11-E | S-11 | 合规 | 服务商 | P2 | 异常 | 已登录(默认 服务商);相关前置数据就绪 | 1. 越授权范围取数 2. 取数未脱敏敏感字段 3. 并发越权 | 越授权 403 拒;敏感字段强制脱敏;并发越权同样 403 | 合规 | — |
 
@@ -72,7 +72,7 @@
 ### 本轮扩展权限流(派生自新增场景)
 | TC 编号 | 所属场景 | 模块 | 角色 | 优先级 | 类型 | 前置条件 | 测试步骤 | 预期结果 | 关联需求/设计 | 对应 e2e |
 |---|---|---|---|---|---|---|---|---|---|---|
-| TC-S-9-P | S-9 | 服务商集成/解析中台 | 服务商 | P1 | 权限 | 已登录(默认 服务商);相关前置数据就绪 | 1. 访问非本商户资源(商品/订单/库存/结算) 2. 观察拦截 | 非本商户资源隔离,跨商户访问 403 | 服务商集成/解析中台 | — |
+| TC-S-09-P | S-9 | 服务商集成/解析中台 | 服务商 | P1 | 权限 | 已登录(默认 服务商);相关前置数据就绪 | 1. 访问非本商户资源(商品/订单/库存/结算) 2. 观察拦截 | 非本商户资源隔离,跨商户访问 403 | 服务商集成/解析中台 | — |
 | TC-S-10-P | S-10 | 食谱库 | 服务商 | P1 | 权限 | 已登录(默认 服务商);相关前置数据就绪 | 1. 访问非本商户资源(商品/订单/库存/结算) 2. 观察拦截 | 非本商户资源隔离,跨商户访问 403 | 食谱库 | — |
 | TC-S-11-P | S-11 | 合规 | 服务商 | P1 | 权限 | 已登录(默认 服务商);相关前置数据就绪 | 1. 访问非本商户资源(商品/订单/库存/结算) 2. 观察拦截 | 非本商户资源隔离,跨商户访问 403 | 合规 | — |
 

+ 110 - 1
tests/user-scenarios/01-guest.md

@@ -1,7 +1,7 @@
 # 用户使用场景 · 游客(Guest / 未登录)
 
 > 来源:`AGENTS.md`(统一认证、公开路径)、`API_REFERENCE.md`(`/api/auth/*`、`/api/articles/*` 部分公开、`/api/media/upload` 公开)、黑盒方案 T-01~T-05。
-> 关联用例:`test-cases/guest.md`(TC-G-01~TC-G-05)。
+> 关联用例:`test-cases/guest.md`(TC-G-01~TC-G-12)。
 
 ---
 
@@ -92,3 +92,112 @@
 - **异常/边界**:仅 8 个公开路径免鉴权;其余 `/api/**` 一律拦截;登录态过期后接口统一 401。
 - **关联需求/设计**:JWT 认证;`Authorization` Header;8 个公开路径白名单。
 - **关联用例**:TC-G-05
+
+---
+
+## 场景 G-6:越权接口拦截(未登录不可触达受保护资源)
+
+**用户故事**:作为未登录的访客,我想直接调用业务接口时被统一拦截,以便保护数据安全、不泄露内部错误细节。
+
+- **角色**:游客(无 token)
+- **前置条件**:已知任一受保护接口(如 `POST /api/family/list`、`POST /api/task/list`)。
+- **主流程**
+  1. 直接携带业务接口请求(无 `Authorization` Header)。
+  2. `JwtInterceptor` 校验 token → 返回 401/403。
+  3. 前端捕获后跳转登录页;登录成功后回跳原页。
+- **异常/边界**:仅 **8 个公开路径**(登录/注册/邀请/公开文章/公开商品/媒体上传等)免鉴权,其余 `/api/**` 一律拦截;缺 token / token 过期 / 非法 token 统一 401/403;错误信息不泄露内部堆栈或系统细节。
+- **关联需求/设计**:`JwtInterceptor`;`Authorization` Header;8 个公开路径白名单;统一 `Result<T>`(code/message/data)。
+- **关联用例**:TC-G-06
+
+---
+
+## 场景 G-7:微信测试模式跳过授权
+
+**用户故事**:作为联调期的测试人员,我想开启测试模式免真微信授权,以便快速验证登录流程而不依赖真实微信环境。
+
+- **角色**:游客(测试环境)
+- **前置条件**:后端 `wechat.test-mode: true`;小程序端对应配置开启。
+- **主流程**
+  1. 测试模式开 → 登录走模拟 openid / 模拟数据。
+  2. 免微信授权回调,直接返回测试 token + 用户信息。
+- **异常/边界**:测试模式仅测试环境生效;**生产环境强制真实微信授权**,禁止测试模式泄露到生产;测试模式登录的用户仅限测试库。
+- **关联需求/设计**:`AGENTS.md` 测试模式(`wechat.test-mode`);`AuthController`。
+- **关联用例**:TC-G-07
+
+---
+
+## 场景 G-8:环境自适应切换
+
+**用户故事**:作为开发者/发布者,我希望小程序自动按环境选择 API 地址,以便 develop/trial/release 三环境无缝切换。
+
+- **角色**:游客(启动时)
+- **前置条件**:`config.js` 内置三套环境 API 地址。
+- **主流程**
+  1. 启动时调用 `uni.getAccountInfoSync()` 判定当前环境(develop/trial/release)。
+  2. 按环境切换对应 API base URL。
+  3. 后续所有请求走对应环境地址。
+- **异常/边界**:环境识别失败(如 `getAccountInfoSync` 异常)回退默认(release)地址并告警;环境切换后缓存 token 按环境隔离。
+- **关联需求/设计**:`config.js` 环境自适应;`uni.getAccountInfoSync()`。
+- **关联用例**:TC-G-08
+
+---
+
+## 场景 G-9:退出登录
+
+**用户故事**:作为已登录用户,我想安全退出并清除本地登录态,以便换号登录或保护设备隐私。
+
+- **角色**:游客(已登录)
+- **前置条件**:当前有有效 token;处于个人中心。
+- **主流程**
+  1. 点击「退出登录」→ 调用退出接口(可选)→ 清除本地 token 与缓存。
+  2. 跳转登录页;再次进入需重新登录。
+- **异常/边界**:退出后本地缓存的敏感数据(用户信息/家庭成员/报告缓存)清除;退出后访问受保护接口被 401;退出失败(网络)时本地仍强制清除并提示。
+- **关联需求/设计**:`AuthController`;本地缓存管理。
+- **关联用例**:TC-G-09
+
+---
+
+## 场景 G-10:账号不存在引导注册
+
+**用户故事**:作为尚未注册的用户,我想在登录失败时被引导去注册,以便顺畅完成新用户建档。
+
+- **角色**:游客(微信授权成功但无账号)
+- **前置条件**:微信授权通过,但后端无对应 `User`。
+- **主流程**
+  1. 登录接口返回「未注册/账号不存在」提示。
+  2. 页面引导进入注册流程(填写必要信息 / 直接建档)。
+  3. 注册成功后进入默认家长首页。
+- **异常/边界**:已注册账号不重复建档(openid 已存在则直接登录不新建);注册信息校验失败给出明确提示。
+- **关联需求/设计**:`AuthController`;`User` + `family_members` 建档逻辑。
+- **关联用例**:TC-G-10
+
+---
+
+## 场景 G-11:隐私政策 / 用户协议查看
+
+**用户故事**:作为首次使用用户,我想查看隐私政策与用户协议并确认同意,以便合规进入核心流程。
+
+- **角色**:游客(首次进入)
+- **前置条件**:进入注册/登录页或首次打开核心功能。
+- **主流程**
+  1. 点击「隐私政策 / 用户协议」→ 查看全文。
+  2. 阅读后点「同意」→ 记录同意时间戳 → 允许进入核心流程。
+  3. 「不同意 / 返回」→ 停留在引导页,不进入核心流程。
+- **异常/边界**:未同意不可进入注册/核心流程;同意记录需留痕(版本 + 时间);协议版本更新后需重新同意。
+- **关联需求/设计**:协议页 / `AgreementController`;合规告知。
+- **关联用例**:TC-G-11
+
+---
+
+## 场景 G-12:非微信环境 H5 兜底
+
+**用户故事**:作为通过非微信浏览器(如手机 Safari/Chrome)打开小程序链接的用户,我想获得明确引导,以便知道如何在微信内使用。
+
+- **角色**:游客(非微信浏览器)
+- **前置条件**:通过链接/二维码打开小程序落地页。
+- **主流程**
+  1. H5 打开 → 环境探测判定非微信。
+  2. 展示「请在微信内打开」引导页或降级静态内容页。
+- **异常/边界**:环境探测失败给出明确引导(不白屏);降级页可正常浏览公开内容;不引导下载/安装(避免诱导)。
+- **关联需求/设计**:`config.js` 环境探测;H5 兜底页。
+- **关联用例**:TC-G-12

+ 965 - 1
tests/user-scenarios/02-parent.md

@@ -1,7 +1,7 @@
 # 用户使用场景 · 家长(Parent)
 
 > 来源:`AGENTS.md`(双角色、五维能量、测评订单、家庭邀请二维码、成员关系编辑、健康报告主链路、饮食推荐、LangGraph AI)、`API_REFERENCE.md`、`cfc-frontend/pages/*`、黑盒方案 P-01~P-18。
-> 关联用例:`test-cases/parent.md`(TC-P-01~TC-P-18 及跨角色 E2E)。
+> 关联用例:`test-cases/parent.md`(TC-P-01~TC-P-93 及跨角色 E2E)。
 
 ---
 
@@ -199,3 +199,967 @@
 - **异常/边界**:积分与流水总额一致;删除/回退操作有对应负流水。
 - **关联需求/设计**:`PointsController`、`GrowthController` `/api/growth`。
 - **关联用例**:TC-P-17
+
+---
+
+## 场景 P-13:心愿创建-审批-兑换闭环(SC-P-13)
+
+**用户故事**:作为家长,我想审批孩子心愿并扣积分兑换,以便激励正向行为。
+
+- **角色**:家长
+- **前置条件**:孩子已提交心愿(含目标积分)。
+- **主流程**:①查看待审心愿 → 通过(扣孩子积分)→ 心愿兑换成功;②驳回 → 心愿失效。
+- **异常/边界**:孩子积分不足拦截;重复审批幂等;已兑换不可驳回。
+- **关联需求/设计**:`WishController` / `RewardController`。
+- **关联用例**:TC-P-13
+
+---
+
+## 场景 P-14:心愿驳回/失效处理(SC-P-14)
+
+**用户故事**:作为家长,我想驳回异常心愿并让其失效,以便收口。
+
+- **角色**:家长
+- **前置条件**:有心愿待审。
+- **主流程**:驳回 → 心愿失效 → 孩子可重新提。
+- **异常/边界**:已兑换不可驳回;驳回需填原因。
+- **关联需求/设计**:`WishController`。
+- **关联用例**:TC-P-14
+
+---
+
+## 场景 P-15:积分明细查看(SC-P-15)
+
+**用户故事**:作为家长,我想核对孩子积分来源,以便了解激励效果。
+
+- **角色**:家长
+- **前置条件**:有积分流水。
+- **主流程**:个人中心 → 积分明细(来源/变更/余额)→ 分页/时间筛选。
+- **异常/边界**:分页正确;时间筛选边界正确。
+- **关联需求/设计**:`PointsController`。
+- **关联用例**:TC-P-15
+
+---
+
+## 场景 P-16:积分流水对账(SC-P-16)
+
+**用户故事**:作为家长,我想确保积分账目一致,以便发现问题。
+
+- **角色**:家长
+- **前置条件**:有积分流水。
+- **主流程**:比对积分总额与流水合计 → 不一致报警。
+- **异常/边界**:删除/回退有对应负流水;不一致明确提示。
+- **关联需求/设计**:`PointsController`。
+- **关联用例**:TC-P-16
+
+---
+
+## 场景 P-17:查看五维能量/健康指数(SC-P-17)
+
+**用户故事**:作为家长,我想看孩子五维能量与健康指数,以便掌握健康结构。
+
+- **角色**:家长
+- **前置条件**:孩子有能量数据。
+- **主流程**:进入身/心/智/行/富 → 展示分配(总和=100%)→ 能量流水。
+- **异常/边界**:比例配置错误≠100% 报警;无数据空态不 500。
+- **关联需求/设计**:`EnergyController`。
+- **关联用例**:TC-P-17
+
+---
+
+## 场景 P-18:能量流水查看(SC-P-18)
+
+**用户故事**:作为家长,我想追溯孩子能量来源,以便了解增长。
+
+- **角色**:家长
+- **前置条件**:有能量流水。
+- **主流程**:能量明细(任务/打卡/测评)→ 时间格式统一。
+- **异常/边界**:时间格式统一;分页。
+- **关联需求/设计**:`EnergyController`。
+- **关联用例**:TC-P-18
+
+---
+
+## 场景 P-19:能量维度配置查看(SC-P-19)
+
+**用户故事**:作为家长,我想理解五维口径,以便正确解读。
+
+- **角色**:家长
+- **前置条件**:配置已同步。
+- **主流程**:查看身/心/智/行/富定义与权重。
+- **异常/边界**:配置未同步时展示兜底。
+- **关联需求/设计**:维度配置(Web 管理端)。
+- **关联用例**:TC-P-19
+
+---
+
+## 场景 P-20:健康报告 PDF 上传解析(SC-P-20)
+
+**用户故事**:作为家长,我想上传孩子菌群报告并自动解析,以便入库刷新健康数据。
+
+- **角色**:家长
+- **前置条件**:持有报告 PDF。
+- **主流程**:选 PDF 上传 → 识别 `gut_flora` → 三阶段(上传/预览/确认)→ 入库刷新七维。
+- **异常/边界**:非募极生物报告提示;解析失败进未知聚类;上传超时重试。
+- **关联需求/设计**:健康报告解析中台 / `POST /api/media/upload`。
+- **关联用例**:TC-P-20
+
+---
+
+## 场景 P-21:报告类型识别(SC-P-21)
+
+**用户故事**:作为家长,我想确认报告自动判别类型,以便正确归档。
+
+- **角色**:家长
+- **前置条件**:已上传报告。
+- **主流程**:解析 → 匹配已注册类型。
+- **异常/边界**:未知类型进未知聚类待运营自学习。
+- **关联需求/设计**:`/api/admin/report-parser/types`。
+- **关联用例**:TC-P-21
+
+---
+
+## 场景 P-22:报告解析预览(SC-P-22)
+
+**用户故事**:作为家长,我想入库前核对解析结果,以便确认无误。
+
+- **角色**:家长
+- **前置条件**:已解析待预览。
+- **主流程**:看菌群健康分/平衡/多样性/菌种明细/疾病风险预览。
+- **异常/边界**:预览数据异常提示不入库。
+- **关联需求/设计**:解析中台。
+- **关联用例**:TC-P-22
+
+---
+
+## 场景 P-23:报告确认入库(SC-P-23)
+
+**用户故事**:作为家长,我想确认报告入库生效,以便刷新健康评分。
+
+- **角色**:家长
+- **前置条件**:预览无误。
+- **主流程**:确认 → 报告进档案 → 七维刷新。
+- **异常/边界**:确认前可取消不入库;重复确认幂等。
+- **关联需求/设计**:解析中台。
+- **关联用例**:TC-P-23
+
+---
+
+## 场景 P-24:多报告管理/对比(SC-P-24)
+
+**用户故事**:作为家长,我想管理历史报告并对比,以便看变化。
+
+- **角色**:家长
+- **前置条件**:有多份报告。
+- **主流程**:报告列表 → 查看/删除/对比。
+- **异常/边界**:删除有关联方案时提示;类型一致才可比。
+- **关联需求/设计**:报告管理。
+- **关联用例**:TC-P-24
+
+---
+
+## 场景 P-25:报告趋势查看(SC-P-25)
+
+**用户故事**:作为家长,我想看孩子健康趋势,以便评估干预。
+
+- **角色**:家长
+- **前置条件**:同类型报告≥2。
+- **主流程**:同类型报告时间序列 → 趋势图。
+- **异常/边界**:单报告无趋势;时间轴正确。
+- **关联需求/设计**:报告/成长。
+- **关联用例**:TC-P-25
+
+---
+
+## 场景 P-26:基于报告饮食推荐(SC-P-26)
+
+**用户故事**:作为家长,我想按菌群报告安排饮食,以便精准调理。
+
+- **角色**:家长
+- **前置条件**:已有报告。
+- **主流程**:身→饮食推荐 → 按菌群生成可吃/慎吃清单。
+- **异常/边界**:无报告无推荐;随报告刷新。
+- **关联需求/设计**:饮食推荐系统。
+- **关联用例**:TC-P-26
+
+---
+
+## 场景 P-27:家庭食谱生成(SC-P-27)
+
+**用户故事**:作为家长,我想生成一日三餐家庭食谱,以便可执行。
+
+- **角色**:家长
+- **前置条件**:有菌群报告+营养目标。
+- **主流程**:基于菌群+目标 → 生成早/午/晚食谱(食材/用量/禁忌标注)。
+- **异常/边界**:无报告降级通用食谱;忌口/过敏自动排除。
+- **关联需求/设计**:饮食推荐系统 / 家庭食谱。
+- **关联用例**:TC-P-27
+
+---
+
+## 场景 P-28:食谱按食材筛选/忌口(SC-P-28)
+
+**用户故事**:作为家长,我想设忌口/过敏并重算食谱,以便个性化。
+
+- **角色**:家长
+- **前置条件**:已有食谱。
+- **主流程**:设忌口/过敏 → 食谱重算排除项。
+- **异常/边界**:忌口冲突时提示。
+- **关联需求/设计**:饮食推荐。
+- **关联用例**:TC-P-28
+
+---
+
+## 场景 P-29:食谱收藏/调整(SC-P-29)
+
+**用户故事**:作为家长,我想收藏并微调食谱,以便沉淀常用。
+
+- **角色**:家长
+- **前置条件**:已有食谱。
+- **主流程**:收藏食谱 → 手动微调(替换食材)。
+- **异常/边界**:调整不破坏营养目标。
+- **关联需求/设计**:饮食推荐。
+- **关联用例**:TC-P-29
+
+---
+
+## 场景 P-30:食谱与营养目标对齐(SC-P-30)
+
+**用户故事**:作为家长,我想核对食谱营养 vs 目标,以便达标。
+
+- **角色**:家长
+- **前置条件**:已有食谱+目标。
+- **主流程**:看食谱营养合计 vs 目标。
+- **异常/边界**:超标/不足提示。
+- **关联需求/设计**:饮食推荐。
+- **关联用例**:TC-P-30
+
+---
+
+## 场景 P-31:浏览测评类型(DAN 8 类)(SC-P-31)
+
+**用户故事**:作为家长,我想了解可选测评类型,以便选择。
+
+- **角色**:家长
+- **前置条件**:测评页可用。
+- **主流程**:测评页 → 列 DAN 8 类(mind/wisdom/cognition/learning/behavior/career/campus/adolescent)。
+- **异常/边界**:类目数据来自后端字典;字典缺失降级。
+- **关联需求/设计**:`DanAssessmentController`。
+- **关联用例**:TC-P-31
+
+---
+
+## 场景 P-32:选择规划师(SC-P-32)
+
+**用户故事**:作为家长,我想指定服务规划师,以便孩子获得专业支持。
+
+- **角色**:家长
+- **前置条件**:有可绑定规划师。
+- **主流程**:测评选规划师 → 绑定的 T 列表。
+- **异常/边界**:未绑定规划师提示先绑定;非本家庭规划师拒。
+- **关联需求/设计**:测评订单。
+- **关联用例**:TC-P-32
+
+---
+
+## 场景 P-33:购买测评套餐/下单(SC-P-33)
+
+**用户故事**:作为家长,我想下单测评套餐,以便获得测评服务。
+
+- **角色**:家长
+- **前置条件**:套餐上架。
+- **主流程**:选套餐 → 生成 `AssessmentOrder`(pending)。
+- **异常/边界**:套餐下架不可下单;重复下单幂等。
+- **关联需求/设计**:`AssessmentOrder`。
+- **关联用例**:TC-P-33
+
+---
+
+## 场景 P-34:测评订单支付(SC-P-34)
+
+**用户故事**:作为家长,我想完成支付,以便获得测评额度。
+
+- **角色**:家长
+- **前置条件**:有 pending 订单。
+- **主流程**:支付 → 订单 pending→paid → 生成 `AssessmentQuota`。
+- **异常/边界**:支付失败回滚不生成额度;重复支付幂等。
+- **关联需求/设计**:支付 / `AssessmentOrder`。
+- **关联用例**:TC-P-34
+
+---
+
+## 场景 P-35:获得测评额度(SC-P-35)
+
+**用户故事**:作为家长,我想拿到可消耗额度,以便预约测评。
+
+- **角色**:家长
+- **前置条件**:订单已支付。
+- **主流程**:支付成功 → 额度到账(含有效期)。
+- **异常/边界**:额度过期不可用于预约;额度不可转赠。
+- **关联需求/设计**:`AssessmentQuota`。
+- **关联用例**:TC-P-35
+
+---
+
+## 场景 P-36:创建预约(消耗额度)(SC-P-36)
+
+**用户故事**:作为家长,我想约规划师时间,以便安排测评。
+
+- **角色**:家长
+- **前置条件**:有可用额度。
+- **主流程**:`POST /api/assessment/appointment/create` → 先消耗一条额度 → 落预约。
+- **异常/边界**:额度不足/过期直接报错不落预约;预约时间冲突校验。
+- **关联需求/设计**:`AssessmentAppointmentController`。
+- **关联用例**:TC-P-36
+
+---
+
+## 场景 P-37:查看预约状态(SC-P-37)
+
+**用户故事**:作为家长,我想掌握预约进度,以便安排。
+
+- **角色**:家长
+- **前置条件**:已创建预约。
+- **主流程**:预约列表 → 状态(待确认/已确认/已完成/已取消/未到)。
+- **异常/边界**:状态机守卫;越权查看拒。
+- **关联需求/设计**:`AssessmentAppointmentController`。
+- **关联用例**:TC-P-37
+
+---
+
+## 场景 P-38:取消预约(越权校验)(SC-P-38)
+
+**用户故事**:作为家长,我想取消不再需要的预约,以便释放额度。
+
+- **角色**:家长
+- **前置条件**:预约待确认/已确认。
+- **主流程**:取消 → 状态变更 → 额度按规则返还。
+- **异常/边界**:非本人/非绑定规划师取消被拒;取消不退款逻辑按业务。
+- **关联需求/设计**:`AssessmentAppointmentController`。
+- **关联用例**:TC-P-38
+
+---
+
+## 场景 P-39:查看测评结果(DAN 报告)(SC-P-39)
+
+**用户故事**:作为家长,我想看孩子测评分,以便了解能力结构。
+
+- **角色**:家长
+- **前置条件**:结果已录入。
+- **主流程**:结果页 → 八类报告展示。
+- **异常/边界**:结果未录入不展示;量纲标注。
+- **关联需求/设计**:`DanAssessmentResultDTO`。
+- **关联用例**:TC-P-39
+
+---
+
+## 场景 P-40:生成 AI 方案(SC-P-40)
+
+**用户故事**:作为家长,我想一键生成个性化方案,以便得到行动指导。
+
+- **角色**:家长
+- **前置条件**:有报告/测评分。
+- **主流程**:选孩子+目标 → LangGraph(`AiGateway` 转发) → 生成 overview+三板块。
+- **异常/边界**:未购会员提示购买;AI 超时 `AiGateway` Fallback 不 500。
+- **关联需求/设计**:`AIChatController` / `AiGateway`。
+- **关联用例**:TC-P-40
+
+---
+
+## 场景 P-41:方案分板块重生成(SC-P-41)
+
+**用户故事**:作为家长,我想迭代优化方案板块,以便精准。
+
+- **角色**:家长
+- **前置条件**:已有方案。
+- **主流程**:逐板块重新生成/确认。
+- **异常/边界**:重生成不丢其他板块。
+- **关联需求/设计**:`AIChatController`。
+- **关联用例**:TC-P-41
+
+---
+
+## 场景 P-42:方案编辑/调整(SC-P-42)
+
+**用户故事**:作为家长,我想人工微调方案,以便贴合实际。
+
+- **角色**:家长
+- **前置条件**:已有方案。
+- **主流程**:编辑方案文本/任务项。
+- **异常/边界**:编辑后状态标记已改。
+- **关联需求/设计**:方案管理。
+- **关联用例**:TC-P-42
+
+---
+
+## 场景 P-43:查看生成的方案(SC-P-43)
+
+**用户故事**:作为家长,我想审阅方案内容,以便确认。
+
+- **角色**:家长
+- **前置条件**:方案已生成。
+- **主流程**:方案详情 → 看板块/任务。
+- **异常/边界**:空方案不白屏。
+- **关联需求/设计**:方案管理。
+- **关联用例**:TC-P-43
+
+---
+
+## 场景 P-44:确认方案(送审/家长确认)(SC-P-44)
+
+**用户故事**:作为家长,我想确认方案并送审,以便进入下一步。
+
+- **角色**:家长
+- **前置条件**:方案 generated。
+- **主流程**:家长确认/提交规划师审核 → 状态 generated→reviewed。
+- **异常/边界**:未确认不可激活;确认幂等。
+- **关联需求/设计**:方案管理状态机。
+- **关联用例**:TC-P-44
+
+---
+
+## 场景 P-45:方案直接发布(SC-P-45)
+
+**用户故事**:作为家长,我想按配置直接发布方案,以便快速生效。
+
+- **角色**:家长
+- **前置条件**:配置允许直发。
+- **主流程**:确认即发布 active。
+- **异常/边界**:需审核配置时走审核流。
+- **关联需求/设计**:方案管理。
+- **关联用例**:TC-P-45
+
+---
+
+## 场景 P-46:激活方案生成任务(SC-P-46)
+
+**用户故事**:作为家长,我想激活方案并生成可执行任务,以便孩子开始执行。
+
+- **角色**:家长
+- **前置条件**:方案已审核(reviewed)。
+- **主流程**:激活 reviewed→active → 生成引导+模板任务 → 孩子端出现启动任务。
+- **异常/边界**:已激活再激活不重复生成(幂等靠状态机);失败回滚不残半任务。
+- **关联需求/设计**:方案激活任务分解。
+- **关联用例**:TC-P-46
+
+---
+
+## 场景 P-47:查看方案下任务列表(SC-P-47)
+
+**用户故事**:作为家长,我想跟踪方案关联任务,以便了解执行进度。
+
+- **角色**:家长
+- **前置条件**:方案已激活。
+- **主流程**:方案 → 关联任务列表(状态/进度)。
+- **异常/边界**:任务增删与方案同步;无任务空态。
+- **关联需求/设计**:`GrowthPlanController`。
+- **关联用例**:TC-P-47
+
+---
+
+## 场景 P-48:方案版本/历史(SC-P-48)
+
+**用户故事**:作为家长,我想回溯方案变更,以便审计。
+
+- **角色**:家长
+- **前置条件**:方案有多版本。
+- **主流程**:方案版本列表 → 对比。
+- **异常/边界**:版本不可篡改;对比差异标注。
+- **关联需求/设计**:方案管理。
+- **关联用例**:TC-P-48
+
+---
+
+## 场景 P-49:AI 健康管家对话(SC-P-49)
+
+**用户故事**:作为家长,我想随时问健康管家,以便获得即时指导。
+
+- **角色**:家长
+- **前置条件**:AI 服务可用。
+- **主流程**:进对话 → `POST /api/ai/health-coach/send` → 多轮上下文。
+- **异常/边界**:LangGraph 不可用 Fallback;敏感问题不泄露隐私。
+- **关联需求/设计**:`AIChatController`。
+- **关联用例**:TC-P-49
+
+---
+
+## 场景 P-50:成长记录查看(SC-P-50)
+
+**用户故事**:作为家长,我想看孩子成长轨迹,以便回顾进步。
+
+- **角色**:家长
+- **前置条件**:有成长记录。
+- **主流程**:成长记录页 → 时间线(任务/测评/报告/打卡)。
+- **异常/边界**:数据缺失项跳过不报错。
+- **关联需求/设计**:`GrowthController`。
+- **关联用例**:TC-P-50
+
+---
+
+## 场景 P-51:成长里程碑(SC-P-51)
+
+**用户故事**:作为家长,我想标记孩子关键节点,以便时间线高亮。
+
+- **角色**:家长
+- **前置条件**:已有成长记录。
+- **主流程**:系统/手动标里程碑 → 时间线高亮。
+- **异常/边界**:重复标幂等。
+- **关联需求/设计**:`GrowthController`。
+- **关联用例**:TC-P-51
+
+---
+
+## 场景 P-52:商品浏览/搜索(SC-P-52)
+
+**用户故事**:作为家长,我想发现商品,以便选购。
+
+- **角色**:家长
+- **前置条件**:商城可用。
+- **主流程**:商城列表/搜索/分类。
+- **异常/边界**:下架商品不展示;空结果不报错。
+- **关联需求/设计**:`MallController` / `danshop`。
+- **关联用例**:TC-P-52
+
+---
+
+## 场景 P-53:商品详情(SC-P-53)
+
+**用户故事**:作为家长,我想看商品详情,以便决策。
+
+- **角色**:家长
+- **前置条件**:商品上架。
+- **主流程**:详情页(描述/价格/库存)。
+- **异常/边界**:库存为 0 提示。
+- **关联需求/设计**:`MallController`。
+- **关联用例**:TC-P-53
+
+---
+
+## 场景 P-54:加购/下单(SC-P-54)
+
+**用户故事**:作为家长,我想提交订单,以便购买。
+
+- **角色**:家长
+- **前置条件**:已登录;商品有货。
+- **主流程**:加购 → 结算 → 生成订单。
+- **异常/边界**:库存不足拦截;重复下单幂等。
+- **关联需求/设计**:`MallController`。
+- **关联用例**:TC-P-54
+
+---
+
+## 场景 P-55:订单支付(SC-P-55)
+
+**用户故事**:作为家长,我想完成支付,以便收货。
+
+- **角色**:家长
+- **前置条件**:有 pending 订单。
+- **主流程**:支付 → 订单 paid。
+- **异常/边界**:支付失败回滚;重复支付幂等。
+- **关联需求/设计**:支付。
+- **关联用例**:TC-P-55
+
+---
+
+## 场景 P-56:订单查询/退款(SC-P-56)
+
+**用户故事**:作为家长,我想管理订单并申请退款,以便售后。
+
+- **角色**:家长
+- **前置条件**:有订单。
+- **主流程**:订单列表 → 详情/申请退款。
+- **异常/边界**:已发货退款规则;重复退款拦截。
+- **关联需求/设计**:订单服务。
+- **关联用例**:TC-P-56
+
+---
+
+## 场景 P-57:优惠券使用(SC-P-57)
+
+**用户故事**:作为家长,我想用券抵扣,以便省钱。
+
+- **角色**:家长
+- **前置条件**:持有效券。
+- **主流程**:选券 → 结算抵扣。
+- **异常/边界**:券过期/不满足门槛不可用。
+- **关联需求/设计**:优惠券。
+- **关联用例**:TC-P-57
+
+---
+
+## 场景 P-58:购买会员/套餐(SC-P-58)
+
+**用户故事**:作为家长,我想购买会员,以便解锁高级能力。
+
+- **角色**:家长
+- **前置条件**:套餐上架。
+- **主流程**:选档位 → 支付 → 权益生效。
+- **异常/边界**:支付失败回滚;重复购买幂等。
+- **关联需求/设计**:`MemberController`。
+- **关联用例**:TC-P-58
+
+---
+
+## 场景 P-59:会员权益查看(SC-P-59)
+
+**用户故事**:作为家长,我想明确会员权益,以便了解价值。
+
+- **角色**:家长
+- **前置条件**:已购会员。
+- **主流程**:会员页 → 权益列表/有效期。
+- **异常/边界**:权益随档位变化。
+- **关联需求/设计**:`MemberController`。
+- **关联用例**:TC-P-59
+
+---
+
+## 场景 P-60:会员续费(SC-P-60)
+
+**用户故事**:作为家长,我想续费延长权益,以便持续使用。
+
+- **角色**:家长
+- **前置条件**:会员将到期。
+- **主流程**:到期前续费 → 延期。
+- **异常/边界**:续费叠加计算正确;重复续费幂等。
+- **关联需求/设计**:`MemberController`。
+- **关联用例**:TC-P-60
+
+---
+
+## 场景 P-61:联系人添加(SC-P-61)
+
+**用户故事**:作为家长,我想管理外部联系人,以便联系。
+
+- **角色**:家长
+- **前置条件**:已登录。
+- **主流程**:添加联系人(姓名/电话/关系)。
+- **异常/边界**:重复号码去重。
+- **关联需求/设计**:`ContactCard` / `contact-detail`。
+- **关联用例**:TC-P-61
+
+---
+
+## 场景 P-62:联系人分组/导入(SC-P-62)
+
+**用户故事**:作为家长,我想批量管理联系人,以便高效维护。
+
+- **角色**:家长
+- **前置条件**:已登录。
+- **主流程**:建分组 → 导入(`ContactImport`)。
+- **异常/边界**:导入格式错误行跳过并报告。
+- **关联需求/设计**:`ContactImport`。
+- **关联用例**:TC-P-62
+
+---
+
+## 场景 P-63:联系人详情/权限(SC-P-63)
+
+**用户故事**:作为家长,我想查看并授权联系人,以便控制可见范围。
+
+- **角色**:家长
+- **前置条件**:已有联系人。
+- **主流程**:联系人详情 → 设可见权限。
+- **异常/边界**:越权查看被拒。
+- **关联需求/设计**:`ContactCard`。
+- **关联用例**:TC-P-63
+
+---
+
+## 场景 P-64:个人资料编辑(SC-P-64)
+
+**用户故事**:作为家长,我想维护自身信息,以便账号准确。
+
+- **角色**:家长
+- **前置条件**:已登录。
+- **主流程**:编辑昵称/头像/绑定手机。
+- **异常/边界**:手机格式校验;敏感字段二次确认。
+- **关联需求/设计**:`AuthController`。
+- **关联用例**:TC-P-64
+
+---
+
+## 场景 P-65:消息通知/提醒设置(SC-P-65)
+
+**用户故事**:作为家长,我想控制推送提醒,以便按需接收。
+
+- **角色**:家长
+- **前置条件**:已登录。
+- **主流程**:设通知开关/提醒时间。
+- **异常/边界**:关闭后仍保关键安全通知。
+- **关联需求/设计**:消息服务。
+- **关联用例**:TC-P-65
+
+---
+
+## 场景 P-66:隐私设置(SC-P-66)
+
+**用户故事**:作为家长,我想设置数据共享范围,以便保护隐私。
+
+- **角色**:家长
+- **前置条件**:已登录。
+- **主流程**:设数据共享范围。
+- **异常/边界**:最小权限保底。
+- **关联需求/设计**:隐私设置。
+- **关联用例**:TC-P-66
+
+---
+
+## 场景 P-67:报告代传(家长替孩子/他人代传)(SC-P-67)
+
+**用户故事**:作为家长,我想让孩子报告由他人代传,以便无原件也能解析。
+
+- **角色**:家长(发起方)
+- **前置条件**:持有报告或他人可上传。
+- **主流程**:发起代传邀请 → 对方上传 PDF → 关联孩子档案解析入库。
+- **异常/边界**:代传需授权令牌;越权代传他人孩子被拒;归属校验。
+- **关联需求/设计**:报告代传/`report-proxy`。
+- **关联用例**:TC-P-67
+
+---
+
+## 场景 P-68:家庭天盘查看(SC-P-68)
+
+**用户故事**:作为家长,我想一眼看全家健康,以便统筹。
+
+- **角色**:家长
+- **前置条件**:家庭有成员数据。
+- **主流程**:打开家庭天盘 → 聚合展示成员能量/报告/方案。
+- **异常/边界**:数据缺失降级展示;仅本家庭成员可见。
+- **关联需求/设计**:家庭天盘。
+- **关联用例**:TC-P-68
+
+---
+
+## 场景 P-69:精准营养目标设定(SC-P-69)
+
+**用户故事**:作为家长,我想设定营养/热量目标,以便指导饮食。
+
+- **角色**:家长
+- **前置条件**:已登录。
+- **主流程**:设目标(热量/宏量营养素)→ 保存 → 影响食谱推荐。
+- **异常/边界**:目标非法(负/超上限)拦截。
+- **关联需求/设计**:精准营养。
+- **关联用例**:TC-P-69
+
+---
+
+## 场景 P-70:舌诊/情绪照片采集(SC-P-70)
+
+**用户故事**:作为家长,我想上传舌苔照辅助评估,以便了解健康。
+
+- **角色**:家长
+- **前置条件**:拍照权限已授权。
+- **主流程**:拍照/上传 → 识别情绪标签 → 关联测评。
+- **异常/边界**:非照片/模糊拒绝;隐私标注不外露。
+- **关联需求/设计**:舌诊情绪识别。
+- **关联用例**:TC-P-70
+
+---
+
+## 场景 P-71:账号注销(家长注销自身)(SC-P-71)
+
+**用户故事**:作为家长,我想注销账号,以便合规退出。
+
+- **角色**:家长
+- **前置条件**:已登录。
+- **主流程**:申请 → 身份验证 → 冷静期 → 数据归档/删除。
+- **异常/边界**:有进行中订单/未结清拦截;注销后不可登录。
+- **关联需求/设计**:`AuthController`。
+- **关联用例**:TC-P-71
+
+---
+
+## 场景 P-72:个人/家庭数据导出(GDPR)(SC-P-72)
+
+**用户故事**:作为家长,我想下载本人数据,以便数据主权。
+
+- **角色**:家长
+- **前置条件**:已登录。
+- **主流程**:申请导出 → 生成加密包 → 下载。
+- **异常/边界**:敏感字段脱敏;频次限制;越权导出被拒。
+- **关联需求/设计**:数据导出(GDPR)。
+- **关联用例**:TC-P-72
+
+---
+
+## 场景 P-73:多孩子切换孩子上下文(SC-P-73)
+
+**用户故事**:作为家长,我想在多孩子间切换,以便分别管理。
+
+- **角色**:家长
+- **前置条件**:家庭有多孩子。
+- **主流程**:选孩子 → 任务/报告/方案上下文切换。
+- **异常/边界**:仅本家庭孩子可选;当前孩子态隔离。
+- **关联需求/设计**:家庭/成员。
+- **关联用例**:TC-P-73
+
+---
+
+## 场景 P-74:解绑/重新分配规划师(SC-P-74)
+
+**用户故事**:作为家长,我想更换服务规划师,以便获取更匹配支持。
+
+- **角色**:家长
+- **前置条件**:已绑定规划师。
+- **主流程**:解绑 → 重选 → 绑定。
+- **异常/边界**:解绑前处理在途方案/预约;非本家庭规划师拒。
+- **关联需求/设计**:规划师绑定。
+- **关联用例**:TC-P-74
+
+---
+
+## 场景 P-75:优惠券领取(活动/分享)(SC-P-75)
+
+**用户故事**:作为家长,我想领券入卡包,以便消费抵扣。
+
+- **角色**:家长
+- **前置条件**:活动在发券期。
+- **主流程**:领券 → 入卡包。
+- **异常/边界**:库存为0/已领拦截;重复领幂等。
+- **关联需求/设计**:优惠券。
+- **关联用例**:TC-P-75
+
+---
+
+## 场景 P-76:活动报名(名额/并发)(SC-P-76)
+
+**用户故事**:作为家长,我想报名活动,以便参与。
+
+- **角色**:家长
+- **前置条件**:活动在报名期。
+- **主流程**:报名 → 占名额 → 确认。
+- **异常/边界**:并发超卖拦截;名额满拒;重复报名幂等。
+- **关联需求/设计**:活动管理。
+- **关联用例**:TC-P-76
+
+---
+
+## 场景 P-77:活动打卡/助力(营销)(SC-P-77)
+
+**用户故事**:作为家长,我想参与打卡/裂变,以便获奖励。
+
+- **角色**:家长
+- **前置条件**:活动进行中。
+- **主流程**:打卡 → 进度累计 → 助力。
+- **异常/边界**:重复打卡幂等;刷量/机器行为拦截。
+- **关联需求/设计**:活动。
+- **关联用例**:TC-P-77
+
+---
+
+## 场景 P-78:消息中心/通知查看(SC-P-78)
+
+**用户故事**:作为家长,我想查看系统/任务/方案提醒,以便及时处理。
+
+- **角色**:家长
+- **前置条件**:有消息。
+- **主流程**:打开消息中心 → 列表/已读。
+- **异常/边界**:越权消息不可见;分页。
+- **关联需求/设计**:消息服务。
+- **关联用例**:TC-P-78
+
+---
+
+## 场景 P-79:推送/通知开关设置(SC-P-79)
+
+**用户故事**:作为家长,我想控制接收,以便减少打扰。
+
+- **角色**:家长
+- **前置条件**:已登录。
+- **主流程**:设开关/提醒时间。
+- **异常/边界**:关键安全通知不可关闭。
+- **关联需求/设计**:消息服务。
+- **关联用例**:TC-P-79
+
+---
+
+## 场景 P-80:订阅/会员退款与发票(SC-P-80)
+
+**用户故事**:作为家长,我想退会员/开发票,以便财务处理。
+
+- **角色**:家长
+- **前置条件**:已购会员。
+- **主流程**:申请退 → 校验 → 退款/开票。
+- **异常/边界**:已消费不退;重复退拦截;发票信息校验。
+- **关联需求/设计**:会员/订单。
+- **关联用例**:TC-P-80
+
+---
+
+## 场景 P-81:方案/任务草稿保存与恢复(SC-P-81)
+
+**用户故事**:作为家长,我想暂存未完工作,以便续写。
+
+- **角色**:家长
+- **前置条件**:编辑中。
+- **主流程**:存草稿 → 恢复继续。
+- **异常/边界**:草稿有效期;恢复冲突提示。
+- **关联需求/设计**:方案/任务。
+- **关联用例**:TC-P-81
+
+---
+
+## 场景 P-82:全局搜索(报告/方案/任务/商品)(SC-P-82)
+
+**用户故事**:作为家长,我想快速定位内容,以便高效查找。
+
+- **角色**:家长
+- **前置条件**:已登录。
+- **主流程**:搜 → 结果按类型分流。
+- **异常/边界**:越权结果过滤;空结果不报错。
+- **关联需求/设计**:搜索。
+- **关联用例**:TC-P-82
+
+---
+
+## 场景 P-83:意见反馈/在线客服(SC-P-83)
+
+**用户故事**:作为家长,我想提反馈/接入客服,以便问题被解决。
+
+- **角色**:家长
+- **前置条件**:已登录。
+- **主流程**:提交反馈/接入客服。
+- **异常/边界**:敏感信息脱敏;附件大小限制。
+- **关联需求/设计**:客服。
+- **关联用例**:TC-P-83
+
+---
+
+## 场景 P-84:分享报告/方案给家人或规划师(SC-P-84)
+
+**用户故事**:作为家长,我想共享内容,以便协作。
+
+- **角色**:家长
+- **前置条件**:有报告/方案。
+- **主流程**:生成分享链接 → 对方查看。
+- **异常/边界**:链接失效/权限校验;越权分享被拒。
+- **关联需求/设计**:分享。
+- **关联用例**:TC-P-84
+
+---
+
+## 场景 P-85:多端登录/会话互斥(SC-P-85)
+
+**用户故事**:作为家长,我想多设备安全登录,以便防冒用。
+
+- **角色**:家长
+- **前置条件**:已登录设备。
+- **主流程**:新设备登录 → 旧设备踢下线/二次验证。
+- **异常/边界**:异常设备风控;退出清 token。
+- **关联需求/设计**:`AuthController`。
+- **关联用例**:TC-P-85
+
+---
+
+## 场景 P-86:成长打卡榜/家庭排行(SC-P-86)
+
+**用户故事**:作为家长,我想看家庭排行,以便激励。
+
+- **角色**:家长
+- **前置条件**:家庭成员有打卡数据。
+- **主流程**:看榜 → 排名/进度。
+- **异常/边界**:数据仅本家庭可见;排名实时性。
+- **关联需求/设计**:勋章/排行。
+- **关联用例**:TC-P-86
+
+> **注**:SC-P-87~93(任务完成归因 / 心愿扣减 / 手动发放 / 每日上限 / 报告刷新 / 权重重算 / 文章互动)属「五维指标变化专项」,完整叙事见 `07-five-dimension.md`(ED 专项),对应用例 TC-P-87~93 见 `test-cases/parent.md` 对应专项段。

+ 202 - 1
tests/user-scenarios/03-child.md

@@ -1,7 +1,7 @@
 # 用户使用场景 · 孩子(Child)
 
 > 来源:`AGENTS.md`(能登录/不能登录用户统一口径、双角色铁律:孩子端不能切家长)、`API_REFERENCE.md`、`cfc-frontend/pages/*`、黑盒方案 C-01~C-09。
-> 关联用例:`test-cases/child.md`(TC-C-01~TC-C-09)。
+> 关联用例:`test-cases/child.md`(TC-C-01~TC-C-25,含五维变化专项)。
 
 > **统一口径**:新版不再使用「孩子」概念做数据隔离,而是「能登录用户 / 不能登录用户」。
 > 能登录用户:`family_members.userId` 非空且关联 User 有 openid;不能登录用户:由同家庭能登录用户代管其数据。
@@ -127,3 +127,204 @@
 - **异常/边界**:未解锁勋章不显示领取按钮;达到条件自动点亮。
 - **关联需求/设计**:`RewardController` 勋章;管理端可创建勋章。
 - **关联用例**:TC-C-09
+
+---
+
+## 场景 C-9:勋章解锁提醒(SC-C-10)
+
+**用户故事**:作为孩子,我想在达成勋章条件时收到解锁提醒,以便及时获得正反馈。
+
+- **角色**:孩子
+- **前置条件**:已达成某项勋章条件(任务/打卡聚合)。
+- **主流程**
+  1. 达成条件 → 系统解锁勋章。
+  2. 推送解锁提醒(站内消息/弹窗)。
+- **异常/边界**:重复达成不重复发放(幂等);勋章来自任务/打卡聚合,数据缺失不误发。
+- **关联需求/设计**:`MedalController`;推送。
+- **关联用例**:TC-C-10
+
+---
+
+## 场景 C-10:成长记录查看(孩子视角)(SC-C-11)
+
+**用户故事**:作为孩子,我想看自己的成长时间线,以便回顾进步。
+
+- **角色**:孩子
+- **前置条件**:已有成长记录。
+- **主流程**
+  1. 打开成长记录 → 时间线(任务/测评/报告/打卡)→ 只读。
+- **异常/边界**:仅本人数据;数据缺失项跳过不报错。
+- **关联需求/设计**:`GrowthController`。
+- **关联用例**:TC-C-11
+
+---
+
+## 场景 C-11:饮食食谱查看(SC-C-12)
+
+**用户故事**:作为孩子,我想看今日家庭食谱,以便知道吃什么。
+
+- **角色**:孩子
+- **前置条件**:家庭已有今日食谱。
+- **主流程**
+  1. 打开食谱页 → 当日三餐展示。
+- **异常/边界**:无食谱显示空态(不白屏);忌口/过敏标注。
+- **关联需求/设计**:饮食推荐。
+- **关联用例**:TC-C-12
+
+---
+
+## 场景 C-12:AI 对话(孩子视角)(SC-C-13)
+
+**用户故事**:作为孩子,我想问 AI 成长问题,以便得到适龄回答。
+
+- **角色**:孩子
+- **前置条件**:AI 服务可用。
+- **主流程**
+  1. 进对话 → 发送问题 → 多轮上下文回答。
+- **异常/边界**:内容适龄过滤;LangGraph 不可用降级提示;敏感问题不泄露隐私。
+- **关联需求/设计**:`AIChatController`;`AiGateway`。
+- **关联用例**:TC-C-13
+
+---
+
+## 场景 C-13:任务驳回重做(SC-C-14)
+
+**用户故事**:作为孩子,我想在被驳回后重做任务,以便修正后再次提交。
+
+- **角色**:孩子
+- **前置条件**:任务被家长/规划师驳回。
+- **主流程**
+  1. 查看驳回原因 → 重做 → 再次提交。
+- **异常/边界**:驳回后可重做;重复提交幂等;超出次数限制提示。
+- **关联需求/设计**:`TaskController`。
+- **关联用例**:TC-C-14
+
+---
+
+## 场景 C-14:消息接收(SC-C-15)
+
+**用户故事**:作为孩子,我想接收家长/规划师消息并标记已读,以便及时了解安排。
+
+- **角色**:孩子
+- **前置条件**:有未读消息。
+- **主流程**
+  1. 打开消息列表 → 查看 → 标记已读。
+- **异常/边界**:越权消息不可见;分页正确。
+- **关联需求/设计**:消息服务。
+- **关联用例**:TC-C-15
+
+---
+
+## 场景 C-15:个人资料查看(受限)(SC-C-16)
+
+**用户故事**:作为孩子,我想看自己的资料,以便了解账号信息。
+
+- **角色**:孩子
+- **前置条件**:已登录。
+- **主流程**
+  1. 打开资料页 → 只读展示(昵称/头像/生日)。
+- **异常/边界**:敏感字段由家长代管;孩子端不可修改核心字段。
+- **关联需求/设计**:`AuthController`。
+- **关联用例**:TC-C-16
+
+---
+
+## 场景 C-16:退出登录(SC-C-17)
+
+**用户故事**:作为孩子,我想安全退出,以便保护设备隐私。
+
+- **角色**:孩子
+- **前置条件**:已登录。
+- **主流程**
+  1. 点击退出 → 清除本地 token 与缓存 → 回登录页。
+- **异常/边界**:退出后敏感缓存清除;退出后访问受保护接口 401。
+- **关联需求/设计**:`AuthController`。
+- **关联用例**:TC-C-17
+
+---
+
+## 场景 C-17:设备/账号绑定校验(SC-C-18)
+
+**用户故事**:作为孩子,我想在异常设备登录时被校验,以便防冒用。
+
+- **角色**:孩子
+- **前置条件**:新设备登录。
+- **主流程**
+  1. 登录时设备校验 → 正常设备放行。
+  2. 异常设备触发二次验证/限制。
+- **异常/边界**:异常设备风控提示;绑定校验失败拒登录。
+- **关联需求/设计**:`AuthController`;设备绑定。
+- **关联用例**:TC-C-18
+
+---
+
+## 场景 C-18:查看家人/规划师消息通知(SC-C-19)
+
+**用户故事**:作为孩子,我想收家人/规划师的通知,以便不遗漏安排。
+
+- **角色**:孩子
+- **前置条件**:有通知。
+- **主流程**
+  1. 打开消息/通知列表 → 查看 → 已读。
+- **异常/边界**:越权消息不可见;分页。
+- **关联需求/设计**:消息服务。
+- **关联用例**:TC-C-19
+
+---
+
+## 场景 C-19:成长档案查看/家长代导出(SC-C-20)
+
+**用户故事**:作为孩子,我想看自己档案并由家长代导出,以便合规留存。
+
+- **角色**:孩子(导出需家长代办)
+- **前置条件**:已有成长档案。
+- **主流程**
+  1. 打开档案页 → 只读查看。
+  2. 导出需家长发起(未成年人受限)。
+- **异常/边界**:未成年人导出受限,需家长代办;越权导出拒。
+- **关联需求/设计**:`GrowthController`;数据导出(GDPR)。
+- **关联用例**:TC-C-20
+
+---
+
+## 场景 C-20:舌诊/情绪自拍采集(孩子端)(SC-C-21)
+
+**用户故事**:作为孩子,我想拍照上传舌苔,以便辅助健康评估。
+
+- **角色**:孩子
+- **前置条件**:拍照权限已授权。
+- **主流程**
+  1. 拍照/上传 → 识别情绪标签 → 关联测评。
+- **异常/边界**:模糊/非照片拒绝;隐私标注不外露。
+- **关联需求/设计**:舌诊情绪识别。
+- **关联用例**:TC-C-21
+
+---
+
+## 场景 C-21:商城浏览/积分兑换(孩子端消费)(SC-C-22)
+
+**用户故事**:作为孩子,我想用积分在商城兑换,以便用行动换奖励。
+
+- **角色**:孩子
+- **前置条件**:有足够积分;商品上架。
+- **主流程**
+  1. 浏览商品 → 选择积分兑换 → 扣减积分 → 兑换成功。
+- **异常/边界**:积分不足拦截;重复兑换幂等;下架商品不可兑。
+- **关联需求/设计**:`MallController`;积分体系。
+- **关联用例**:TC-C-22
+
+---
+
+## 场景 C-22:意见反馈(孩子端)(SC-C-23)
+
+**用户故事**:作为孩子,我想提交反馈,以便问题被听见。
+
+- **角色**:孩子
+- **前置条件**:已登录。
+- **主流程**
+  1. 提交反馈(内容/类型)→ 进入客服队列。
+- **异常/边界**:内容适龄过滤;敏感信息脱敏;附件大小限制。
+- **关联需求/设计**:客服;`/api/feedback`。
+- **关联用例**:TC-C-23
+
+> **注**:SC-C-24(小游戏/任务得分触发五维增长)与 SC-C-25(方案任务打卡触发五维增长)属「五维指标变化专项」,完整叙事见 `07-five-dimension.md`(ED 专项),对应用例 TC-C-24 / TC-C-25。

+ 299 - 1
tests/user-scenarios/04-teacher.md

@@ -1,7 +1,7 @@
 # 用户使用场景 · 成长规划师(Teacher, role=teacher)
 
 > 来源:`AGENTS.md`(成长规划师 `role=teacher`、可切回家长视角、测评订单、报告审核、方案激活拆任务、成长计划、套餐)、`API_REFERENCE.md`、`cfc-frontend/pages/teacher/*`、黑盒方案 TCH-01~TCH-12。
-> 关联用例:`test-cases/teacher.md`(TC-T-01~TC-T-12)。
+> 关联用例:`test-cases/teacher.md`(TC-T-01~TC-T-32,含五维变化专项 TC-T-30~32)。
 
 ---
 
@@ -126,3 +126,301 @@
 - **异常/边界**:套餐任务项为空 → 校验拦截;未审核不可购买。
 - **关联需求/设计**:`GrowthPlanController` `/api/growth/plan`、`GuidePackageController` `/api/guide/packages`。
 - **关联用例**:TC-T-11, TC-T-12
+
+---
+
+## 场景 T-9:测评预约确认(状态守卫)(SC-T-09)
+
+**用户故事**:作为规划师,我想确认孩子到约,以便预约进入已确认态。
+
+- **角色**:规划师
+- **前置条件**:家长已创建预约(待确认态)。
+- **主流程**
+  1. 打开预约 → 确认(待确认→已确认)。
+- **异常/边界**:越状态确认需校验(如已取消/已完成不可确认);非本家庭预约不可确认(403)。
+- **关联需求/设计**:`AssessmentAppointmentController`。
+- **关联用例**:TC-T-09
+
+---
+
+## 场景 T-10:测评预约完成/未到(SC-T-10)
+
+**用户故事**:作为规划师,我想闭环预约(完成/未到),以便记录服务结果。
+
+- **角色**:规划师
+- **前置条件**:预约已确认。
+- **主流程**
+  1. 完成测评 → 预约置已完成。
+  2. 孩子未到 → 预约置未到。
+- **异常/边界**:状态机合法流转(已确认→已完成/未到);非法跳转拦截。
+- **关联需求/设计**:`AssessmentAppointmentController`。
+- **关联用例**:TC-T-10
+
+---
+
+## 场景 T-11:DAN 报告上传与解析(SC-T-11)
+
+**用户故事**:作为规划师,我想上传 DAN 报告并解析,以便生成测评方案。
+
+- **角色**:规划师
+- **前置条件**:已有 DAN 报告文件。
+- **主流程**
+  1. 上传 DAN 报告 → 解析 blocks(category 键)→ 预览。
+  2. 确认 → 生成方案。
+- **异常/边界**:解析失败回退人工录入;category 缺失标注;重复上传幂等。
+- **关联需求/设计**:`DanReportParseService` / `DanReportUpload`。
+- **关联用例**:TC-T-11
+
+---
+
+## 场景 T-12:DAN 八类报告查看(SC-T-12)
+
+**用户故事**:作为规划师,我想审阅孩子八类测评结果,以便专业解读。
+
+- **角色**:规划师
+- **前置条件**:已有解析结果。
+- **主流程**
+  1. 打开结果页 → mind/wisdom/cognition/behavior/career/campus/adolescent/learning 分屏。
+- **异常/边界**:量纲标注正确;结果未录入不展示。
+- **关联需求/设计**:`DanAssessmentResultDTO`。
+- **关联用例**:TC-T-12
+
+---
+
+## 场景 T-13:规划师视角数据隔离(SC-T-13)
+
+**用户故事**:作为规划师,我想仅见绑定家庭数据,以便合规服务客户。
+
+- **角色**:规划师
+- **前置条件**:已绑定若干家庭。
+- **主流程**
+  1. 访问家庭/成员/报告列表 → 仅显示绑定家庭。
+- **异常/边界**:非绑定家庭 403;越权调接口拒。
+- **关联需求/设计**:控制器内 role 检查。
+- **关联用例**:TC-T-13
+
+---
+
+## 场景 T-14:方案编辑(规划师侧)(SC-T-14)
+
+**用户故事**:作为规划师,我想专业调整客户方案,以便提升方案质量。
+
+- **角色**:规划师
+- **前置条件**:方案存在(generated/reviewed)。
+- **主流程**
+  1. 编辑方案板块/任务项 → 保存。
+- **异常/边界**:编辑后状态标记已改;非绑定家庭 403。
+- **关联需求/设计**:方案管理。
+- **关联用例**:TC-T-14
+
+---
+
+## 场景 T-15:套餐任务项管理(SC-T-15)
+
+**用户故事**:作为规划师,我想维护套餐任务项,以便套餐内容更新。
+
+- **角色**:规划师
+- **前置条件**:已创建套餐。
+- **主流程**
+  1. 增删套餐任务项 → 保存 → 重算。
+- **异常/边界**:空套餐拦截上架;任务项为空校验。
+- **关联需求/设计**:`GuidePackageController`。
+- **关联用例**:TC-T-15
+
+---
+
+## 场景 T-16:客户健康总览(SC-T-16)
+
+**用户故事**:作为规划师,我想一眼看客户状态,以便快速判断服务重点。
+
+- **角色**:规划师
+- **前置条件**:已绑定家庭且成员有数据。
+- **主流程**
+  1. 打开家庭仪表板 → 能量/报告/方案汇总。
+- **异常/边界**:数据缺失降级展示;仅绑定家庭可见。
+- **关联需求/设计**:仪表板。
+- **关联用例**:TC-T-16
+
+---
+
+## 场景 T-17:成长计划进度跟踪(SC-T-17)
+
+**用户故事**:作为规划师,我想跟踪客户计划执行进度,以便适时干预。
+
+- **角色**:规划师
+- **前置条件**:计划已激活且有任务。
+- **主流程**
+  1. 打开计划 → 看任务完成度/进度。
+- **异常/边界**:进度计算准确;无任务空态。
+- **关联需求/设计**:`GrowthPlanController`。
+- **关联用例**:TC-T-17
+
+---
+
+## 场景 T-18:批量任务下发(SC-T-18)
+
+**用户故事**:作为规划师,我想对多孩批量子发任务,以便提升管理效率。
+
+- **角色**:规划师
+- **前置条件**:绑定家庭有多个成员。
+- **主流程**
+  1. 选多成员 → 批量建任务 → 各成员收到。
+- **异常/边界**:部分失败不影响其他(事务边界正确);重复下发幂等。
+- **关联需求/设计**:`TaskController`。
+- **关联用例**:TC-T-18
+
+---
+
+## 场景 T-19:消息推送客户(SC-T-19)
+
+**用户故事**:作为规划师,我想发消息/提醒客户,以便触达安排。
+
+- **角色**:规划师
+- **前置条件**:绑定家庭客户。
+- **主流程**
+  1. 发消息/提醒 → 客户收到 → 可标记已读。
+- **异常/边界**:免打扰设置生效;越权推送拒。
+- **关联需求/设计**:消息服务。
+- **关联用例**:TC-T-19
+
+---
+
+## 场景 T-20:退出/切换账号(SC-T-20)
+
+**用户故事**:作为规划师,我想安全退出/切换账号,以便换号工作。
+
+- **角色**:规划师
+- **前置条件**:已登录。
+- **主流程**
+  1. 退出 → 清 token/缓存 → 回登录页。
+- **异常/边界**:退出后缓存清除;访问受保护接口 401。
+- **关联需求/设计**:`AuthController`。
+- **关联用例**:TC-T-20
+
+---
+
+## 场景 T-21:报告对比分析(SC-T-21)
+
+**用户故事**:作为规划师,我想对比客户多份报告,以便看变化趋势。
+
+- **角色**:规划师
+- **前置条件**:客户有多份同类型报告。
+- **主流程**
+  1. 选多份报告 → 对比 → 差异标注。
+- **异常/边界**:报告类型一致才可比对;类型不一致拦截。
+- **关联需求/设计**:报告管理。
+- **关联用例**:TC-T-21
+
+---
+
+## 场景 T-22:方案归档(SC-T-22)
+
+**用户故事**:作为规划师,我想归档结束的方案,以便留档。
+
+- **角色**:规划师
+- **前置条件**:方案已完成/终止。
+- **主流程**
+  1. 方案完成 → 归档。
+- **异常/边界**:归档后只读不可改。
+- **关联需求/设计**:方案管理。
+- **关联用例**:TC-T-22
+
+---
+
+## 场景 T-23:报告代传(规划师代客户传)(SC-T-23)
+
+**用户故事**:作为规划师,我想代客户上传健康报告,以便无原件客户也能解析。
+
+- **角色**:规划师
+- **前置条件**:已绑定客户家庭;持有报告 PDF。
+- **主流程**
+  1. 上传 PDF + 选孩子 → 解析 → 关联孩子档案。
+- **异常/边界**:非绑定家庭拒;识别失败进草稿;确认前可取消。
+- **关联需求/设计**:报告代传/`report-proxy`。
+- **关联用例**:TC-T-23
+
+---
+
+## 场景 T-24:解绑/重分配客户家庭(SC-T-24)
+
+**用户故事**:作为规划师,我想解绑/重绑客户家庭,以便组织调整。
+
+- **角色**:规划师
+- **前置条件**:已有绑定家庭。
+- **主流程**
+  1. 解绑 → 处理在途方案/预约 → 重绑新家庭。
+- **异常/边界**:在途方案/预约未处理拦截;非绑定家庭不可操作。
+- **关联需求/设计**:规划师绑定。
+- **关联用例**:TC-T-24
+
+---
+
+## 场景 T-25:舌诊/情绪测评录入(规划师)(SC-T-25)
+
+**用户故事**:作为规划师,我想录入舌诊/情绪识别结果,以便辅助评估。
+
+- **角色**:规划师
+- **前置条件**:有舌诊照片。
+- **主流程**
+  1. 上传/录入 → 识别 → 关联报告。
+- **异常/边界**:识别失败回退人工录入;图片模糊拒绝。
+- **关联需求/设计**:舌诊情绪识别。
+- **关联用例**:TC-T-25
+
+---
+
+## 场景 T-26:精准营养方案制定(规划师)(SC-T-26)
+
+**用户故事**:作为规划师,我想基于客户营养目标制定方案,以便科学指导。
+
+- **角色**:规划师
+- **前置条件**:客户设定了营养目标(或由规划师设定)。
+- **主流程**
+  1. 设目标(热量/宏量营养素)→ 生成方案 → 关联食谱。
+- **异常/边界**:目标非法(负/超上限)拦截。
+- **关联需求/设计**:精准营养。
+- **关联用例**:TC-T-26
+
+---
+
+## 场景 T-27:家庭天盘解读(规划师)(SC-T-27)
+
+**用户故事**:作为规划师,我想打开客户家庭天盘并解读,以便提供全家整体建议。
+
+- **角色**:规划师
+- **前置条件**:已绑定家庭。
+- **主流程**
+  1. 打开天盘 → 聚合展示成员能量/报告/方案 → 解读。
+- **异常/边界**:仅绑定家庭可见;数据缺失降级。
+- **关联需求/设计**:家庭天盘。
+- **关联用例**:TC-T-27
+
+---
+
+## 场景 T-28:AI 方案内容安全复核(SC-T-28)
+
+**用户故事**:作为规划师,我想复核 AI 生成方案的内容安全,以便合规交付。
+
+- **角色**:规划师
+- **前置条件**:AI 方案已生成。
+- **主流程**
+  1. AI 生成 → 敏感词/合规检查 → 放行/驳回。
+- **异常/边界**:命中敏感词即拦截;驳回带原因。
+- **关联需求/设计**:内容安全。
+- **关联用例**:TC-T-28
+
+---
+
+## 场景 T-29:客户档案数据导出(合规)(SC-T-29)
+
+**用户故事**:作为规划师,我想导出客户数据(授权内),以便合规留存/迁移。
+
+- **角色**:规划师
+- **前置条件**:有授权。
+- **主流程**
+  1. 申请导出 → 生成加密包 → 下载。
+- **异常/边界**:授权/脱敏校验;越权导出拒;频次限制。
+- **关联需求/设计**:数据导出(GDPR)。
+- **关联用例**:TC-T-29
+
+> **注**:SC-T-30(测评录入触发五维变化)/ SC-T-31(手动维度打分覆盖)/ SC-T-32(五维自评录入)属「五维指标变化专项」,完整叙事见 `07-five-dimension.md`(ED 专项),对应用例 TC-T-30~32 见 `test-cases/teacher.md` 对应专项段。

+ 214 - 1
tests/user-scenarios/05-admin.md

@@ -1,7 +1,7 @@
 # 用户使用场景 · 平台运营(Admin / Web 管理端)
 
 > 来源:`AGENTS.md`(维度配置与知识库管理、关系类型 CRUD、文章发布-审核、报告解析中台、数据迁移、sfms 只读源)、`API_REFERENCE.md`(`/api/admin/*` 大量控制器)、`cfc-web/`、`cfc-frontend/pages/admin`、黑盒方案 A-01~A-16。
-> 关联用例:`test-cases/admin.md`(TC-A-01~TC-A-16)。
+> 关联用例:`test-cases/admin.md`(TC-A-01~TC-A-26,含五维配置治理 TC-A-25~26)。
 
 ---
 
@@ -111,3 +111,216 @@
 - **异常/边界**:覆盖新增接口;回归防止回退。
 - **关联需求/设计**:统一 `Result<T>`;全局异常处理。
 - **关联用例**:TC-A-16
+
+---
+
+## 场景 A-8:知识库管理(AI 知识维护)(SC-A-08)
+
+**用户故事**:作为运营,我想维护 AI 知识库条目,以便支撑对话/推荐。
+
+- **角色**:平台运营
+- **前置条件**:已登录管理端。
+- **主流程**
+  1. 知识条目 CRUD(增删改查)→ 保存。
+  2. 触发向量同步 → 对话可引用。
+- **异常/边界**:同步失败重试;大批量分批;删除被引用条目需确认。
+- **关联需求/设计**:知识库管理(Web);向量同步。
+- **关联用例**:TC-A-08
+
+---
+
+## 场景 A-9:维度配置与知识库管理(五维口径)(SC-A-09)
+
+**用户故事**:作为运营,我想维护五维维度与权重配置,以便统一健康口径。
+
+- **角色**:平台运营
+- **前置条件**:已登录管理端。
+- **主流程**
+  1. 维度/权重配置 → 保存 → 生效。
+- **异常/边界**:配置变更影响存量计算需提示;非 admin 403。
+- **关联需求/设计**:维度配置(Web 管理端)。
+- **关联用例**:TC-A-09
+
+---
+
+## 场景 A-10:数据迁移/参数校验(SC-A-10)
+
+**用户故事**:作为运营,我想执行数据迁移并校验参数,以便保障数据正确。
+
+- **角色**:平台运营
+- **前置条件**:迁移脚本/数据源就绪。
+- **主流程**
+  1. 跑迁移脚本 → 校验参数 → 确认无孤儿数据。
+- **异常/边界**:迁移幂等;字段校验失败阻断;孤儿数据告警。
+- **关联需求/设计**:`DatabaseInitializer`;多数据源。
+- **关联用例**:TC-A-10
+
+---
+
+## 场景 A-11:用户/家庭查询治理(SC-A-11)
+
+**用户故事**:作为运营,我想查询用户/家庭并限授权代操作,以便处理客诉。
+
+- **角色**:平台运营
+- **前置条件**:已登录管理端。
+- **主流程**
+  1. 查用户/家庭 → 代操作(限授权)。
+- **异常/边界**:代操作留审计;越权代操作拒。
+- **关联需求/设计**:管理端。
+- **关联用例**:TC-A-11
+
+---
+
+## 场景 A-12:订单/退款人工处理(SC-A-12)
+
+**用户故事**:作为运营,我想人工处理异常订单/退款,以便解决客诉。
+
+- **角色**:平台运营
+- **前置条件**:有异常订单。
+- **主流程**
+  1. 查订单 → 手动退款/补发。
+- **异常/边界**:重复退款拦截;留审计。
+- **关联需求/设计**:订单服务。
+- **关联用例**:TC-A-12
+
+---
+
+## 场景 A-13:内容安全审核(SC-A-13)
+
+**用户故事**:作为运营,我想审核 UGC 内容,以便过滤违规。
+
+- **角色**:平台运营
+- **前置条件**:有待审 UGC。
+- **主流程**
+  1. UGC 审核 → 通过/下架。
+- **异常/边界**:敏感词命中拦截;下架带原因。
+- **关联需求/设计**:内容安全。
+- **关联用例**:TC-A-13
+
+---
+
+## 场景 A-14:系统监控/告警(SC-A-14)
+
+**用户故事**:作为运营,我想看系统监控并处理告警,以便保障可用性。
+
+- **角色**:平台运营
+- **前置条件**:监控已接入。
+- **主流程**
+  1. 看监控 → 告警处理。
+- **异常/边界**:误报确认消除;告警分级。
+- **关联需求/设计**:监控。
+- **关联用例**:TC-A-14
+
+---
+
+## 场景 A-15:操作审计日志(SC-A-15)
+
+**用户故事**:作为运营,我想查询审计日志并溯源,以便可追溯。
+
+- **角色**:平台运营
+- **前置条件**:有操作记录。
+- **主流程**
+  1. 查审计日志 → 溯源。
+- **异常/边界**:日志不可篡改;分页。
+- **关联需求/设计**:审计。
+- **关联用例**:TC-A-15
+
+---
+
+## 场景 A-16:报告解析自学习/未知类型标注(SC-A-16)
+
+**用户故事**:作为运营,我想标注未知报告聚类,以便解析中台自学习。
+
+- **角色**:平台运营
+- **前置条件**:存在未知聚类。
+- **主流程**
+  1. 看未知类型 → 标类别 → 生效。
+- **异常/边界**:新类先注册再解析;重复标注幂等。
+- **关联需求/设计**:`/api/admin/report-parser/*`。
+- **关联用例**:TC-A-16
+
+---
+
+## 场景 A-17:优惠券/活动配置管理(SC-A-17)
+
+**用户故事**:作为运营,我想后台配券建活动,以便营销转化。
+
+- **角色**:平台运营
+- **前置条件**:已登录管理端。
+- **主流程**
+  1. 建券/活动 → 设规则/名额 → 上线。
+- **异常/边界**:时间冲突校验;名额超卖配置保护;下线需先处理存量。
+- **关联需求/设计**:优惠券/活动管理。
+- **关联用例**:TC-A-17
+
+---
+
+## 场景 A-18:内容安全审核队列(SC-A-18)
+
+**用户故事**:作为运营,我想审核 UGC/AI 内容队列,以便合规发布。
+
+- **角色**:平台运营
+- **前置条件**:有队列内容。
+- **主流程**
+  1. 队列 → 通过/下架。
+- **异常/边界**:敏感词命中拦截;批量操作幂等。
+- **关联需求/设计**:内容安全。
+- **关联用例**:TC-A-18
+
+---
+
+## 场景 A-19:账号注销/数据导出工单处理(SC-A-19)
+
+**用户故事**:作为运营,我想处理用户注销/导出工单,以便合规完成。
+
+- **角色**:平台运营
+- **前置条件**:有用户申请。
+- **主流程**
+  1. 接工单 → 执行归档/导出。
+- **异常/边界**:审计留痕;冷静期校验;并发处理按序。
+- **关联需求/设计**:GDPR 工单。
+- **关联用例**:TC-A-19
+
+---
+
+## 场景 A-20:限流/熔断配置(SC-A-20)
+
+**用户故事**:作为运营,我想配置接口限流,以便防护滥用。
+
+- **角色**:平台运营
+- **前置条件**:网关/限流组件可用。
+- **主流程**
+  1. 配限流规则 → 生效。
+- **异常/边界**:误杀白名单;非法阈值 400。
+- **关联需求/设计**:网关/限流。
+- **关联用例**:TC-A-20
+
+---
+
+## 场景 A-21:舌诊/情绪模型管理(SC-A-21)
+
+**用户故事**:作为运营,我想管理舌诊/情绪模型版本,以便保障识别质量。
+
+- **角色**:平台运营
+- **前置条件**:模型已注册。
+- **主流程**
+  1. 版控/上下线。
+- **异常/边界**:下线前需回退方案;非法版本 400。
+- **关联需求/设计**:模型管理。
+- **关联用例**:TC-A-21
+
+---
+
+## 场景 A-22:精准营养知识库管理(SC-A-22)
+
+**用户故事**:作为运营,我想维护精准营养知识库,以便支撑营养推荐。
+
+- **角色**:平台运营
+- **前置条件**:已登录管理端。
+- **主流程**
+  1. 知识 CRUD → 同步。
+- **异常/边界**:同步失败重试;并发 CRUD 乐观锁。
+- **关联需求/设计**:知识库。
+- **关联用例**:TC-A-22
+
+> **注**:SC-A-25(维度/权重/每日上限配置 CRUD 与生效)与 SC-A-26(能量来源比例与归因权重治理)属「五维配置治理」专项,完整叙事见 `07-five-dimension.md`(ED-13/ED-14),对应用例 TC-A-25~26 见 `test-cases/admin.md` 对应专项段(编号统一为 SC-A-25/26 口径)。

+ 121 - 1
tests/user-scenarios/06-vendor.md

@@ -1,7 +1,7 @@
 # 用户使用场景 · 商品服务商(Vendor)
 
 > 来源:`AGENTS.md`(商城 `dan/danshop` 独立 Spring Boot,端口 8888)、`API_REFERENCE.md`(`/api/product/*`、`/api/product/order`、`/api/admin/ecom-supplier/*`、`/api/service-role`)、黑盒方案 S-01~S-03。
-> 关联用例:`test-cases/vendor.md`(TC-S-01~TC-S-03)。
+> 关联用例:`test-cases/vendor.md`(TC-S-01~TC-S-11)。
 
 > 说明:商城为独立服务(`dan/danshop`,端口 8888),商品/订单与 C 端 `cfc-backend` 通过商品/订单接口协同;服务商入驻走统一服务角色申请或管理端供应商管理。
 
@@ -49,3 +49,123 @@
 - **异常/边界**:重复发货幂等;核销码校验防冒用;退款/售后按业务规则。
 - **关联需求/设计**:`ProductOrderController` `/api/product/order`;商城订单流。
 - **关联用例**:TC-S-03
+
+---
+
+## 场景 S-4:订单核销(到店 / 线下核销)
+
+**用户故事**:作为供应商,我想核销线下订单,以便完成到店履约。
+
+- **角色**:商品服务商
+- **前置条件**:订单已支付且支持到店核销;客户出示核销码。
+- **主流程**
+  1. 扫码/输入核销码 → 校验订单与核销码匹配。
+  2. 核销成功 → 订单状态更新为已完成/已核销。
+- **异常/边界**:核销码已被使用 → 重复核销幂等拒绝;核销码过期 → 提示重新获取;核销码与订单不匹配 → 拒绝并提示。
+- **关联需求/设计**:`ProductOrderController`;核销码校验。
+- **关联用例**:TC-S-04
+
+---
+
+## 场景 S-5:库存管理(调整 / 同步)
+
+**用户故事**:作为供应商,我想调整库存并同步商城,以便保障供应不超卖。
+
+- **角色**:商品服务商
+- **前置条件**:已有商品。
+- **主流程**
+  1. 调整库存(入库/出库/盘点)→ 同步商城库存。
+  2. 下单时库存扣减联动。
+- **异常/边界**:负库存拦截;并发下单不超卖(库存原子扣减);库存同步失败重试。
+- **关联需求/设计**:库存服务;`/api/product/stock`。
+- **关联用例**:TC-S-05
+
+---
+
+## 场景 S-6:售后 / 退款处理
+
+**用户故事**:作为供应商,我想处理客户退换货与退款,以便完成售后闭环。
+
+- **角色**:商品服务商
+- **前置条件**:客户已申请售后。
+- **主流程**
+  1. 查看售后单 → 审核 → 同意退款 / 拒绝。
+  2. 同意后走退款流程,订单状态更新。
+- **异常/边界**:重复退款拦截;已发货退款规则(运费/折扣)按业务;退款金额校验。
+- **关联需求/设计**:售后服务;`/api/product/refund`。
+- **关联用例**:TC-S-06
+
+---
+
+## 场景 S-7:营销活动报名(供应商侧)
+
+**用户故事**:作为供应商,我想报名平台营销活动,以便商品打标引流。
+
+- **角色**:商品服务商
+- **前置条件**:平台已发布活动。
+- **主流程**
+  1. 报名活动 → 提交参与商品。
+  2. 活动上线后商品带活动标。
+- **异常/边界**:活动已结束/未开始不可报名;活动名额满拒;商品资质不符驳回。
+- **关联需求/设计**:活动管理;`/api/admin/activity`。
+- **关联用例**:TC-S-07
+
+---
+
+## 场景 S-8:对账 / 结算
+
+**用户故事**:作为供应商,我想核对账单并按账期结算,以便掌握经营收入。
+
+- **角色**:商品服务商
+- **前置条件**:已完成订单;账期到。
+- **主流程**
+  1. 查看账单(订单/退款/佣金)→ 对账。
+  2. 账期结算 → 收益到账。
+- **异常/边界**:账期未到不可结算;对账不平有异常标记;结算失败可重试。
+- **关联需求/设计**:结算服务;`/api/admin/settlement`。
+- **关联用例**:TC-S-08
+
+---
+
+## 场景 S-9:报告解析服务接入(对接解析中台)
+
+**用户故事**:作为检测服务商,我想对接平台报告解析中台,以便提供报告解析能力。
+
+- **角色**:商品服务商(检测/服务类)
+- **前置条件**:具备解析资质;通过平台接入审核。
+- **主流程**
+  1. 接入解析中台 → 注册报告类型(如 `gut_flora`)。
+  2. 自测解析样例 → 验证通过上线。
+- **异常/边界**:跨商户数据隔离(不可解析他商户报告);鉴权失败拒;类型未注册不可解析。
+- **关联需求/设计**:报告解析中台 `/api/admin/report-parser/*`;服务商集成。
+- **关联用例**:TC-S-09
+
+---
+
+## 场景 S-10:营养 / 食谱数据供给
+
+**用户故事**:作为营养服务商,我想上架食谱数据并同步平台,以便支撑饮食推荐。
+
+- **角色**:商品服务商(营养/膳食类)
+- **前置条件**:具备营养数据合规资质。
+- **主流程**
+  1. 上架食谱数据(食材/营养/禁忌)→ 同步平台食谱库。
+  2. 平台饮食推荐可引用。
+- **异常/边界**:数据合规校验(无伪科学/治疗宣称);格式校验失败拒;同步失败重试。
+- **关联需求/设计**:食谱库;`/api/diet/recommend`。
+- **关联用例**:TC-S-10
+
+---
+
+## 场景 S-11:数据导出合规(授权使用)
+
+**用户故事**:作为服务商,我想在授权范围内取数,以便合规使用脱敏数据。
+
+- **角色**:商品服务商
+- **前置条件**:具备平台授权(授权范围/期限)。
+- **主流程**
+  1. 申请取数授权 → 平台审批。
+  2. 授权内导出脱敏数据。
+- **异常/边界**:越授权取数拒;敏感字段脱敏;导出频次限制。
+- **关联需求/设计**:合规;`/api/admin/export`。
+- **关联用例**:TC-S-11

+ 3 - 3
tests/user-scenarios/07-five-dimension.md

@@ -1,7 +1,7 @@
 # 用户使用场景 · 五维指标变化(本轮新增专项)
 
 > 来源:`EnergyController`(`/api/energy/*`)、`EnergyRuleEngine`、`EnergyService`、`DimensionDailyLimit`、`EnergyBalance`/`EnergyLog`、`AttributionWeights`、`ManualDimensionScoreController`、`FiveDimensionSelfCheckController`、`HealthReportController`、`AssessmentAppointmentService`、`DailyCheckinService`、`GameRecordService`、`GrowthTaskService`、`ArticleService`/`ActivityService`。
-> 关联用例:`test-cases/*.md` 的 `SC-P-87~93` / `SC-C-24~25` / `SC-T-30~32` / `SC-A-23~24` / `SC-X-19~21`。
+> 关联用例:`test-cases/*.md` 的 `SC-P-87~93` / `SC-C-24~25` / `SC-T-30~32` / `SC-A-25~26` / `SC-X-19~21`。
 > 设计原则:本文件补齐「五维指标**变化**」专项——即指标**如何随行为触发、如何按规则归因/限流/刷新/重算、如何溯源与隔离**,与 `应用场景总览.md` 中仅"查看/流水/配置查看"的 `SC-P-17/18/19` 形成闭环。
 >
 > **异常流口径**:下列每条场景均给出「具体故障注入 + 可判定断言」,不再使用"系统给出明确错误提示而非 500"等模板文案。
@@ -244,7 +244,7 @@
   - 权重/上限非法(负/超界/和≠100%):400 拦截。
   - 非 admin 操作:403(权限流)。
   - 并发改同一配置:乐观锁/版本控制,不互相覆盖。
-- **关联用例**:TC-A-23 / TC-A-23-E / TC-A-23-P(e2e: `tests/e2e/energy-rules-config.spec.js`)
+- **关联用例**:TC-A-25 / TC-A-25-E / TC-A-25-P(e2e: `tests/e2e/energy-rules-config.spec.js`)
 
 ---
 
@@ -261,7 +261,7 @@
   - 非 admin 改全局:403(权限流)。
   - 比例非法(负/超 1/和≠1):400 拦截。
   - 配置未同步到计算节点:展示兜底并提示,不静默错算。
-- **关联用例**:TC-A-24 / TC-A-24-E / TC-A-24-P
+- **关联用例**:TC-A-26 / TC-A-26-E / TC-A-26-P
 
 ---
 

+ 17 - 9
tests/user-scenarios/README.md

@@ -3,19 +3,27 @@
 > 本目录从**真实用户视角**描述产品「怎么被使用」,是 `test-cases/` 的上游输入。
 > 每个场景遵循格式:**用户故事(作为 X,我想 Y,以便 Z)→ 前置条件 → 主流程 → 异常/边界 → 关联需求/设计 → 关联用例**。
 
-> **📌 测试用例划分口径(权威)**:测试用例以「**角色场景**」为一级维度组织。先读 [`应用场景总览.md`](./应用场景总览.md)——它按「角色 × 业务域」给出全部 **201 个应用场景**(稳定编号 `SC-角色-NN`,其中本轮新增 SC-G-11~12 / SC-P-67~86 / SC-C-19~23 / SC-T-23~29 / SC-A-16~22 / SC-S-09~11 / SC-X-13~18),并规定每个场景派生 3 类用例(正常流/异常流/权限流)、编号回链与优先级映射。本文 01~06 是各角色的完整叙事细节,总览是上层目录与追溯矩阵。
+> **📌 测试用例划分口径(权威)**:测试用例以「**角色场景**」为一级维度组织。先读 [`应用场景总览.md`](./应用场景总览.md)——它按「角色 × 业务域」给出全部 **218 个应用场景**(稳定编号 `SC-角色-NN`:游客 12 / 家长 93 / 孩子 25 / 规划师 32 / 运营 24 / 服务商 11 / 跨角色 21,其中含 2026-11-02 新增五维变化专项 +17:SC-P-87~93 / SC-C-24~25 / SC-T-30~32 / SC-A-25~26 / SC-X-19~21),并规定每个场景派生 3 类用例(正常流/异常流/权限流)、编号回链与优先级映射。本文 01~06 是各角色的完整叙事细节(2026-11-03 已按 SC 编号全量补齐,每个场景标注 `(SC-角色-NN)` 回链),总览是上层目录与追溯矩阵。
 
 ## 角色与场景索引
 
-| 文件 | 角色 | 核心场景 |
+| 文件 | 角色 | 核心场景(SC 编号范围) |
+|------|------|--------------------------|
+| `01-guest.md` | 游客 | SC-G-01~12:首次进入、微信/手机登录、邀请注册、越权拦截、环境/测试模式/隐私/非微信兜底 |
+| `02-parent.md` | 家长 | SC-P-01~93:创建/邀请家庭、成员关系编辑、双角色切换、任务/心愿、五维能量、测评订单、健康报告、AI 方案/对话、饮食食谱、商城/会员、联系人、设置/隐私、报告代传、天盘、营养/舌诊、注销/导出、多孩子/规划师切换、活动/优惠券、消息/搜索/反馈/分享/多端/排行(含五维专项 P-87~93) |
+| `03-child.md` | 孩子 | SC-C-01~23:孩子端登录、任务/小游戏、心愿、能量/报告只读、方案打卡、勋章/成长/消息/档案/舌诊/商城/反馈/退出/绑定(五维专项 C-24~25 见 07) |
+| `04-teacher.md` | 成长规划师 | SC-T-01~29/30~32:登录/切换、绑定/解绑、代传/审核/激活、测评录入/DAN、成长计划/套餐、任务/消息/对比/归档/舌诊/营养/天盘/内容安全/导出(五维专项 T-30~32 见 07) |
+| `05-admin.md` | 平台运营 | SC-A-01~26:登录/看板、报告解析中台、文章审核、关系/勋章/供应商/活动/知识库/迁移/参数/知识库/监控/审计/GDPR/限流/模型/营养库/优惠券/内容安全/五维配置治理(A-25~26 见 07) |
+| `06-vendor.md` | 商品服务商 | SC-S-01~11:入驻/商品/订单/核销/库存/售后/活动/结算/解析中台/营养数据/合规导出 |
+| `07-five-dimension.md` | 全角色(五维变化) | ED-1~17:任务/打卡/小游戏/测评/报告/手动/自评/心愿/日上限/权重/跨角色隔离·对账·并发(对应 P-87~93/C-24~25/T-30~32/A-25~26/X-19~21) |
+
+---
+
+## 维护记录
+
+| 日期 | 动作 | 影响文件 |
 |------|------|----------|
-| `01-guest.md` | 游客 | 首次进入、微信/手机登录、邀请注册加入家庭、越权拦截、浏览商城文章 |
-| `02-parent.md` | 家长 | 创建/邀请家庭、成员与关系编辑、双角色切换、任务/心愿、五维能量、测评订单、健康报告主链路、AI 方案与对话、购买会员 |
-| `03-child.md` | 孩子 | 孩子端登录(无家长入口)、执行任务/小游戏、心愿、查看能量与报告(只读)、方案打卡、勋章墙 |
-| `04-teacher.md` | 成长规划师 | 密码登录、绑定家庭、代传报告、审核方案、激活拆任务(幂等)、录入测评、成长计划、创建套餐 |
-| `05-admin.md` | 平台运营 | 管理端登录、全局统计、报告解析中台、文章发布审核、关系类型/勋章/供应商/活动/知识库、数据迁移、参数校验 |
-| `06-vendor.md` | 商品服务商 | 入驻申请、商品管理、订单处理(发货/核销) |
-| `07-five-dimension.md` | 全角色(五维变化) | 五维指标**变化**专项:任务/打卡/小游戏/测评录入/报告入库/手动打分/自评/心愿扣减/每日上限/权重变更/跨角色隔离·对账·并发(ED-1~17,对应 SC-P-87~93 等) |
+| 2026-11-03 | 叙事层全量补齐(各角色 SC 01~06 全覆盖)、admin 五维编号统一 SC-A-25/26、vendor TC-S-09 编号对齐、README/总览同步 | 01~06、07、应用场景总览、test-cases/vendor、README |
 
 ## 编写依据
 

+ 7 - 8
tests/user-scenarios/应用场景总览.md

@@ -318,7 +318,7 @@
 
 ## 九、五维指标变化专项测试场景(本轮新增 ED-1~17)
 
-> 本段补齐「五维指标**变化**」专项:指标如何随行为触发、按规则归因 / 日上限 / 刷新 / 重算、如何溯源与隔离。完整用户故事见 [`07-five-dimension.md`](./07-five-dimension.md);用例见 `../test-cases/*.md` 的 `TC-P-87~93` / `TC-C-24~25` / `TC-T-30~32` / `TC-A-23~24` / `TC-X-19~21`(每条含正常流 + 具体异常流-E + 权限流-P)。
+> 本段补齐「五维指标**变化**」专项:指标如何随行为触发、按规则归因 / 日上限 / 刷新 / 重算、如何溯源与隔离。完整用户故事见 [`07-five-dimension.md`](./07-five-dimension.md);用例见 `../test-cases/*.md` 的 `TC-P-87~93` / `TC-C-24~25` / `TC-T-30~32` / `TC-A-25~26` / `TC-X-19~21`(每条含正常流 + 具体异常流-E + 权限流-P)。
 
 ### 业务域 C-2(家长):五维能量变化规则
 - **SC-P-87 · 任务完成触发五维能量按规则归因增长** — 目标:任务审批通过按 `EnergyRuleEngine` 归因到对应维度并写 `EnergyLog`/`EnergyBalance`。边界:重复审批幂等不加;未配置归因维度不 500;参数非法 400 不改能量;规则计算异常告警不写脏流水。模块:`EnergyRuleEngine`/`TaskController`。
@@ -339,15 +339,14 @@
 - **SC-T-32 · 五维自评录入与变化** — 目标:`FiveDimensionSelfCheckController` 自评微调并叠加。边界:非本人/非绑定 403;分值越界 400;与测评/报告冲突按优先级。模块:`FiveDimensionSelfCheckController`。
 
 ### 业务域(运营):五维配置治理
-- **SC-A-25 · 维度/权重/每日上限配置 CRUD 与生效** — 目标:维度/权重/`DailyLimit` CRUD 安全生效。边界:删除被引用维度需确认;权重/上限非法 400;非 admin 403;并发改版本控制。模块:`DimensionConfigController`/`DimensionWeightController`。
-- **SC-A-26 · 能量来源比例与归因权重治理** — 目标:`AttributionWeights`/`configureSourceRatios` 全局生效并审计。边界:非 admin 403;比例非法 400;未同步兜底。模块:`EnergyController`/`AttributionWeights`。
-
+- **SC-A-25 · 维度/权重/每日上限配置 CRUD 与生效** — 目标:`DimensionConfigController`/`DimensionWeightController` 维度/权重/`DailyLimit` CRUD 安全生效。边界:删除被引用维度需确认;权重/上限非法 400;非 admin 403;并发改版本控制。
+- **SC-A-26 · 能量来源比例与归因权重治理** — 目标:`AttributionWeights`/`configureSourceRatios` 全局生效并审计。边界:非 admin 403;比例非法 400;未同步兜底。
 ### 业务域(跨角色):五维隔离·对账·并发
 - **SC-X-19 · 五维能量跨角色数据隔离** — 目标:各方仅访问本家庭/绑定家庭成员能量与流水。边界:孩子查家长/规划师/运营 401/403;家长查他人 403;规划师查非绑定 F9 403;运营需工单授权。模块:`JwtInterceptor`+role 检查。
 - **SC-X-20 · 五维能量流水溯源一致性(对账)** — 目标:逐条 `balanceAfter==prev+amount`;`totalEarned-totalSpent==balance`。边界:不一致报警定位;负流水必有对应负记录且余额不为负;并发顺序一致。模块:`EnergyLog`/`EnergyBalance`。
 - **SC-X-21 · 多来源并发同成员能量变动** — 目标:任务/打卡/小游戏/活动并发原子加、不超日上限、不重复、余额一致。边界:触顶最后到达被拒/截断;部分失败回滚不残半笔;重试幂等。模块:`EnergyRuleEngine`。
 
-**派生用例**:`test-cases/parent.md` TC-P-87~93、`test-cases/child.md` TC-C-24~25、`test-cases/teacher.md` TC-T-30~32、`test-cases/admin.md` TC-A-23~24、`test-cases/cross-role-e2e.md` TC-X-19~21(每条含正常流 + 具体异常流-E + 权限流-P,见各文件「五维指标变化专项」段)。
+**派生用例**:`test-cases/parent.md` TC-P-87~93、`test-cases/child.md` TC-C-24~25、`test-cases/teacher.md` TC-T-30~32、`test-cases/admin.md` TC-A-25~26、`test-cases/cross-role-e2e.md` TC-X-19~21(每条含正常流 + 具体异常流-E + 权限流-P,见各文件「五维指标变化专项」段)。
 
 ---
 
@@ -364,7 +363,7 @@
    - **P1**:SC-P-17/21/23/26/27/31/32/33/34/35/37/39/41/42/43/45/47/52~60、SC-C-02/05/07/09、SC-T-01/02/04/06/08/12/13、SC-A-01/03/08/10、SC-S-02/03/04、SC-X-04/05/07/08/09/12
    - **P2**:其余游客/配置/设置类(SC-G-*、SC-P-02/05/06/08/09/19/50/51/61~66、SC-C-01/03/04/06/08/10~18、SC-T-14~22、SC-A-02/04/05/06/07/09/11~15、SC-S-01/05~08、SC-X-10/11)
    - **新增(本轮 +50)**:SC-G-11/12、SC-P-67~86、SC-C-19~23、SC-T-23~29、SC-A-16~22、SC-S-09~11、SC-X-13~18 已纳入;P0 含 SC-P-67 报告代传 / SC-P-76 活动并发名额 / SC-X-16 并发 E2E,其余默认 P1(设置/协议类为 P2)。
-   - **新增(五维变化专项 +17)**:SC-P-87~93/SC-C-24~25/SC-T-30~32/SC-A-23~24/SC-X-19~21 已纳入;P0 含 SC-P-91 报告刷新 / SC-X-19 隔离 / SC-X-20 对账 / SC-X-21 并发,其余默认 P1(配置/手动类为 P2)。
+   - **新增(五维变化专项 +17)**:SC-P-87~93/SC-C-24~25/SC-T-30~32/SC-A-25~26/SC-X-19~21 已纳入;P0 含 SC-P-91 报告刷新 / SC-X-19 隔离 / SC-X-20 对账 / SC-X-21 并发,其余默认 P1(配置/手动类为 P2)。
 5. **自动化对齐**:`tests/e2e/` 按角色分包(`e2e/roles/admin|child|parent|teacher`)与 API 层(`e2e/api/*`)对齐本表;DOM 层用例因 CFC-ENV-001 环境阻塞先标记未完成。
 
 ---
@@ -377,7 +376,7 @@
 | 家长 | 93 | 93(TC-P-01~93) | ✅ 已覆盖(含价值链 + 五维变化 SC-P-87~93) |
 | 孩子 | 25 | 25(TC-C-01~25) | ✅ 已覆盖(含五维变化 SC-C-24~25) |
 | 规划师 | 32 | 32(TC-T-01~32) | ✅ 已覆盖(含五维变化 SC-T-30~32) |
-| 运营 | 24 | 24(TC-A-01~24) | ✅ 已覆盖(含五维配置治理 SC-A-23~24) |
+| 运营 | 24 | 24(TC-A-01~23 + 25~26,空号 24) | ✅ 已覆盖(含五维配置治理 SC-A-25~26) |
 | 服务商 | 11 | 11(TC-S-01~11) | ✅ 已覆盖 SC-S-01~11 |
 | 跨角色 | 21 | 21(TC-X-01~21) | ✅ 已覆盖(含五维隔离/对账/并发 SC-X-19~21) |
 | **合计** | **218** | **218(正常流)×3 流 = 654** | ✅ 文档化用例已对齐全部 218 个场景(每个含正常/异常/权限三类) |
@@ -388,4 +387,4 @@
 
 > **本轮扩展(+50 场景)**:新增 SC-G-11~12、SC-P-67~86、SC-C-19~23、SC-T-23~29、SC-A-16~22、SC-S-09~11、SC-X-13~18,补齐此前"有文档无场景"的真实功能(报告代传 / 家庭天盘 / 精准营养 / 舌诊情绪 / 账号注销·数据导出·解绑 / 活动并发名额 / 消息推送 / 分享 / 多端会话 等),并同步生成异常流与权限流用例,场景总数由 151 升至 201。
 >
-> **本轮扩展(+17 五维变化专项 · 2026-11-02)**:补齐「五维指标**变化**」专项,场景总数由 201 升至 218。新增 SC-P-87~93(家长·能量变化规则)/ SC-C-24~25(孩子·自身变化)/ SC-T-30~32(规划师·变化录入)/ SC-A-23~24(运营·配置治理)/ SC-X-19~21(跨角色·隔离·对账·并发)。完整用户故事见 `07-five-dimension.md`;用例见 `test-cases/*.md` 的 `TC-P-87~93` 等。本批用例与既有用例统一改造为**具体异常流**(明确故障注入与可判定断言,废除"系统给出明确错误提示而非 500"等模板文案),详见 § 十 优先级映射与 `test-cases` 对应「五维指标变化专项」段。
+> **本轮扩展(+17 五维变化专项 · 2026-11-02)**:补齐「五维指标**变化**」专项,场景总数由 201 升至 218。新增 SC-P-87~93(家长·能量变化规则)/ SC-C-24~25(孩子·自身变化)/ SC-T-30~32(规划师·变化录入)/ SC-A-25~26(运营·配置治理)/ SC-X-19~21(跨角色·隔离·对账·并发)。完整用户故事见 `07-five-dimension.md`;用例见 `test-cases/*.md` 的 `TC-P-87~93` 等。本批用例与既有用例统一改造为**具体异常流**(明确故障注入与可判定断言,废除"系统给出明确错误提示而非 500"等模板文案),详见 § 十 优先级映射与 `test-cases` 对应「五维指标变化专项」段。