Эх сурвалжийг харах

docs(tdd): 测评-方案 43 SC + 报告闭环 23 SC 开工包(B-1/B-2 配套批次)

B-1 开工包:
- 归属 P0「测评-方案」43 条 SC(测评 12 / 方案 21 / 规划师绑定 5 / 孩子执行 3 / AI 教练 3)
- 建议能力键 44 个(全量去重,无重叠)
- 定契约接口范围已锚定到 origin/cfclub 现存的 DanAssessmentController / HealthPlanController / OrchestrationController / GuidePlanReviewController / PlanReviewController 等端点
- 风险注记 5 项(Orchestration flow 语义待明确、T-26/T-27 跨域拆分、H-02 无既有 Controller、LangGraph 跨仓、X 全链路后置)

B-2 开工包:
- 归属 P0「报告闭环」23 条 SC
- 19 个去重能力键(含 health.report.* / dan.assessment.* / admin.reportParse.* / coach.* / misc.* / provider.*)
- 风险注记 3 项(LangGraph 报告解读依赖、X 全链路后置、P-91 五维引擎解耦)
Agnes Agent 6 өдөр өмнө
parent
commit
ac13293168

+ 131 - 0
docs/tdd/orchestration/dan-plan-kickoff-20261106.md

@@ -0,0 +1,131 @@
+# 测评-方案批次 · 开工包(43 SC)
+> 归属:契约补建计划 P0「测评-方案」· 生成 2026-11-06 22:30
+> 数据源:sc-key-map.md(origin/cfclub,236 全量登记)· 端点核对:cfc-backend controller 源码(origin/cfclub 工作树)
+
+## 批次定位
+家长「测评 → 方案 → 任务」核心主线,是全产品最高频链路;本批 43 个 SC 均无合法能力键(台账「对应能力键」列全为 `—`),需先定契约才能 `--add-task` 入池。
+覆盖四段:**DAN 测评(下单/支付/额度/预约/录入/结果)→ AI 方案(生成/重生成/编辑/确认/发布/版本)→ 规划师侧(审核/激活/编辑/归档/套餐项)→ 孩子执行(打卡进度/通知/五维增长)**,外加 3 个跨角色全链路。
+
+## SC 明细
+
+| SC | 角色 | 场景标题 | 建议能力键 | 契约接口范围 | 依赖 Controller |
+|---|---|---|---|---|---|
+| SC-P-33 | 家长 | 购买测评套餐/下单 | dan.assessment.orderCreate | /api/package/order/create、/api/package/price、/api/guide/guide-packages | PackagePurchaseController、GuideController |
+| SC-P-34 | 家长 | 测评订单支付 | dan.assessment.orderPay | /api/payment/wechat/create、/api/payment/order/status/{orderNo} | PaymentController |
+| SC-P-35 | 家长 | 获得测评额度 | dan.assessment.quotaAcquire | /api/dan-assessment/points-config、/api/dan-assessment/family/enable | DanAssessmentController |
+| SC-P-36 | 家长 | 创建预约(消耗额度)⭐ | dan.assessment.appointmentCreate | /api/dan-assessment/appointment/create | DanAssessmentController |
+| SC-P-37 | 家长 | 查看预约状态 | dan.assessment.appointmentView | /api/dan-assessment/appointment/user | DanAssessmentController |
+| SC-P-38 | 家长 | 取消预约(越权校验) | dan.assessment.appointmentCancel | /api/dan-assessment/appointment/cancel | DanAssessmentController |
+| SC-P-32 | 家长 | 选择规划师 | guide.parent.selectPlanner | /api/package/available-guides、/api/guide/parent-invite/accept | PackagePurchaseController、GuideController |
+| SC-P-58 | 家长 | 购买会员/套餐 | membership.parent.purchase | /api/membership/*、/api/package/order/create | MembershipController、PackagePurchaseController |
+| SC-P-74 | 家长 | 解绑/重新分配规划师 | guide.parent.unbind | /api/guide/families/unbind、/api/guide/families/bound-families | GuideFamilyTaskController |
+| SC-P-40 | 家长 | 生成 AI 方案(一键生成)⭐ | plan.parent.generate | /api/health/plan/generate | HealthPlanController |
+| SC-P-41 | 家长 | 方案分板块重生成 | plan.parent.regenerateSection | /api/health/plan/regenerate-section | HealthPlanController |
+| SC-P-42 | 家长 | 方案编辑/调整 | plan.parent.edit | /api/health/plan/save | HealthPlanController |
+| SC-P-43 | 家长 | 查看生成的方案 | plan.parent.view | /api/health/plan/detail、/api/health/plan/list | HealthPlanController |
+| SC-P-44 | 家长 | 确认方案(送审/家长确认)⭐ | plan.parent.confirm | /api/health/plan/confirm、/api/health/plan/pending-review/approve | HealthPlanController |
+| SC-P-45 | 家长 | 方案直接发布 | plan.parent.publish | /api/health/plan/confirm、/api/orchestration/flow/publish | HealthPlanController、OrchestrationController |
+| SC-P-46 | 家长 | 激活方案生成任务(生成任务)⭐ | plan.parent.activateTasks | /api/health/plan/tasks、/api/orchestration/execution/start | HealthPlanController、OrchestrationController |
+| SC-P-47 | 家长 | 查看方案下任务列表 | plan.parent.taskList | /api/health/plan/tasks | HealthPlanController |
+| SC-P-48 | 家长 | 方案版本/历史 | plan.parent.history | /api/health/plan/detail、/api/health/plan/pending-review/list | HealthPlanController |
+| SC-P-81 | 家长 | 方案/任务草稿保存与恢复 | plan.parent.draft | /api/health/plan/save、/api/orchestration/flow/save | HealthPlanController、OrchestrationController |
+| SC-T-01 | 成长规划师 | 规划师登录 + 切回家长 | auth.guide.login | /api/guide/register、/api/guide/application/submit(+ token 切换) | GuideManagementController |
+| SC-T-04 | 成长规划师 | 方案审核列表 + 批准 | plan.guide.reviewList | /api/guide/families/{familyId}/plans/pending、/{planId}/approve | GuidePlanReviewController |
+| SC-T-05 | 成长规划师 | 激活方案拆任务(幂等)⭐ | plan.guide.activateTask | /api/guide/plans/activate、/api/guide/plans/detail | PlanReviewController |
+| SC-T-07 | 成长规划师 | 录入测评结果触发方案 ⭐ | dan.assessment.recordComplete | /api/dan-assessment/record/create、/api/dan-assessment/record/complete | DanAssessmentController |
+| SC-T-09 | 成长规划师 | 测评预约确认(状态守卫) | dan.assessment.appointmentConfirm | /api/dan-assessment/appointment/confirm | DanAssessmentController |
+| SC-T-10 | 成长规划师 | 测评预约完成/未到 | dan.assessment.appointmentComplete | /api/dan-assessment/appointment/complete | DanAssessmentController |
+| SC-T-13 | 成长规划师 | 规划师视角数据隔离 | guide.family.dataIsolation | /api/data-permission/*、/api/guide/families/my-families | DataPermissionController、GuideFamilyQueryController |
+| SC-T-14 | 成长规划师 | 方案编辑(规划师侧) | plan.guide.edit | /api/guide/families/{familyId}/plans/{planId}/update | GuidePlanReviewController |
+| SC-T-15 | 成长规划师 | 套餐任务项管理 | plan.guide.taskItemManage | /api/guide/training-plans/items/*、/api/packages/* | TrainingPlanController、TaskTemplatePackageController |
+| SC-T-22 | 成长规划师 | 方案归档 | plan.guide.archive | /api/orchestration/flow/archive | OrchestrationController |
+| SC-T-25 | 成长规划师 | 舌诊/情绪测评录入(规划师) | dan.assessment.tongueEmotionInput | /api/guide/assessment/family/{familyId}、/api/mind/emotion/* | GuideAssessmentController、MindController |
+| SC-T-26 | 成长规划师 | 精准营养方案制定 | plan.guide.nutritionPlan | /api/nutrition/profile、/api/nutritionist/* | UserNutritionProfileController、NutritionistController |
+| SC-T-27 | 成长规划师 | 家庭天盘解读(规划师) | plan.guide.tianpanReading | /api/tianpan/* | TianpanController |
+| SC-T-28 | 成长规划师 | AI 方案内容安全复核 | plan.guide.contentSafeReview | /api/content/*、/api/guide/plans/review | ContentFilterController、PlanReviewController |
+| SC-T-30 | 成长规划师 | 测评录入触发五维维度变化 | dan.assessment.triggerFiveDim | /api/dan-assessment/record/complete + 五维引擎 | DanAssessmentController + dimension 线 |
+| SC-C-08 | 孩子 | 方案打卡进度 | task.child.checkinProgress | /api/daily/checkin/list、/api/health/plan/tasks | DailyCheckinController、HealthPlanController |
+| SC-C-19 | 孩子 | 查看家人/规划师消息通知 | notification.child.list | /api/notification/list、/api/notification/read | UserNotificationController |
+| SC-C-25 | 孩子 | 方案任务打卡触发五维增长 | task.child.checkinTriggerFiveDim | /api/daily/checkin/create + 五维引擎 | DailyCheckinController + dimension 线 |
+| SC-B-09 | AI成长教练 | 教练转接成长规划师 | coach.handoff.planner | LangGraph 转接 graph、/api/guide/parent-invite/generate | cfc-langgraph、GuideController |
+| SC-B-12 | AI成长教练 | 同步规划师建议主动跟进 | coach.followup.syncPlanner | LangGraph 跟进 graph、/api/guide/messages/send | cfc-langgraph、TeacherMessageController |
+| SC-H-02 | 真人管家 | 一对一家长陪跑 | butler.parent.accompany | 无既有 Controller(人工服务流程,需新建服务记录/工单契约) | butler 域(待建) |
+| SC-X-01 | 跨角色 | 测评全链路 ⭐ | dan.assessment.closedLoop | 下单→支付→额度→预约→录入→结果 全链路 | 全链路 |
+| SC-X-06 | 跨角色 | 方案激活执行闭环 | plan.closedLoop.activateExecute | 方案确认→激活→拆任务→执行 全链路 | 全链路 |
+| SC-X-09 | 跨角色 | AI 方案送审闭环 | plan.closedLoop.reviewRoundTrip | 生成→送审→规划师批/驳→重生成 全链路 | 全链路 |
+
+## 建议能力键去重(44 个,43 SC 无重叠)
+
+**测评(12)**
+- `dan.assessment.orderCreate`
+- `dan.assessment.orderPay`
+- `dan.assessment.quotaAcquire`
+- `dan.assessment.appointmentCreate`
+- `dan.assessment.appointmentView`
+- `dan.assessment.appointmentCancel`
+- `dan.assessment.appointmentConfirm`
+- `dan.assessment.appointmentComplete`
+- `dan.assessment.recordComplete`
+- `dan.assessment.tongueEmotionInput`
+- `dan.assessment.triggerFiveDim`
+- `dan.assessment.closedLoop`
+
+**方案(21)**
+- `plan.parent.generate`
+- `plan.parent.regenerateSection`
+- `plan.parent.edit`
+- `plan.parent.view`
+- `plan.parent.confirm`
+- `plan.parent.publish`
+- `plan.parent.activateTasks`
+- `plan.parent.taskList`
+- `plan.parent.history`
+- `plan.parent.draft`
+- `plan.guide.reviewList`
+- `plan.guide.activateTask`
+- `plan.guide.edit`
+- `plan.guide.taskItemManage`
+- `plan.guide.archive`
+- `plan.guide.nutritionPlan`
+- `plan.guide.tianpanReading`
+- `plan.guide.contentSafeReview`
+- `plan.closedLoop.activateExecute`
+- `plan.closedLoop.reviewRoundTrip`
+
+**规划师绑定 / 会员(5)**
+- `guide.parent.selectPlanner`
+- `guide.parent.unbind`
+- `guide.family.dataIsolation`
+- `membership.parent.purchase`
+- `auth.guide.login`
+
+**孩子执行 / 通知(3)**
+- `task.child.checkinProgress`
+- `task.child.checkinTriggerFiveDim`
+- `notification.child.list`
+
+**AI 教练 / 真人管家(3)**
+- `coach.handoff.planner`
+- `coach.followup.syncPlanner`
+- `butler.parent.accompany`
+
+## 开工步骤
+1. **定契约**(按子域分 4 组并行评审,契约互不冲突):
+   - 组 A 测评:`DanAssessmentController`(预约 create/confirm/complete/cancel/user、record/create+complete、points-config、family/enable)+ `PackagePurchaseController`(order/create)+ `PaymentController`(wechat/create、order/status)。重点写清「额度扣减」与「预约状态机」(待确认→已确认→已完成/未到/已取消)。
+   - 组 B 方案:`HealthPlanController`(generate/regenerate-section/save/confirm/list/detail/tasks/pending-review/*)+ `OrchestrationController`(flow/save|publish|archive、execution/start)。重点写清「家长确认 vs 规划师审核」双通道与**幂等激活**。
+   - 组 C 规划师侧:`GuidePlanReviewController`、`PlanReviewController`(activate)、`TrainingPlanController`(items/*)、`GuideFamilyTaskController`(unbind)、`GuideFamilyQueryController`(my-families)、`DataPermissionController`。重点写清**规划师数据隔离边界**。
+   - 组 D 孩子/AI:`DailyCheckinController`(list/create)、`UserNotificationController`、LangGraph 转接/跟进 graph、butler 服务记录(新建契约)。
+2. 契约合入 `origin/cfclub` → 逐组记录 sha(一组一 sha,便于分级 `--design`)。
+3. 映射能力键:`--add-task <key> --requirement "SC-xxx:<场景标题>(tests/user-scenarios/应用场景总览.md)" --design <契约 sha>`。
+   - ⚠ `--design` 必须标注「契约已在 origin/cfclub;实现若在 feature 分支须显式说明、不得假定包路径」。
+4. 巡检派发 → 实现/测试 → 三类流证据(正常/异常/权限)→ 台账「跑通状态」标已跑通。
+5. 每组闭环后回填 sc-key-map.md「对应能力键 / 键阶段 / 跑通状态 / 三类流证据」四列。
+
+## 前置/风险
+- **量最大(43/216 = 20%)**:建议按 A→B→C→D 顺序推进,A 组(12 个测评)是主线入口,先打通可解锁 X-01。
+- **SC-P-45 / P-46 / P-81 / T-22 依赖 OrchestrationController 的 flow/execution 语义**:该控制器端点齐全但**编排语义(flow 与 plan 的关系)尚无用例定义**,定契约前须先明确「flow = 方案编排实例」还是「通用编排引擎」,否则能力键名与实现会错位。属本批最大不确定性。
+- **SC-T-26 / T-27 跨域**:营养方案走 `nutrition` 线、天盘走 `tianpan` 线,二者均非「方案」域原生能力,契约需在各自 Controller 补齐后由 plan 侧聚合,建议**拆分独立任务**、不并入 plan.guide 单键。
+- **SC-B-09 / B-12 依赖 LangGraph(本地 9000 服务)**:契约在 cfc-langgraph,与本批后端解耦,可并行但**不可与后端同批派发**(跨仓)。
+- **SC-H-02 真人管家无既有 Controller**:需先确认「陪跑」是人工工单还是系统能力;若无实现计划,登记为**契约待定**不强行建伪键。
+- **SC-X-01 / X-06 / X-09 是跨角色全链路**:必须等所属正向 SC 全部闭环后才能取证,放本批最后,且三类流要覆盖「家长发起 / 规划师介入 / 孩子执行」三视角。
+- **SC-T-30 / C-25 涉及五维引擎**:归因写入在 dimension/energy 线(P0 五维能量批),能力键的**两类流证据需引用五维能量批的契约 sha**,避免重复建键。

+ 66 - 0
docs/tdd/orchestration/report-closedloop-kickoff-20261106.md

@@ -0,0 +1,66 @@
+# 报告闭环批次 · 开工包(23 SC)
+> 归属:契约补建计划 P0「报告闭环」· 生成 2026-11-06 22:11
+
+## 批次定位
+家长高频入口(报告上传/解析/趋势),且已有 health.report.* 契约链(upload/createReport YELLOW),本批补全剩余 + 跨角色闭环。
+
+## SC 明细
+
+| SC | 角色 | 场景标题 | 建议能力键 | 契约接口范围 | 依赖 Controller |
+|---|---|---|---|---|---|
+| SC-A-02 | 平台运营 | 报告解析中台(类型/聚类) | admin.reportParse.typeList | /api/admin/report-parser/*、/api/admin/report-parse/* | ReportParserAdminController/ReportParseAdminController |
+| SC-A-16 | 平台运营 | 报告解析自学习/未知类型标注 | admin.reportParse.selfLearn | /api/admin/report-parser/fingerprints/* | ReportParserAdminController |
+| SC-B-04 | AI成长教练 | 成长报告智能解读 | coach.growthReport.interpret | LangGraph 报告解读 graph | cfc-langgraph |
+| SC-B-11 | AI成长教练 | 报告细节追问 | coach.growthReport.ask | LangGraph 追问 graph | cfc-langgraph |
+| SC-C-06 | 孩子 | 查看能量与报告(只读) | health.report.view | /api/health/report/* | HealthReportController |
+| SC-C-07 | 孩子 | 查看 DAN 测评报告 | dan.assessment.viewReport | /api/assessment/* 详情 | AssessmentController |
+| SC-P-24 | 家长 | 多报告管理/对比 | health.report.compare | /api/health/report/compare | HealthReportController |
+| SC-P-25 | 家长 | 报告趋势查看 | health.report.trend | /api/health/report/trend | HealthReportController |
+| SC-P-26 | 家长 | 基于报告饮食推荐 | health.report.dietRecommend | /api/health/report/diet | HealthReportController+饮食推荐 |
+| SC-P-39 | 家长 | 查看测评结果(DAN 报告) | dan.assessment.viewResult | /api/assessment/result/* | AssessmentController |
+| SC-P-67 | 家长 | 报告代传(家长替孩子/他人代传) | health.report.proxyUpload | /api/health/report/proxy-upload | HealthReportController |
+| SC-P-82 | 家长 | 全局搜索(报告/方案/任务/商品) | misc.globalSearch | /api/search/global | SearchController |
+| SC-P-84 | 家长 | 分享报告/方案给家人或规划师 | health.report.share | /api/health/report/share | HealthReportController |
+| SC-P-91 | 家长 | 健康报告入库刷新五维评分 | health.report.refreshFiveDim | /api/health/report/refresh-dim | HealthReportController+五维引擎 |
+| SC-S-09 | 商品服务商 | 报告解析服务接入(对接解析中台) | provider.reportParse.connect | /api/provider/report-parse/connect | ProviderController |
+| SC-T-03 | 成长规划师 | 代传报告 + 确认入库(上传报告) | health.report.proxyUpload | /api/health/report/proxy-upload | HealthReportController |
+| SC-T-11 | 成长规划师 | DAN 报告上传与解析 | dan.assessment.uploadReport | /api/assessment/upload | AssessmentController |
+| SC-T-12 | 成长规划师 | DAN 八类报告查看 | dan.assessment.viewReport | /api/assessment/report/* | AssessmentController |
+| SC-T-21 | 成长规划师 | 报告对比分析 | health.report.compare | /api/health/report/compare | HealthReportController |
+| SC-T-23 | 成长规划师 | 报告代传(规划师代客户传) | health.report.proxyUpload | /api/health/report/proxy-upload | HealthReportController |
+| SC-X-02 | 跨角色 | 报告闭环 | health.report.closedLoop | 报告上传→解析→入库→查看全链路 | 全链路 |
+| SC-X-10 | 跨角色 | 报告对比趋势闭环 | health.report.trendClosedLoop | 多报告对比→趋势→重算 | 全链路 |
+| SC-X-13 | 跨角色 | 报告代传跨角色闭环 | health.report.proxyClosedLoop | 家长/规划师代传→归属校验 | 全链路 |
+
+## 建议能力键去重
+
+- `admin.reportParse.selfLearn`
+- `admin.reportParse.typeList`
+- `coach.growthReport.ask`
+- `coach.growthReport.interpret`
+- `dan.assessment.uploadReport`
+- `dan.assessment.viewReport`
+- `dan.assessment.viewResult`
+- `health.report.closedLoop`
+- `health.report.compare`
+- `health.report.dietRecommend`
+- `health.report.proxyClosedLoop`
+- `health.report.proxyUpload`
+- `health.report.refreshFiveDim`
+- `health.report.share`
+- `health.report.trend`
+- `health.report.trendClosedLoop`
+- `health.report.view`
+- `misc.globalSearch`
+- `provider.reportParse.connect`
+
+## 开工步骤
+1. 定契约:核对上述接口路径/请求响应契约(API_REFERENCE.md,缺则补接口文档)。
+2. 契约合入 origin/cfclub → 记录 sha。
+3. 映射能力键:--add-task <key> --requirement <SC> --design <sha>。
+4. 巡检派发 → 实现/测试 → 三类流证据 → 台账标已跑通。
+
+## 前置/风险
+- SC-B-04/B-11 依赖 LangGraph 报告解读 graph(本地 9000 服务),契约在 cfc-langgraph。
+- SC-X-02/10/13 是跨角色全链路,需多角色协作,放本批最后。
+- SC-P-91 依赖五维引擎(dimension/energy 线),与本批解耦,可并行。