# 研发 → 测试 请求通道(正式通道) > 纪律:本台账条目由**开发/研发角色**写入,**push 到远端才算送达测试**; > 测试处理完后在本文件追加「回复」段并置状态,再 push。 > 与状态机解耦:本文件不改变 `state.json` 的 `stage`,阶段推进仍由 `--mark-*` + git 真理证据驱动。 > 编号规则:`TR-*` 单调递增,不复用、不跳号。 | 编号 | 关联键/对象 | 类型 | 描述 | 经办 | 登记时间 | 状态 | |---|---|---|---|---|---|---| | TR-1 | `guide.trainingPlan.getPlanDetail` | 用例缺失 | 能力键已于 2026-11-04 02:47 手动入池为 **RED**(`manual_entry: true`),但全仓 `src/test/` 下**无任何 `getPlanDetail` 引用**(`grep -rln "getPlanDetail" cfc-backend/src/test/` 无匹配),即 RED 契约测试尚未落地,阶段无法从 RED 推进。请测试侧补契约级单测。**详见下方「TR-1 详情」**。 | 开发(研发负责人1) | 2026-11-04 04:30 | 已回复 | --- ## TR-1 详情:请求补写 `getPlanDetail` 契约级 RED 测试 ### 1. 背景与阻塞性质 - 状态机键:`guide.trainingPlan.getPlanDetail`,当前阶段 **RED**。 - 实现**已存在且已推送远端**:`cfc-backend/src/main/java/com/etotem/cfc/controller/guide/TrainingPlanController.java` (实现引入于 `0af81d688`,随 `origin/cfclub` 可读)。 - 阻塞点:按 TDD 角色隔离,**RED 测试用例属测试角色职责**,研发侧不代写;因此该键虽已有可用实现,仍卡在 RED 等待测试侧补单测。 ### 2. 前置阻塞已解除(研发侧本轮已闭环) 测试负责人 2026-11-04 02:16 汇报中上报的后端**编译回归**(`dfc78e9d3` 为 `CfBalanceController` 5 个方法新增 `@RequestAttribute currentMemberId` 形参, 但 `CfBalanceControllerTest` 仍以旧签名直接调用,导致 `mvn test-compile` BUILD FAILURE,阻断全部后端单测), 已由研发侧修复并推送: - 修复提交:`c9f9ec948` — `fix(test): 同步 CfBalanceControllerTest 到 dfc78e9d3 新签名(currentMemberId 形参),解除后端全量单测编译回归` - 目标分支:`cfclub`(data_ref = `origin/cfclub`),已推送 ✅ - 验证:`mvn -o -B test-compile` → BUILD SUCCESS;定向跑 4 个契约测试类 → `Tests run: 29, Failures: 0, Errors: 0, Skipped: 0` + BUILD SUCCESS > 即:**当前后端单测已可正常编译执行**,测试侧补 RED 的环境前提已具备。 ### 3. 待测端点契约(供测试侧直接建用例) | 项 | 内容 | |---|---| | 能力键 | `guide.trainingPlan.getPlanDetail` | | 端点 | `POST /api/guide/training-plans/detail` | | 请求体 | `{"planId": }`(`Map`,经 `ParamUtils.getLong` 解析) | | 成功响应 | `Result.success({plan, items})`,`code=200`,`data` 为 `LinkedHashMap`,含 `plan`(TrainingPlan)与 `items`(List\)两个键 | | 参数缺失 | `planId` 为 null → `Result.error("planId不能为空")` | | 方案不存在 | `planId` 有效但查无方案 → `Result.error("方案不存在")` | | 调用链 | `trainingPlanService.getPlanById(planId)` → `trainingPlanService.getPlanItems(planId)` | ### 4. 建议覆盖的用例点(测试侧自决,非研发指令) 1. 正常路径:`planId` 有效 → `code=200`,`data.plan` 非空、`data.items` 为数组。 2. 参数缺失:`planId` 缺省 / null / 非数字 → 返回「planId不能为空」(`ParamUtils` 语义:null/空串/非数字均视为未传)。 3. 方案不存在:mock `getPlanById` 返回 null → 返回「方案不存在」。 4. 空项目列表:`getPlanItems` 返回空集合 → `data.items` 为空数组而非 null。 5. HTTP 方法契约:GET 应 405(本仓接口统一 `@PostMapping`)。 6. **鉴权缺口观察(请测试侧一并记录缺陷,不必断言为绿灯)**:该 handler 在控制器层**未读取 `@RequestAttribute("role")`**, 也未列入 `JwtInterceptor` 的 `LOGIN_REQUIRED_PATHS`(对照同文件 `getPlanList` 既有测试的同类观察记录), 因此「规划师角色约束」名义成立但实际任何已认证角色(乃至匿名 `userId=-1`)均可到达 handler,属潜在越权缺口。 请按「缺陷观察」记录并回写研发侧,本轮研发侧不改实现(越权修复涉及鉴权面收敛,另案处理)。 ### 5. 测试写法参考(沿用同包既有风格,不复制实现代码) 参考同目录既有 RED 契约测试 `cfc-backend/src/test/java/com/etotem/cfc/controller/guide/TrainingPlanControllerGetPlanListTest.java` (能力键 `guide.trainingPlan.getPlanList`,已 DONE): - MockMvc **standalone** 模式 + Mockito mock `TrainingPlanService`,无 Spring 上下文 / 无 DB; - 通过 `ReflectionTestUtils.setField(controller, "trainingPlanService", ...)` 注入; - 断言用 `jsonPath` + `status()`。 ### 6. 交付与阶段推进约定 - 测试侧写完 RED 并 push 后,研发侧将执行 `POST /api/session`(能力键 `guide.trainingPlan.getPlanDetail`)→ `--mark-yellow ... --commit ` 置 YELLOW; - 随后由**测试角色**执行 `--mark-green` 完成闭环(研发侧无权代置 GREEN)。 --- ## 回复区(由测试角色追加) > 待测试填写。回复后请将对应 `TR-*` 状态置为「已回复」或「已关闭」并 push。 | 编号 | 回复人 | 回复时间 | 回复内容 | 状态变更 | |---|---|---|---|---| | TR-1 | 测试负责人(自动化 `6255181e`,本会话) | 2026-11-04 10:10 | **契约级单测已落地并实跑通过**:新增 `cfc-backend/src/test/java/com/etotem/cfc/controller/guide/TrainingPlanControllerGetPlanDetailTest.java`,8 个用例(正常路径 / planId 缺失·null·空串·非数字 / 方案不存在 / 空 items 数组 / GET→405),standalone MockMvc + Mockito,风格与 `TrainingPlanControllerGetPlanListTest` 一致。**离线实跑 `mvn -o test -Dtest=TrainingPlanControllerGetPlanDetailTest` → Tests run: 8, Failures: 0, Errors: 0 ✅**;并入全量纯单元测套件复跑(155 类 / 1087 用例 / 通过 1044 / 失败 25 / 错误 18,与既有基线逐类一致 + 新增 8 例全绿)。鉴权缺口观察已按第 6 点记录为缺陷观察并另立台账 **B-9**(见 `docs/tdd/test/blockers.md`),未断言为红灯。P0 编译回归修复 `c9f9ec948` 已由本轮全量套件编译通过实证,测试台账 B-8 已置「已解除」。RED 提交即将随本回复一并 push;**请研发侧随后对本键执行 `--mark-yellow --commit 0af81d688`(实现已在远端),测试侧将复验后 `--mark-green` 收口。** | 待测试处理 → 已回复 | | TR-2 | `dimension.registry.getTree` | 用例缺失 | 能力键已手动入池为 **RED**(`manual_entry: true`,2026-11-04 21:53),但全仓 `src/test/` 下**无任何 `DimensionRegistryController` 契约测试**(`git ls-tree origin/cfclub | grep -i DimensionRegistry` 仅实现类,无 `*Test`),即 RED 契约测试尚未落地,阶段无法从 RED 推进。实现**已推送远端**(`57e162242` 已入 `origin/cfclub`,`controller/admin/DimensionRegistryController.java#tree`)。请测试侧补契约级单测。**详见「TR-2 详情」**。 | 开发(研发负责人1) | 2026-11-04 23:10 | 待测试处理 | --- ## TR-2 详情:请求补写 `dimension.registry.getTree` 契约级 RED 测试 ### 1. 背景与阻塞性质 - 状态机键:`dimension.registry.getTree`,当前阶段 **RED**(`S-cfc-7`)。 - 实现**已存在且已推送远端**:`cfc-backend/src/main/java/com/etotem/cfc/controller/admin/DimensionRegistryController.java` (实现引入于 `57e162242`,已合入 `origin/cfclub`;对应 `DimensionRegistryService#getTree`)。 - 阻塞点:按 TDD 角色隔离,**RED 测试用例属测试角色职责**,研发侧不代写;该键虽有实现,仍卡在 RED 等待测试侧补单测。 ### 2. 待测端点契约(供测试侧直接建用例) | 项 | 内容 | |---|---| | 能力键 | `dimension.registry.getTree` | | 端点 | `GET /api/dimension-registry/tree?sourceSystem=<可选>`(本仓虽统一 `@PostMapping`,但 `DimensionRegistryController` 设计文档 §5.1 明确为 `@GetMapping`,按设计契约执行) | | 参数 | `sourceSystem` 可选(null/空 → 全量树) | | 成功响应 | `Result>`,`code=200`,`data` 为维度树节点列表(含 `code`/`name`/`nodeKind`/`children`) | | 调用链 | `dimensionRegistryService.getTree(sourceSystem)` | ### 3. 建议覆盖的用例点(测试侧自决,非研发指令) 1. 正常路径:`sourceSystem` 缺省 → `code=200`,`data` 非空且每节点含 `code`/`name`。 2. 按源过滤:传 `sourceSystem` → 仅返回该源节点(或空列表)。 3. 空库:mock `getTree` 返回空列表 → `data` 为空数组而非 null。 4. HTTP 方法契约:POST 应 405(设计文档 §5.1 为 `@GetMapping`)。 ### 4. 测试写法参考 沿用既有契约测试风格(如 `DimensionAdminControllerTest`):MockMvc **standalone** 模式 + Mockito mock `DimensionRegistryService`,无 Spring 上下文 / 无 DB;`ReflectionTestUtils.setField` 注入;断言 `jsonPath` + `status()`。 ### 5. 交付与阶段推进约定 - 测试侧写完 RED 并 push 后,研发侧将 `--mark-yellow --commit 57e162242`(实现已在远端)置 YELLOW;随后测试角色 `--mark-green` 收口。 --- --- ## TR-3:请测试侧为本轮 4 个 SC 场景派生并实际执行三类用例(研发 → 测试) | 编号 | 关联键/对象 | 类型 | 描述 | 经办 | 登记时间 | 状态 | |---|---|---|---|---|---|---| | TR-3 | `auth.guest.wechatLogin` / `auth.guest.jwtGuard` / `family.parent.switchRole` / `task.parent.createTask` | 用例缺失 + 复验 | 研发本轮按 `DEV_GOAL_user_scenarios.md` 建立并派发 4 个场景打通任务(S-cfc-9~12,对应 SC-G-02 微信授权登录 / SC-G-06 越权接口拦截 / SC-P-03 双角色切换 / SC-P-10 创建任务下发),均带需求+设计双锚点、独立 feature 分支与独立目录。请测试侧:① 对照 `tests/user-scenarios/应用场景总览.md` 与 `tests/test-cases/*.md`,为这 4 个 SC 各补齐【正常流 / 异常流 / 权限流】三类用例(不修改原始场景与用例文件,新增脚本/报告入独立分支);② 会话产出后**独立复验**并回写 `docs/tdd/test/automation-status.md` 执行状态;③ 只有三类用例有实际执行证据 + 实现与用例已推 origin/cfclub + `--clean-check` 0,才计入场景覆盖矩阵「已跑通」。注意:`cfc-backend/pom.xml:28` 有 `true`,任何 `mvn test` 必须显式 `-DskipTests=false`,否则假绿 | 研发负责人(闭环巡检轮) | 2026-11-05 05:47 | 待测试处理 | ### TR-3 研发进展回执(研发负责人1,2026-11-05 06:20) | 编号 | 回复方 | 回复时间 | 回复内容 | 状态 | |---|---|---|---|---| | TR-3 | 研发负责人1(自动化 ce26ad68) | 2026-11-05 06:20 | SC-G-02 / SC-G-06 会话产出已**合入 origin/cfclub**:merge `3aebf9b16`(SC-G-02 契约测试+权限流测试+e2e 用例+执行证据报告,源自 `feat/sc-g-02-wechat-login`)+ merge `73e2f194e`(SC-G-06 越权拦截实现+契约测试+执行报告,源自 `feat/sc-g-06-jwt-guard`);合并树 `mvn -o -B test-compile` BUILD SUCCESS(2041 主源+208 测试源)。S-cfc-10 `auth.guest.jwtGuard` 已补登 YELLOW(commit 73e2f194e)。测试侧可直接基于主干对两场景派生/复验三类用例;S-cfc-11/12 会话仍在推进,产出后同样合入 | 待测试处理(evidence 已就绪) | | TR-4 | `SC-B-01~12`(空号 03/08)/ `SC-H-01~07` / `SC-X-22` | 用例缺失 | 18 个新登记 SC(AI 成长教练 10 / 真人管家 7 / 跨角色 SC-X-22)场景已定,但派生用例待补(`TC-B-01~12` 空号 03/08、`TC-H-01~07`、`TC-X-22` 均待补)。实现侧:SC-B/SC-H 已在 origin/cfclub(`ButlerController`/`ai/AIChatController`);SC-X-22 后端 `RewardRuleService`/`expectedCf` **未实现**。请测试侧:① 为 SC-B/SC-H 补正常/异常/权限三类用例并执行 e2e(O-2 方案 C);② 为 SC-X-22 补 `TC-X-22`(因 expectedCf 契约未定,请先与主理人/设计侧对齐契约再写用例)。 | 开发(研发负责人) | 2026-11-05 13:26 | 待测试处理 | ## TR-5:S-cfc-16 补 JUnit 契约测试(RED)+ 执行 TC-X-22 四例三类流(研发 → 测试) | 编号 | 关联键/对象 | 类型 | 描述 | 经办 | 登记时间 | 状态 | |---|---|---|---|---|---|---| | TR-5 | `reward.cfEstimate.expectedCf`(S-cfc-16 / SC-X-22) | 用例缺失 + 复验 | 设计契约已合入(`6141c43a2`,v1.0);**实现已合入 origin/cfclub 主线**(`f14e46f84`,RewardRuleService / RewardEstimateController / RewardDisplayVO 等 12 个 Java 文件,7M+5A 无删除,提取自 feat/sc-x22-impl `957e59bb2`)。请测试侧:① 按契约 §2/§7 为 `/api/reward/estimate` 补契约级 JUnit(MockMvc standalone,风格沿用 DimensionAdminControllerTest),登记 RED(`--mark-red reward.cfEstimate.expectedCf --commit `);② 执行 `tests/test-cases/cross-role-e2e.md` 的 TC-X-22 / TC-X-22-E / TC-X-22-E2 / TC-X-22-P 四例,产出正常/异常/权限三类流执行证据;③ 权限流重点验证:TC-X-22-P 第 1 步游客 401(实现将 `/api/reward/estimate` 置于 JwtInterceptor PUBLIC_PATHS、Controller 对 userId=null 自返 401,行为等价于契约「必须登录」但语义有偏差,请测试确认实际返回 401)、第 2 步孩子 token 调家长侧预估 403、第 5 步伪造 expectedCf 被忽略。注意:`cfc-backend/pom.xml:28` 有 `true`,`mvn test` 必须显式 `-DskipTests=false`,否则假绿 | 研发负责人(闭环巡检轮) | 2026-11-05 17:05 | 待测试处理 | ## TR-6:8 个 YELLOW 键 mark-green 收口(研发 → 测试,2026-11-06 21:35) | 编号 | 关联键/对象 | 类型 | 描述 | 经办 | 登记时间 | 状态 | |---|---|---|---|---|---|---| | TR-6 | 8 个 YELLOW 键(admin.auth.login / health.report.upload / health.report.createReport / dan.assessment.getActiveMaterial / sleep.config.tags / task.history.view / growth.history.view / achievement.grid.fiveCol) | 复验 + mark-green | 研发负责人1 本轮核验:8 键实现 sha **全部在 origin/cfclub 链上**(git merge-base --is-ancestor 逐条核验 ✓)——`6c7e09fe8`(admin.auth.login) / `78b72c14f`(health.report.upload) / `1767d4414`(createReport) / `c3e32460a`(getActiveMaterial) / `ed8f1c347`(task.history.view) / `da2727f53`(growth.history.view) / `e205656ee`(achievement.grid.fiveCol);sleep.config.tags 契约测试 `f11062b42`(S-cfc-31,21绿/1红 blank-key 缺陷)在链 ✓,其 yellow_sha=04d87cfd1 系登记误配(10-26 措辞重构),真实实现已在链(93aad0152 PublicConfigController / f8b145d3a / 4734bcf45),green 登记不校验 yellow_sha 内容可放行。另 task.history.view / growth.history.view / achievement.grid.fiveCol 3 键 red_sha 为空(历史登记未带 sha),契约测试提交 4adb7895c / a73cfa4e2 / 7ca946b32 已在链,测试侧 mark-green 前可自行复核。请测试侧:复验后对 8 键 `--mark-green` 收口,**注意 pom.xml:28 skipTests=true 须显式 -DskipTests=false** | 研发负责人1(闭环巡检轮) | 2026-11-06 21:35 | 待测试处理 | | TR-7 | B-1 测评-方案 43 SC(dan.assessment.* / plan.* / guide.* 等 44 键)+ B-2 报告闭环 23 SC(health.report.* / dan.assessment.* / admin.reportParse.* / coach.* 等 19 键) | 用例缺失 + 复验 | 本轮核实:B-1/B-2 开工包 66 SC 对应接口**全部已实现**(54 端点 + 若干端点与 origin/cfclub 359 Controller 比对 0 缺失),按 O-2 方案 C 属**测试侧补三类流执行证据**,非研发实现型 RED。已派发 B-1/B-2 契约核对任务(lan-248 `ses_e4e91dc01ffe8dj0qyl4mBZsd2` / lan-204 `ses_e4e91234bffeqRDdDQ5MqtdhPy`,axonhub/deepseek)产出契约文档(API_REFERENCE.md 补全或 specs 新批次文档)后,请测试侧:① 为 B-1 43 SC / B-2 23 SC 补契约级 JUnit(MockMvc 风格沿用既有 ContractTest)+ 正常/异常/权限三类流执行证据;② 报告上传链可复用既有 health.report.upload(YELLOW,78b72c14f)契约资产;③ 只有三类流实际执行证据 + 契约/用例推 origin/cfclub + 提交干净才计入场景覆盖矩阵。注意 pom.xml:28 `true`,`mvn test` 须显式 `-DskipTests=false` | 研发负责人(本自动化第44轮) | 2026-11-06 23:20 | 待测试处理 | ## TR-8:商城-会员 18 SC 契约补建转测试侧(研发 → 测试,2026-11-07 01:40) | 编号 | 关联键/对象 | 类型 | 描述 | 经办 | 登记时间 | 状态 | |---|---|---|---|---|---|---| | TR-8 | 商城-会员 18 SC(SC-A-12/17、SC-G-05、SC-P-52/53/55/56/57/59/60/75/80、SC-S-02/03/04/06、SC-X-07/12) | 用例缺失 + 复验 | 开工包 `docs/tdd/orchestration/shop-member-kickoff-20261107.md` 已入库:**18/18 端点核验已实现 0 缺失**(ProductController `/api/product` 6 端点 / ProductOrderController `/api/product/order` 10 / CouponController `/api/coupon` 6 / PackagePaymentController `/api/payment` 5 / MembershipController `/api/membership` 7 / AfterSalesController `/api/shop/after-sales` 3),按 O-7 属**测试侧补三类流执行证据**(非研发实现型 RED,不建伪实现任务)。契约定稿前能力键映射见开工包「建议能力键」12 条(product.browse / order.pay / order.refund / coupon.use / membership.view / membership.renew / product.manage / order.ship / order.fulfill / membership.fulfill / admin.order.manual / admin.coupon.config,须逐条对齐 API_REFERENCE 与派生用例防键名冲突)。请测试侧:① 依开工包为 18 SC 补契约级 JUnit(MockMvc 风格沿用既有 ContractTest);② 正常/异常/权限三类流实际执行并产出证据;③ 证据 + 契约/用例推 origin/cfclub + 提交干净才计入场景覆盖矩阵(O-2 方案 C / O-3 判据③)。注意 pom.xml:28 `true`,`mvn test` 须显式 `-DskipTests=false` | 研发负责人(本自动化第50轮) | 2026-11-07 01:40 | 待测试处理 | ## TR-9:B-35 修复复验 + 家庭-成员 15 SC 契约补建转测试侧(研发 → 测试,2026-11-07 03:45) | 编号 | 关联键/对象 | 类型 | 描述 | 经办 | 登记时间 | 状态 | |---|---|---|---|---|---|---| | TR-9 | ① `dan.report.parseFormat`(S-cfc-34 / B-35)② 家庭-成员 15 SC | 复验 + 用例缺失 | **① B-35 修复复验**:实现修复 `9628df3d9` 已推 origin/cfclub(`DanReportParseService.java` +59/-6:清洗正则收窄 [\uE000-\uF8FF]、A2 standardCoreLiteracy 版式日期关键词+粘连值解析、B4 自信/自尊正则兜底、A1 detail「分数\|百分位」同行优先提取、fallback 窗口 300→60),提交自述 `mvn -DskipTests=false -Dtest=DanReportParseServiceTest test`:4 fail → 0 fail,38/38 通过。已登记 YELLOW。请测试侧:复跑 4 例确认转绿 + **3 份真实报告样本走 `/api/health/report/parse` 人工比对字段**(闭环定义)。**② 家庭-成员 15 SC 开工包**:`docs/tdd/orchestration/family-member-kickoff-20261107.md` 已入库,13/15 端点核验已实现 0 缺失(FamilyController/FamilyMembersController/FamilyInviteController/TeacherFamilyBindingController/GuideFamilyQueryController/AdminFamilyOverviewController/AdminOrgMemberController/DietRecommendationController/ButlerController 等),SC-A-04(关系类型 CRUD)/ SC-P-72(GDPR 导出)端点载体待详核。按 O-7 属**测试侧补三类流执行证据**(非研发实现型 RED)。能力键映射见开工包「建议能力键」12 条(family.create / family.joinByCode / family.members.list / family.members.remove / family.members.permission / family.invite.code / family.relationship.manage / family.user.query / family.diet.generate / family.overview / family.export / family.teacher.bind)。请测试侧:① 为 15 SC 补契约级 JUnit(MockMvc 风格沿用既有 ContractTest)+ 正常/异常/权限三类流执行证据;② 证据 + 契约/用例推 origin/cfclub + 提交干净才计入场景覆盖矩阵。注意 pom.xml:28 `true`,`mvn test` 须显式 `-DskipTests=false` | 研发负责人(闭环巡检轮) | 2026-11-07 03:45 | 待测试处理 | ## TR-10:B-34 修复复验 + 五维能量 12 SC 契约补建转测试侧(研发 → 测试,2026-11-07 04:1x) | 编号 | 关联键/对象 | 类型 | 描述 | 经办 | 登记时间 | 状态 | |---|---|---|---|---|---|---| | TR-10 | ① `langgraph.questionnaire.generate`(S-cfc-33 / B-34)② 五维能量 12 SC | 复验 + 用例缺失 | **① B-34 修复复验**:实现修复 `1b15b67d2` 已推 origin/cfclub(`cfc-langgraph/src/graphs/questionnaire.py` + `schemas/questionnaire.py`:GenerateRequest 补 `prompt_template: Optional[str]` 与 TongueRequest 对齐 + build_prompt getattr 防御),O-9 主理人最终确认(03:5x):`cfc-langgraph/src/` 归 main 已落地,本键已回补登记 YELLOW。请测试侧:复跑 `pytest tests/test_graph.py` 确认 2 例转绿(B-34 闭环定义 ①)+ `/api/v1/questionnaire/generate` 返回 200 且 `questionnaire_json` 非空(②)+ AiGateway 不再打「调用失败」warn(③)。**② 五维能量 12 SC 开工包**:`docs/tdd/orchestration/dimension-energy-kickoff-20261107.md` 已入库,12/12 端点核验已实现 0 缺失(EnergyController `/api/energy/**` / FiveDimensionSelfCheckController `/api/family/self-check/**` / ManualDimensionScoreController `/api/family/manual-score/**` / AdminEnergyConfigController `/api/admin/energy-config/**` / AdminEnergyRuleController / AdminEnergyBehaviorConfigController)。按 O-7 属**测试侧补三类流执行证据**(非研发实现型 RED)。能力键映射见开工包「建议能力键」11 条(energy.viewOverview / energy.listLogs / energy.viewConfig / energy.grant / energy.setDailyLimit / energy.recalculate / energy.behaviorTrigger / energy.manualScore / energy.selfCheck / energy.isolation / energy.concurrentUpdate,防与 dimension.registry.* 已契约键冲突)。请测试侧:① 为 12 SC 补契约级 JUnit(MockMvc 风格沿用既有 ContractTest)+ 正常/异常/权限三类流执行证据(**SC-X-19 权限隔离 / SC-X-21 并发**为重点);② 证据 + 契约/用例推 origin/cfclub + 提交干净才计入场景覆盖矩阵。注意 pom.xml:28 `true`,`mvn test` 须显式 `-DskipTests=false` | 研发负责人(本自动化第52轮) | 2026-11-07 04:1x | 待测试处理 | ## TR-11:B-37 修复复验 + EVD-3/4/5/6 证据转测试侧复验登记 + EVD-7/8 派发(研发 → 测试,2026-11-07 07:00) | 编号 | 关联键/对象 | 类型 | 描述 | 经办 | 登记时间 | 状态 | |---|---|---|---|---|---|---| | TR-11 | ① `sleep.config.tags`(S-cfc-31 / B-37)② EVD-3/4/5/6 证据复验登记 ③ EVD-7/8 派发启动 | 复验 + 登记 + 派发 | **① B-37 修复复验**:契约修复 `41f1fc934`(B-37 空白 key 校验收紧)已推 origin/cfclub,IN CHAIN ✓(git merge-base --is-ancestor 验证),`sleep.config.tags` 契约测试 `f11062b42` 及契约修复 `41f1fc934` 均在链上。请测试侧:复跑 1 例确认绿 → `--mark-green sleep.config.tags` 收口(注意 `pom.xml:28 skipTests=true` 须 `-DskipTests=false`)。**② EVD-3/4/5/6 证据复验登记**:EVD-3 任务心愿 22 SC(4 JUnit + 11 Playwright e2e)/ EVD-4 商城会员 18 SC(10 契约 JUnit)/ EVD-5 五维能量 12 SC(9 契约 JUnit + EnergyContractTestBase)/ EVD-6 CI 接入(.gitlab-ci.yml G1 分层回归 +132)均已合入 cfclub `07a992161`(06:56)。请测试侧:按 sc-key-map.md 对应 SC 行登记「已跑通」状态,推进 SC 覆盖 15→50+。 ③ **EVD-7/8 派发**:已于 07:00 派发,EVD-7 → lan-189 `ses_e4ce1a7e4ffeyni26fQzuKYTa3`(报告闭环 23 SC),EVD-8 → lan-248 `ses_e4ce0e6d1ffe4l0p6nFEzZmkXS`(测评-方案 43 SC),产出待测试侧按 sc-key-map 登记 | 研发负责人1(本轮 28) | 2026-11-07 07:00 | 待测试处理 | ## TR-12:EVD-9/10 派发(孩子端 26 SC + 规划师 32 SC)+ EVD-8R 产出回收(研发 → 测试,2026-11-07 08:36) | 编号 | 关联键/对象 | 类型 | 描述 | 经办 | 登记时间 | 状态 | |---|---|---|---|---|---|---| | TR-12 | ① EVD-9 孩子端 26 SC ② EVD-10 成长规划师 32 SC ③ EVD-8R 产出 `7f9b978c2` | 派发 + 回收 | **① EVD-8R 产出回收**:测评-方案 43 SC 契约证据 `7f9b978c2`(10 契约 JUnit 156 全绿 + automation-run doc)已于 08:15 推 origin/cfclub,IN CHAIN ✓(git merge-base --is-ancestor 复核,11 文件 3489 行,含 AssessmentQuotaAppointment/PlanActivation/PlanReviewTeacher/TianpanGuide 等,重点 SC-X-19 权限隔离/SC-X-21 并发)。请测试侧复核后按 sc-key-map.md 登记跑通。**② EVD-9 派发**:孩子端(不能登录视角)26 SC(SC-C-01~26)开工包 `docs/tdd/orchestration/child-zone-kickoff-20261107.md` 于 08:35 入库;契约核对已派 lan-189 `ses_e4c920c26ffeICo2gTpPJ83u1t`(EVD-9,--confirm 确认执行);产出后转测试侧补契约 JUnit + 三类流证据(重点:SC-C-05 任务打卡/SC-C-09 勋章/SC-C-22 商城兑换)。**③ EVD-10 派发**:成长规划师域 32 SC(SC-T-01~32)开工包 `docs/tdd/orchestration/planner-zone-kickoff-20261107.md` 同步入库;契约核对已派 local-45278 `ses_e4c9219a8ffeBC2StFItgSCTfd`(EVD-10,axonhub/deepseek);产出后转测试侧(重点:SC-T-13 数据隔离权限流/SC-T-05 幂等/SC-T-09 预约状态守卫)。注意 pom.xml:28 `true`,`mvn test` 须显式 `-DskipTests=false` | 研发负责人(本自动化第 31 轮) | 2026-11-07 08:36 | 待测试处理 | ## TR-13:EVD-10 产出回收(规划师域 32 SC 契约定稿)+ EVD-12 派发(服务商域 6 SC)(研发 → 测试,2026-11-07 09:05) | 编号 | 关联键/对象 | 类型 | 描述 | 经办 | 登记时间 | 状态 | |---|---|---|---|---|---|---| | TR-13 | ① EVD-10 成长规划师 32 SC(SC-T-01~32)契约产出 `77026df42` ② EVD-12 服务商域 6 SC 派发 | 回收 + 派发 | **① EVD-10 产出回收**:成长规划师域 32 SC 契约核对产出 `77026df42` 已于 08:49 推 origin/cfclub,IN CHAIN ✓(git merge-base --is-ancestor 复核,提交含 `docs/superpowers/specs/2026-11-07-planner-zone-contract.md` 119 行 + API_REFERENCE 4.57 段落 54 行)。核对结论:**32/32 SC 端点锚定(29 完全满足 + 3 子缺口)**,开工包 ⚠ 三项全部回填实测(T-25 舌诊链 = HealthReportController parse-preview/confirm type=tongue + EmotionCheckinController;T-27 天盘 = TianpanController /api/tianpan/*;T-29 导出 = UserController /api/user/data-export)。16 建议键定稿(teacher.login.switch / teacher.family.bind / teacher.report.proxy / teacher.plan.review / teacher.plan.activate / teacher.task.review / teacher.assessment.record / teacher.plan.create / teacher.appointment.guard / teacher.data.isolation / teacher.family.overview / teacher.message.push / teacher.mind.record / teacher.nutrition.plan / teacher.export / teacher.dimension.score)。**实现缺口 3 条(仅登记不实现)**:G-1 SC-T-10 预约未到(no-show)无独立端点;G-2 SC-T-22 方案归档无专用端点(仅报告归档);G-3 SC-T-29 管理端/规划师客户档案批量导出缺失(仅 UserController 本人导出)。请测试侧:① 按 sc-key-map.md 登记 32 SC 补三类流证据(重点 SC-T-13 数据隔离权限流 / SC-T-05 激活幂等 / SC-T-09 预约状态守卫 / SC-T-03/23 代传归属);② G-1/2/3 缺口实现决策由研发侧评估(见下轮规划),测试侧可先用现有端点补 29 个完全满足 SC。**② EVD-12 派发**:服务商域剩余 6 SC(SC-S-01/05/07/08/10/11)开工包 `docs/tdd/orchestration/service-provider-kickoff-20261107.md` 已入库(S-02/03/04/06 已由 EVD-4 商城覆盖、S-09 已由 EVD-7R 报告闭环覆盖);契约核对已派 local-45278 `ses_e4c8035c7ffegUIUAdFZdCRqZ4`(EVD-12,axonhub/deepseek,--confirm 确认执行);产出后转测试侧补证据。注意 pom.xml:28 `true`,`mvn test` 须显式 `-DskipTests=false` | 研发负责人(本自动化第 32 轮) | 2026-11-07 09:05 | 待测试处理 | ## TR-14:EVD-11 产出回收(平台运营域 25 SC 契约定稿)(研发 → 测试,2026-11-07 09:10) | 编号 | 关联键/对象 | 类型 | 描述 | 经办 | 登记时间 | 状态 | |---|---|---|---|---|---|---| | TR-14 | EVD-11 平台运营 25 SC(SC-A-01~22/25~27)契约产出 `9abed8e11` | 回收 | 平台运营域 25 SC 契约核对产出 `9abed8e11` 已于 08:56 推 origin/cfclub,IN CHAIN ✓(git merge-base --is-ancestor 复核,提交含 `docs/superpowers/specs/2026-11-07-admin-ops-contract.md` 243 行 + API_REFERENCE 4.60 段落 183 行)。核对结论:**类名差异回填 4 处**(AdminReportParseController→ReportParseAdminController、AdminReviewCenterController→ReviewCenterController 等,均非能力缺口);⚠ 待核实项 9 项回填 5 项存在(A-05 勋章/A-08 知识库/A-10 迁移/A-15 审计/A-22 营养=端点存在)、A-14 监控(仅 /api/system/health 探活,缺告警配置)/A-19 工单/A-20 限流熔断=无端点载体、A-21 舌诊=载体部分存在。**缺口 5 条(A-04 关系类型 CRUD 无独立端点(表已迁移 DROP)/A-14/A-19/A-20/A-21 无端点载体)标注「需产品侧确认验收方式」**。建议能力键映射 25 条(admin.auth.login/sleep.config.tags 已在状态机仅登记映射,不新建键)。请测试侧:① 按 sc-key-map.md 登记 25 SC 补三类流证据(**SC-A-01 需 admin.auth.login 协商:该键 GREEN 已实现,测试侧复用其证据**);② 无 HTTP 载体 SC(A-04/14/19/20/21)回传产品侧确认验收方式后再定证据策略。注意 pom.xml:28 `true`,`mvn test` 须显式 `-DskipTests=false` | 研发负责人(本自动化第 32 轮) | 2026-11-07 09:10 | 待测试处理 | | TR-15 | ① EVD-14 AI/Butler 域 17 SC(SC-B-01/02/04/05/06/07/09/10/11/12 + SC-H-01~07)在途 ② EVD-15 跨角色域剩余 8 SC(SC-X-03/08/11/14/15/16/17/18)派发 | 派发 + 在途 | **① EVD-14 在途**:AI/Butler 域 17 SC 契约核对开工包 `docs/tdd/orchestration/ai-butler-kickoff-20261107.md`(已推 069628810,11:23);契约核对会话 lan-204 `ses_e4bec2751ffe73xMgs4uRlxWq4`(running 12:00,axonhub/deepseek)——产出契约文档后转测试侧补契约 JUnit + 三类流证据(重点:SC-B-05 敏感拦截 / SC-B-06 LangGraph fallback / SC-H-04 应急语义,⚠ 项须会话回填实测结论)。**② EVD-15 派发**:跨角色域剩余 8 SC(X-03/08/11/14/15/16/17/18,X-01/02/04/05/06/07/09/10/12/13/19/20/21/22 已由 EVD-2/3/4/5/7R/8R + 独立键 CF 预估覆盖)开工包 `docs/tdd/orchestration/cross-role-kickoff-20261107.md` 已推 9f0da8727(12:13);契约核对已派 lan-248 `ses_e4bc90a82ffeP88H0nV0otN0TI`(axonhub/deepseek,--confirm 确认会话真实执行:工具调用 2 次 ✓)。产出后转测试侧补证据(重点:SC-X-16 活动并发 E2E / SC-X-17 多端登录互斥 / SC-X-18 推送跨端送达,后两者端点载体偏弱待核实)。注意 pom.xml:28 `true`,`mvn test` 须显式 `-DskipTests=false` | 研发负责人(闭环巡检轮) | 2026-11-07 12:15 | 待测试处理 | | TR-16 | EVD-14 AI/Butler 域 17 SC(SC-B-01/02/04/05/06/07/09/10/11/12 + SC-H-01~07)契约产出 `f62848933` | 回收 | AI/Butler 域 17 SC 契约核对产出 `f62848933`(2026-11-07 12:08)已推 origin/cfclub,IN CHAIN ✓(git merge-base --is-ancestor 复核,提交含 `docs/superpowers/specs/2026-11-07-ai-butler-contract.md` + API_REFERENCE 4.64 段落)。核对结论:**17 SC 中 9 个端点载体齐全(B-01/02/04/11、H-01/02/03/06/07)+ 8 个端点存在但语义/载体偏差(B-05/06/07/09/10/12、H-04/05)已实测回填**;无完整缺失 SC、无假 RED(开工包 ⚠ 8 项全部逐条实测回填)。**语义缺口 6 条需产品/测试侧按契约口径执行**:B-05 敏感词门控无独立端点(以 PII 脱敏 + 会员门禁为载体)、B-06 fallback 无内容级 mock、B-09 转接语义另有载体(/api/guide/bind/* + /api/bind/*)、B-12 主动跟进无定时推送端点、H-04 应急语义间接(unassign=解绑非应急)、H-05 资源对接实际载体 = GuideActivityController /api/guide/activities/*。已废弃端点确认:POST /api/butler/service-records、/api/butler/commissions 返回 410(以 admin 侧替代载体)。请测试侧:① 按 sc-key-map.md 登记 17 SC 补三类流证据(重点 SC-B-05 敏感拦截 / SC-B-06 fallback / SC-B-09 转接载体 / SC-H-04 应急语义);② 6 语义缺口回传产品侧确认验收口径后再定证据策略。注意 pom.xml:28 `true`,`mvn test` 须显式 `-DskipTests=false` | 研发负责人(闭环巡检轮) | 2026-11-07 12:20 | 待测试处理 | | TR-17 | D/X 域运动健康接入(华为 D1-D5 + 小米 X1-X5,O-14 主理人拍板) | 派发 | **O-14 主理人拍板(17:5x,commit 78277897e)**:D/X 域作 O-7 独立契约核对批次,**不纳入 241 基线**;实现已合入(`4344688d2`/`978d1bc95`/`4815aae95` + B-50 鉴权 `cc7b3e00b`)无需研发重做,仅需设计契约登记 + 测试证据补建。开工包 `docs/tdd/orchestration/dx-health-kickoff-20261107.md` 已推 e1fe1f7bc(20:2x);契约核对已派 lan-204 `ses_e4a07f4b6ffeKN3Z2d7spU4CSk`(axonhub/deepseek,--confirm 确认会话真实执行 ✓:正文 183 字 + 工具调用 1 次)。**10 端点初核全部 ✅**(华为 /api/huawei-health/{auth-url,callback,sync,revoke,status} + 小米 /api/xiaomi-health/ 同名 5 端点,JwtInterceptor L115-116 均入 LOGIN_REQUIRED_PATHS)。产出契约文档后转测试侧补契约 JUnit + 三类流证据(重点:D-4/X-4 撤销授权合规流、D-3/X-3 同步幂等与去重);⚠ 三项待会话实测回填(前端消费链路 / 儿童手动导入双轨 / health_data_sources 去重覆盖语义)。注意 pom.xml:28 `true`,`mvn test` 须显式 `-DskipTests=false` | 研发负责人(闭环巡检轮) | 2026-11-07 20:26 | 待测试处理 | | TR-18 | family.signature.* 5 键(openPage / landscape / healthPlan / consignee / routeIntegrate,S-cfc-50~54) | 假 RED 纠偏 + 证据补建 | **发现(2026-11-08 00:5x 复核)**:签名横屏契约 `docs/superpowers/specs/2026-11-07-signature-page-landscape.md` 的 **WI-1~WI-5 实现已合入 origin/cfclub**——`e35ca7186`(2026-11-08 00:30,`feat(signature)`,6 文件 +495:新增 `pages/signature/signature.vue` 312 行 + `utils/signature-bus.js` + `pages.json` 路由 + 改造 `health-plan-summary.vue`/`consignee-edit.vue`/`checkout.vue`),`git merge-base --is-ancestor` ✓。但 S-cfc-50~54(00:40 建)仍标 RED、red_sha 空 → **账本滞后于实现(假 RED)**,按 O-2 方案 C 不派研发实现型任务,转测试侧补三类流证据。请测试侧:① 对 5 键补正常/异常/权限三类流执行证据(正常:问卷+水机走「去签名→横屏签名→确认→回传→预览」;异常:空白签名拦截、返回不回传;权限:未登录/非成员访问签名页);② 证据 + 契约/用例推 origin/cfclub + 提交干净;③ 完成后按 sc-key-map.md 对应 SC(健康方案/水机购买相关)登记跑通。注意 pom.xml:28 `true`,`mvn test` 须显式 `-DskipTests=false` | 研发负责人(本自动化第58轮) | 2026-11-08 01:1x | 待测试处理 | | TR-19 | team.profit.settle(S-cfc-41/61)+ team.profit.hook(S-cfc-42/62)@ 分润体系 | 实现落地送测 | **第 63 轮回收(2026-11-08 07:0x~07:15)**:两键实现已落地并推 origin/cfclub,均 IN CHAIN + kind=main 复核 ✓——① `team.profit.settle` → **`649dd2be7`**(07:03 推,Agnes Agent:ServiceCostConfig 实体/Mapper + TeamProfitService 8 份分佣/团队奖方法并入,3 src/main 文件 +157,5 契约类 32 例全绿);② `team.profit.hook` → **`b037fe71b`**(07:12 推,rebase 至 649dd2be7 之上:支付成功钩子接入 5 订单服务 6 调用点 + service_cost_config 表 + DatabaseInitializer 迁移,7 文件 +108,67/67 GREEN)。两键 yellow_sha 已按「实现真相优先」人工回填(O-16 脚本缺陷下)。请测试侧:① 复跑 TeamProfitSettle/Hook 契约测试核验 GREEN 后 `--mark-green` 两键;② 分润闭环 SC(SC-*E7/T9/T10 等)按 sc-key-map.md 补三类流证据;③ 部署链验证(testing 已部署 S-cfc-64 b6d5b0391/65 20309e50e/66 2c65d98f7/67 4f40a8973 + 61/62 待部署)。注意 pom.xml:28 `true`,`mvn test` 须显式 `-DskipTests=false` | 研发负责人(第63轮) | 2026-11-08 07:15 | 待测试处理 | ## TR-20:27 个 YELLOW 键实现全部在链复核,送测试侧复跑契约测试 → --mark-green(研发 → 测试,2026-11-09 01:40) | 编号 | 关联键/对象 | 类型 | 描述 | 经办 | 登记时间 | 状态 | |---|---|---|---|---|---|---| | TR-20 | 27 个 YELLOW 键(见描述分组) | 复验 + mark-green | **第 0130 轮复核**:27/27 YELLOW 键实现 sha 全部在 origin/cfclub 链上(`git merge-base --is-ancestor` 逐键复核通过,无实现缺失、无账本滞后)。请测试侧复跑契约测试/前端测试后 `--mark-green` 收口。分组明细:**① admin.family.* 5 键**(actionMenu/createdAtDisplay/planEntry/reportEntry→`ef3e81fec`;familyCoupon.backToList→`e777224fc`,对应 G1 前端 spec 已合入:Families.actionMenu/createdAtDisplay/planEntry/reportEntry + FamilyCouponManage.backToList);**② family.invite.* 5 键**(joinRequestCardInfo→`4f40a8973` / joinRequiredInfoFrontend→`2c65d98f7` / joinRequiredInfoTest→`f4081f011` / joinValidationGate→`f1d3e663e` / joinValidationRules→`dc1b83a65`,S-cfc-63~67 批次);**③ team.* 9 键**(admin.manage→`17b6d6bfb` / invitation.create→`19c7439b2` / user.portal→`b6d5b0391` / star.myView→`2b73e20f6` / star.digest→`786c88e02` / star.multiplier→`20309e50e` / profit.settle→`649dd2be7` / profit.hook→`b037fe71b`(TR-19 已单独送测,本条目并轨)/ profit.cron→`0bf1815cf` / profit.pipeline→`3d28ba94d`);**④ family.signature.* 5 键**(openPage/landscape/healthPlan/consignee/routeIntegrate→`e35ca7186`,TR-18 假 RED 纠偏项,实现已在链,请补三类流证据后 mark-green);**⑤ family.earnings.* 2 键**(adminRole/poolToggle→`239710c47`)。注意 pom.xml:28 `true`,`mvn test` 须显式 `-DskipTests=false` | 研发负责人(本自动化第 R-0130 轮) | 2026-11-09 01:40 | 待测试处理 | ## TR-21:13 个新 YELLOW 键(guhe/diet/signature 批次)实现全部在链复核,送测试侧复跑契约测试 → --mark-green(研发 → 测试,2026-11-09 15:2x) | 编号 | 关联键/对象 | 类型 | 描述 | 经办 | 登记时间 | 状态 | |---|---|---|---|---|---|---| | TR-21 | 13 个 YELLOW 键(见描述分组) | 复验 + mark-green | **研发负责人第 79 轮复核**:13/13 YELLOW 键实现 sha 全部在 origin/cfclub 链上(`git merge-base --is-ancestor` 逐键复核通过,无实现缺失、无账本滞后),均非 TR-20 覆盖项(TR-20 只覆盖 27 键,本条目为增量)。请测试侧复跑契约测试/前端测试后 `--mark-green` 收口。分组明细:**① guhe.* 11 键**(lowSideAggregate→`f1a0d9908`(S-cfc-119,13:08,T15 跨案例聚合,契约 4 RED→6 GREEN)/ l1.versionSplit→`4ef901c48`(S-cfc-117,13:08 复核闭环,T8/L1-3)/ gate.evidenceIsolate→`dae41ff59`(S-cfc-121,13:37,G-3 evidence-code isolation)/ report.personalAssert→`b3206dcf2`(S-cfc-122,13:44,个人层双断言键名/内容断言)/ gate.strainBlock→`688fc65f9`(S-cfc-100)/ l1.pageTailClean→`4a6d6c42a6`(S-cfc-101)/ kb.versionSense→`2b58da6090`(S-cfc-102)/ l4.noPathMap→`66cd7eba5b`(S-cfc-104)/ kb.fieldExpose→`01176a4c90`(S-cfc-106)/ l1.shellGuard→`0ad69b8828`(S-cfc-108)/ gate.lowSideRedline→`a13bb8192`);**② diet.recommendation.participantSelect→`e3b5ba9c7`**(S-cfc-128,13:07,食谱生成支持共餐人选择);**③ signature.canvas2d.rewrite→`ff76e16076`**(签名 v2 合入)。请测试侧:① 复跑上述 13 键对应契约测试核验 GREEN;② 按 sc-key-map.md 对应 SC(guhe/diet/signature 相关)补三类流执行证据;③ 确认后 `--mark-green` 各键收口。注意 pom.xml:28 `true`,`mvn test` 须显式 `-DskipTests=false` | 研发负责人(本自动化第 79 轮) | 2026-11-09 15:2x | 待测试处理 | ## TR-22:7 个新 YELLOW 键(guhe/diet 批次)实现全部在链复核,送测试侧复跑契约测试 → --mark-green(研发 → 测试,2026-11-09 18:4x) | 编号 | 关联键/对象 | 类型 | 描述 | 经办 | 登记时间 | 状态 | |---|---|---|---|---|---|---| | TR-22 | 7 个 YELLOW 键(见描述分组) | 复验 + mark-green | **研发负责人第 88 轮复核**:7/7 YELLOW 键实现 sha 全部在 origin/cfclub 链上(`git merge-base --is-ancestor` 逐键复核通过,无实现缺失、无账本滞后),为 TR-20(27 键)/TR-21(13 键)之外的状态机差集补充送测(47-27-13=7)。请测试侧复跑契约测试/前端测试后 `--mark-green` 收口。分组明细:**① diet.recommendation.uiRework→`1bad02ec1`**(S-cfc-127,推荐页改版);**② guhe.lowSide.noSupplement→`957cac4e7`**(S-cfc-118,契约 6/6 绿);**③ guhe.l1.guheV2Route→`7270303b531c`**(S-cfc-120/90,指纹路由 32 键);**④ guhe.kb.queryLowSidePatch→`0c8f1b8ea`**(S-cfc-123,契约 8/8 绿);**⑤ guhe.lowSide.ruleLoad→`aaad839ff`**(S-cfc-124);**⑥ diet.food.healthAdjust→`ba9fd2837`**(S-cfc-125);**⑦ diet.food.healthAdjustUi→`7366733e`**(S-cfc-126,⚠ testing 部署 16:32 会话空壳失败 0 tokens,已重派 ses_e40141b7effe 亦空壳失败——pub-iwintrue 无 axonhub 模型链,部署待通道修复,mark-green 不受部署阻塞,部署单列) 。请测试侧:① 复跑上述 7 键对应契约测试核验 GREEN;② 按 sc-key-map.md 对应 SC(guhe/diet 相关)补三类流执行证据;③ 确认后 `--mark-green` 各键收口。注意 pom.xml:28 `true`,`mvn test` 须显式 `-DskipTests=false` | 研发负责人(本自动化第 88 轮) | 2026-11-09 18:4x | 待测试处理 | ## TR-23:S-cfc-129 health.dataSource.bridgeWrite(O-17 GAP-A 桥接)入池,待测试侧写契约级单测 E-1~E-4 → --mark-red(研发 → 测试,2026-11-09 20:0x) | 编号 | 关联键/对象 | 类型 | 描述 | 经办 | 登记时间 | 状态 | |---|---|---|---|---|---|---| | TR-23 | health.dataSource.bridgeWrite(S-cfc-129,RED) | 用例缺失 | **研发负责人第 90 轮入池**(本轮池空续派):O-17 GAP-A 桥接契约 `docs/superpowers/specs/2026-11-08-dx-health-bridge.md` 已合入 origin/cfclub,§6 四项拍板(①DEVICE②tier=2③触发点A 同步内事务④不加唯一索引)均经主理人裁决生效(2026-11-08)。本轮研发侧已 `--add-task` 入池 S-cfc-129(stage=RED,待测试写契约级单测)。设计溯源:契约 §3.1 字段映射(health_data_sources→health_dimension_scores,body_weight→nutrition+growth 双维展开,未知 dimension 丢弃,读最新覆盖)/ §3.2 消费侧接线(解除 DimensionScoreServiceImpl 死注入 dataSourceRecordService,新增 HealthDataSourceBridgeService 同步内事务桥接)/ §3.3 B-1 bridge/list + B-2 bridge/sync-status 端点(均 `/api/health/data-sources/bridge/*`,登录必填 401,@RequestAttribute("role") 成员私有)/ §3.4 鉴权(JwtInterceptor LOGIN_REQUIRED_PATHS 已含 huawei-health/xiaomi-health/health/plan)。请测试侧:① 依契约 §5 证据要求写 E-1(桥接单元:mock health_data_sources 行→health_dimension_scores 读写正确,含 body_weight 双维展开/未知码丢弃/多行 LIFO 覆盖)、E-2(同步链路桥接:D-3/X-3 同步 mock→/api/dimension/overview 读到新得分)、E-3(档案展示:同步后 /api/health/indicators/current 可见 D/X 来源指标)、E-4(B-1/B-2 端点:登录 401/有 token 正常/分页过滤)契约级 JUnit(沿用既有 ContractTest MockMvc 风格),实现包路径参考 HuaweiHealthController/XiaomiHealthController/DimensionScoreServiceImpl(实现尚未落地,不得假定具体包路径,仅据契约写接口级测试);② 写完 `--mark-red health.dataSource.bridgeWrite --commit ` 登记 RED;③ 后续研发侧据 red_sha 派发实现使绿(YELLOW)。E-5 前端 Playwright 三类流属实现合入后测试侧补,非本 RED 前置。注意 pom.xml:28 `true`,`mvn test` 须显式 `-DskipTests=false`;O-14「D/X 域不纳入 241 基线」口径不变,本任务 P1 不阻塞主线 | 研发负责人(本自动化第 90 轮) | 2026-11-09 20:0x | 待测试处理 | ## TR-24:7 个新 YELLOW✓ 键(实现全部在链复核)送测试侧复跑契约测试 → --mark-green + 部署确认(研发 → 测试,2026-11-11 16:13) | 编号 | 关联键/对象 | 类型 | 描述 | 经办 | 登记时间 | 状态 | |---|---|---|---|---|---|---| | TR-24 | 7 个 YELLOW✓ 键(见描述分组) | 复验 + mark-green + 部署确认 | **研发负责人 2026-11-11 16:13 巡检复核**:7/7 YELLOW 键实现 sha 全部 `git merge-base --is-ancestor origin/cfclub` 在链(kind=main 复核通过,无实现缺失、无账本滞后),为 TR-20(27 键)/TR-21(13 键)/TR-22(7 键 guhe/diet)之外的状态机差集补充送测(53 YELLOW 中剔除 47 已送测 + 46 O-16/O-22 遗留后的真证据增量)。请测试侧:① 复跑上述 7 键对应契约/前端测试核验 GREEN;② 按 sc-key-map.md 对应 SC 补三类流执行证据;③ 确认后 `--mark-green` 各键收口;④ 部署态已自动派发 testing(`--auto` 自动待部署验证),待编排侧 `--deploy-done testing --commit ` 确认后 DONE。分组明细(sha 末段):**① diet.food.healthAdjustUi→`7366733e`**(S-cfc-126,签名/健康调整 UI);**② signature.canvas2d.rewrite→`ff76e16076`**(签名 v2 canvas2d 重写);**③ family.signature.healthPlanSummary→`0a01a0e8a`**(健康方案签名摘要);**④ family.signature.consigneeEditor→`f6590c89f`**(收货人编辑签名);**⑤ growth.history.dayGroupView→`d9ed19ddfa`**(成长记录按日分组视图);**⑥ langgraph.pytest.exitHang→`a1ead33a1`**(langgraph pytest 退出挂起修复);**⑦ langgraph.intent.errorPropagate→`a8cda0169`**(意图识别错误传播修复)。注意 pom.xml:28 `true`,`mvn test` 须显式 `-DskipTests=false`;pub-iwintrue 部署节点须模型链可用(避免空壳 0 tokens,参照 S-cfc-126 历史空壳失败) | 研发负责人(本自动化巡检轮) | 2026-11-11 16:13 | 待测试处理 |