研发 → 测试 请求通道(正式通道)
纪律:本台账条目由开发/研发角色写入,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": <Long>}(Map<String,Object>,经 ParamUtils.getLong 解析) |
| 成功响应 |
Result.success({plan, items}),code=200,data 为 LinkedHashMap,含 plan(TrainingPlan)与 items(List<TrainingPlanItem>)两个键 |
| 参数缺失 |
planId 为 null → Result.error("planId不能为空") |
| 方案不存在 |
planId 有效但查无方案 → Result.error("方案不存在") |
| 调用链 |
trainingPlanService.getPlanById(planId) → trainingPlanService.getPlanItems(planId) |
4. 建议覆盖的用例点(测试侧自决,非研发指令)
- 正常路径:
planId 有效 → code=200,data.plan 非空、data.items 为数组。
- 参数缺失:
planId 缺省 / null / 非数字 → 返回「planId不能为空」(ParamUtils 语义:null/空串/非数字均视为未传)。
- 方案不存在:mock
getPlanById 返回 null → 返回「方案不存在」。
- 空项目列表:
getPlanItems 返回空集合 → data.items 为空数组而非 null。
- HTTP 方法契约:GET 应 405(本仓接口统一
@PostMapping)。
- 鉴权缺口观察(请测试侧一并记录缺陷,不必断言为绿灯):该 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 <sha> 置 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 详情」。 |
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<List<DimensionNode>>,code=200,data 为维度树节点列表(含 code/name/nodeKind/children) |
| 调用链 |
dimensionRegistryService.getTree(sourceSystem) |
3. 建议覆盖的用例点(测试侧自决,非研发指令)
- 正常路径:
sourceSystem 缺省 → code=200,data 非空且每节点含 code/name。
- 按源过滤:传
sourceSystem → 仅返回该源节点(或空列表)。
- 空库:mock
getTree 返回空列表 → data 为空数组而非 null。
- 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 有 <skipTests>true</skipTests>,任何 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 契约未定,请先与主理人/设计侧对齐契约再写用例)。 |
开发(研发负责人) |
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 <sha>);② 执行 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 有 <skipTests>true</skipTests>,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 <skipTests>true</skipTests>,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 <skipTests>true</skipTests>,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 <skipTests>true</skipTests>,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 <skipTests>true</skipTests>,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 <skipTests>true</skipTests>,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 <skipTests>true</skipTests>,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 <skipTests>true</skipTests>,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 <skipTests>true</skipTests>,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 <skipTests>true</skipTests>,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 <skipTests>true</skipTests>,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 <skipTests>true</skipTests>,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 <skipTests>true</skipTests>,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 <skipTests>true</skipTests>,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 <skipTests>true</skipTests>,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 <skipTests>true</skipTests>,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 <sha> 登记 RED;③ 后续研发侧据 red_sha 派发实现使绿(YELLOW)。E-5 前端 Playwright 三类流属实现合入后测试侧补,非本 RED 前置。注意 pom.xml:28 <skipTests>true</skipTests>,mvn test 须显式 -DskipTests=false;O-14「D/X 域不纳入 241 基线」口径不变,本任务 P1 不阻塞主线 |
研发负责人(本自动化第 90 轮) |
2026-11-09 20:0x |
待测试处理 |
TR-24:S-cfc-129 RED 契约测试已产出 6da900595 → 请测试侧 --mark-red 登记(研发 → 测试,2026-11-09 22:55 第91轮追加)
| 编号 |
关联键/对象 |
类型 |
描述 |
经办 |
登记时间 |
状态 |
| TR-24 |
health.dataSource.bridgeWrite(S-cfc-129,RED) |
复验 + 登记 |
研发负责人第 91 轮接力(2026-11-09 22:55):TR-23 派发的 lan-204 会话 ses_e3fa5e159ffeXB3rBxzfu8m1So 已于 21:35 完成契约级单测写作并合入 origin/cfclub(commit 6da900595,author=E2E Test Bot;触及 cfc-backend/src/test/java/com/etotem/cfc/unit/HealthDataSourceBridgeContractTest.java 547 行;git merge-base --is-ancestor 6da900595 origin/cfclub ✓ IN CHAIN;commit_kind=test 符合 RED 证据要求)。当前状态机 health.dataSource.bridgeWrite 仍 stage=RED 且 red_sha 字段缺失(未登记),任务账本 S-cfc-129 仍挂 dispatched(会话已 succeeded 退出)。请测试侧执行登记(补齐 RED 证据闭环):python tdd_orchestrate.py --project E:/cfc --role 测试 --mark-red health.dataSource.bridgeWrite --commit 6da900595 --note "测试负责人(第91轮接力)" --from-session ses_e3fa5e159ffeXB3rBxzfu8m1So;登记后研发侧即按 TR-23 的 requirement/design 双溯源建 GREEN 实现任务(GAP-A D/X 桥接:解除 DimensionScoreServiceImpl 死注入 + HealthDataSourceBridgeService 同步内事务接线 + B-1/B-2 /api/health/data-sources/bridge/* 端点)并派发空闲节点(lan-204 / local-45278 / pub-iwintrue,默认按节点模型链选择)使契约测试变绿。优先级 P1(O-14「D/X 域不纳入 241 基线」口径不变) |
研发负责人(本自动化第 91 轮) |
2026-11-09 22:55 |
待测试处理 |
TR-24 回执(研发 → 测试,2026-11-10 03:30 第94轮):RED 契约与 GREEN 实现均已合入,请测试侧复验 mark-green
| 编号 |
关联键/对象 |
类型 |
描述 |
经办 |
登记时间 |
状态 |
| TR-24 |
health.dataSource.bridgeWrite(S-cfc-129/130) |
复验 + mark-green |
研发负责人1 第94轮回执(2026-11-10 03:30):本键已完成 RED→YELLOW 全链路——① RED 契约 6da900595(S-cfc-129,HealthDataSourceBridgeContractTest 547 行,11-09 21:35 合入)已在 origin/cfclub 链上;② GREEN 实现 47d203981(S-cfc-130,HealthDataSourceBridgeService 174 行 + 同步引擎同事务接线 + 死注入解除 + schema.sql,11-10 02:42 提交)已推 origin/cfclub;③ 两者 git merge-base --is-ancestor origin/cfclub 均核验 ✓;④ 状态机 health.dataSource.bridgeWrite 已置 YELLOW;⑤ 部署 pending 1(testing@47d203981,03:03 登记)在途待部署会话回报。请测试侧:复跑 HealthDataSourceBridgeContractTest 契约测试核验 GREEN 后 --mark-green health.dataSource.bridgeWrite 收口(注意 pom.xml:28 <skipTests>true</skipTests>,mvn test 须显式 -DskipTests=false);部署确认(--deploy-done testing --commit 47d203981)由编排侧按部署会话回报落地。O-14「D/X 域不纳入 241 基线」口径不变,本键 P1 不阻塞主线 |
研发负责人1(本自动化 ce26ad68 第94轮) |
2026-11-10 03:30 |
待测试处理 |
TR-25:新实现 6c0f05701 用户管理「推荐团队」查看(/api/admin/referral/* 三端点)已合入主线但零契约测试 → 请测试侧补契约级单测 + 管理端 e2e(研发 → 测试,2026-11-10 22:4x 错峰轮)
1. 背景与缺口(同类先例 O-14/O-17「实现先于测试登记」)
- 实现提交:
6c0f05701(2026-11-10 12:55,author=Xiaogang Liao)「feat(admin): 用户管理新增「推荐团队」查看(上级/直推/间推/团队树)」已合入 origin/cfclub(4 文件 +468 -2:AdminReferralController.java 131 行 / AdminReferralTreeService.java 131 行 / cfc-web admin.js +25 / Users.vue +183),git merge-base --is-ancestor 6c0f05701 origin/cfclub ✓ IN CHAIN;位于部署前沿 63cf7455a(B-69 15:38 confirmed)之后,未随 B-69 部署,待后续部署轮覆盖。
- 缺口实证(研发侧本轮核验):① 状态机 70 键无
admin.referral.* 键(未入 TDD 池);② cfc-backend/src/test 无任何 AdminReferral* 契约测试(find 实证);③ 用户场景 241 SC 与 tests/test-cases/*.md 无对应条目;④ docs/superpowers/api/API_REFERENCE.md 无 /api/admin/referral 契约登记;⑤ test-requests.md TR-1~24 均非此对象。判定:已合入实现、零契约/零场景覆盖。
2. 待测端点契约(供测试侧建用例)
| 端点 |
方法 |
请求体(Map) |
响应 |
功能 |
/api/admin/referral/summary |
POST |
含 userId |
Result<Map> |
用户基本信息 + 上级推荐人 + 直推/间推人数 + 团队累计佣金(复用 CommissionService 口径) |
/api/admin/referral/members |
POST |
含 userId 及分页参数 |
Result<Map> |
L1 直推 / L2 间推分页(昵称、注册时间、消费额、贡献佣金) |
/api/admin/referral/tree |
POST |
含 userId、层级 1-8 |
Result<Map> |
users.referrer_id 逐层 BFS 构树(不用 referral_tree 表——生产漏写;不用 MySQL 递归 CTE——当前 RDS 内部临时表不可用) |
鉴权:@RequestAttribute("role")/roles 手动校验(仅后台角色);/api/admin/** 受 JwtInterceptor 登录保护(与既有 admin 端点一致)。
3. 建议覆盖用例(测试侧自决,非研发指令)
- 三端点:匿名 401 / 有 token 正常 / 非后台角色拒绝;
- summary:无推荐人(hasReferrer=false 类边界)、佣金为 0、userId 不存在;
- members:分页正确性(L1/L2 边界、空列表)、消费额/贡献佣金字段形态;
- tree:1 层 / 8 层上限、循环引用防护(BFS visited)、空树;
- HTTP 方法契约:GET 应 405(本仓接口统一 @PostMapping)。
4. 请测试侧
① 依 §2 契约补 AdminReferral*ContractTest(MockMvc 风格,同包既有惯例);② 管理端 Users.vue「团队」弹窗 e2e(Playwright:admin 登录 → 用户列表 → 团队按钮 → 概览/L1/L2/团队树可见);③ 完成后在本文件追加「回复」段并置状态(push 即送达);④ 如需纳入状态机键/组 TDD 池,按 O-7 契约补建流程办理(研发侧本轮不预建键,避免与用户直接实现语义冲突)。优先级 P2(管理端辅助查看,不阻塞 241 SC 主线)。
5. 测试侧回复(R132 · 2026-11-10 夜 · 已闭环)
✅ 测试侧已补契约并销号:新建 cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminReferralContractTest.java(16 例,BUILD SUCCESS 全绿),覆盖:
| 端点 |
用例(16 例) |
| 权限门(三端点共用) |
匿名 401/500 门、role=child/parent(C 端角色)500 拒、roles 含 backend 角色放行、无 role 属性拒 |
/api/admin/referral/summary |
userId 缺失校验、用户不存在(500)、成功形态 Result<Map> = code 200 + 用户信息/上级推荐人/直推间推人数/团队累计佣金字段、无推荐人边界(hasReferrer=false) |
/api/admin/referral/members |
分页参数(page/size/default)、L1/L2 层级归一(level 3 → ALL)、空列表边界、昵称/注册时间/消费额/贡献佣金字段形态 |
/api/admin/referral/tree |
maxLevel 默认 3、传值 8 生效、BFS 构树结构、空树边界 |
- 实现方式:与既有
HealthPlanProductSelectionContractTest 同范式(mock Service + Mapper + 反射注入,无 Spring 上下文);Result 成功码=200 / 错误码=500 已对齐既有契约。
- 管理端 Users.vue「团队」弹窗 e2e:建议随部署轮覆盖后补(本轮契约层已闭环,e2e 属 P2 可选,登记 side-note)。
- 状态机
admin.referral.* 键:按 §4④ O-7 流程由研发侧决定是否建键,测试侧不预建。
TR-26:S-cfc-131 content.article.listByTag 知识中心文章标签筛选(实现已合入 6e9a511e2 但零契约测试)→ 请测试侧补契约级单测 + mark-red 登记(研发 → 测试,2026-11-10 23:4x 错峰轮 · 第101轮)
1. 背景与缺口(同类先例 TR-25「实现先于测试登记」)
- 设计规格:
docs/superpowers/specs/2026-11-10-article-tag-filter-design.md(9e39128c6 已合入 origin/cfclub,100 轮核验)。
- 实现提交:
6e9a511e2(feat(article) tag 筛选,6 文件 84+/15-,Agnes Agent 产出)已合入 origin/cfclub,git merge-base --is-ancestor 6e9a511e2 origin/cfclub ✓ IN CHAIN(100 轮已核验)。
- 缺口实证(研发侧本轮核验):① 状态机已建键
content.article.listByTag(stage=RED,S-cfc-131,23:33 --add-task 入池,溯源锚定设计规格);② 实现已在链但零契约测试(cfc-backend/src/test 无 Article* 契约测试,find 实证);③ 属「补测试」型 RED(实现先于测试登记,非测试先行缺口)。
2. 待测端点契约(供测试侧建用例)
| 端点 |
方法 |
请求体 |
响应 |
功能 |
/api/articles/list |
POST |
含 tag 参数(原 dimensionCode 槽位) |
Result<Page> |
按文章标签动态筛选(tag=null 回退全量),关键词搜索保留,卡片五维浮标保留(信息展示非分类) |
/api/articles/tags |
POST |
空 |
Result<List> |
返回 Top20 标签(articles.tags 聚合频次) |
设计要点(§3):ArticleService 新增 10 参 getPublicList(位置4=tag,parseCommaOrJsonTags 内存过滤)+ listTopTags 聚合频次 TopN,旧 8/9 参代理传 tag=null;前端 index.vue tabList 动态化(全部+各标签)+ loadArticles params.dimensionCode→tag + loadTags();api.js 新增 getArticleTags。
3. 建议覆盖用例(测试侧自决,非研发指令)
- 两端点:匿名 401 / 有 token 正常;
- list:tag 过滤正确(多 tag 逗号/JSON 数组)、tag=null 全量、关键词搜索保留、卡片五维浮标不变;
- tags:Top20 聚合频次正确、空表返回空、超 20 截断;
- 旧参数兼容:8/9 参代理传 tag=null 行为不回归;
- HTTP 方法契约:GET 应 405(本仓接口统一 @PostMapping)。
4. 请测试侧
① 依 §2 契约补 Article*ContractTest(MockMvc 风格,同包既有惯例);② 写完 python tdd_orchestrate.py --project E:/cfc --role 测试 --mark-red content.article.listByTag --commit <sha> --note "测试负责人(第101轮接力)" --from-session <SID> 登记 RED;③ 研发侧据 red_sha 后续确认实现使绿(实现已在链 6e9a511e2,GREEN 阶段仅需复跑契约测试核验,无需新实现);④ 前端 Playwright 三类流属实现合入后测试侧补,非本 RED 前置。注意 pom.xml:28 <skipTests>true</skipTests>,mvn test 须显式 -DskipTests=false。优先级 P2(知识中心标签筛选,不阻塞 241 SC 主线)。
TR-27:5 个前端/langgraph 契约测试已合入在链(S-cfc-132~136),red_sha 待测试侧 mark-red 登记 → 登记后自动续派 GREEN 实现(研发 → 测试,2026-11-11 07:5x 错峰轮)
1. 背景:契约测试已由测试侧交付,实现缺口待派
- B-135-1(前端 16 红)与 B-135-2/B-134-4(langgraph)5 键契约测试已全部合入 origin/cfclub(IN-CHAIN 核验 ✓):
| 键 |
任务 |
契约提交 |
内容 |
| family.signature.healthPlanSummary |
S-cfc-132 |
a3585aa57 |
健康计划摘要组件 health-plan-summary.vue(RED 8 失败待 GREEN) |
| family.signature.consigneeEditor |
S-cfc-133 |
8e8f9c291 + merge 9086c162e |
收件人编辑 consignee-edit.vue(RED 13 红) |
| growth.history.dayGroupView |
S-cfc-134 |
d3fe276eb |
成长打卡按日期分组视图(RED 10 红) |
| langgraph.pytest.exitHang |
S-cfc-135 |
c8d6b0d44 |
LLM 调用面线程必须 daemon(RED 2 失败) |
| langgraph.intent.errorPropagate |
S-cfc-136 |
8f5fe923e |
上游 429/401 必须传播不得吞 null(RED 3 失败) |
- 5 个 RED 任务会话已回收归口 done(研发侧 07:5x):R105 派发的「写契约测试」任务指令与测试侧已合入契约冲突 → lan-189 会话空转 succeeded 无产出(task 级无 git 证据,但键级契约已交付)。按 O-16「git 真理为准」在
.workbuddy/tasks.json 备份后回填契约 sha 归口 done,置 requeue 保护避免 T8 误重派。
2. 请测试侧
① 对上述 5 键执行 --role 测试 --mark-red <key> --commit <契约sha> --note "测试负责人(第N轮)" 登记 red_sha(red_sha 键级登记属测试侧职责,研发侧不代越);② 登记后编排侧 --auto 将自动 make_green_task 续派 GREEN 实现任务(前端 3 件:health-plan-summary.vue / consignee-edit.vue / growth-main 日期分组;langgraph 2 件:daemon 线程 / 429 传播);③ 若测试侧已登记过请忽略本条。
3. 提示
- 前端契约位于
cfc-frontend/__tests__/pages/signature/、__tests__/pages/growth-main/;langgraph 契约位于 cfc-langgraph/tests/。
- pom.xml:28
<skipTests>true</skipTests>,mvn test 须显式 -DskipTests=false。
- 优先级 P0(B-135-1 前端 16 红 / B-134-4 P0 langgraph 429 传播),不阻塞 241 SC 主线计数。