|
@@ -1,7 +1,7 @@
|
|
|
# 用户使用场景 · 家长(Parent)
|
|
# 用户使用场景 · 家长(Parent)
|
|
|
|
|
|
|
|
> 来源:`AGENTS.md`(双角色、五维能量、测评订单、家庭邀请二维码、成员关系编辑、健康报告主链路、饮食推荐、LangGraph AI)、`API_REFERENCE.md`、`cfc-frontend/pages/*`、黑盒方案 P-01~P-18。
|
|
> 来源:`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`。
|
|
- **关联需求/设计**:`PointsController`、`GrowthController` `/api/growth`。
|
|
|
- **关联用例**:TC-P-17
|
|
- **关联用例**: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` 对应专项段。
|