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

test(巡检): 第67轮实际跑测档——四套件实测+B-34/35/37复验通过+台账刷新

- 后端 Maven full: 277类/2219例 96.71% (2146过/40F/29E/4S), 43m8s
- cfc-web 90/90、cfc-frontend 313/313 全绿; pytest 51/51 全绿(B-34实证)
- 覆盖 10.4%→22.2% (discovery 432/1943; EVD契约类入编译树)
- 复验通过: B-34(51/51)、B-35(DanReportParse 38/38)、B-37(SleepConfigTags 10/10)
- blockers.md: B-13环境红实测修正(数据源指向差异)+新增B-38(26红类69例归因)
- 关键契约类9个全绿; SRS/场景零变更无需更新用例
- 仅测试侧产物, 不触碰研发WIP
E2E Test Bot 5 дней назад
Родитель
Сommit
62c71b3f11

+ 168 - 0
docs/tdd/test/automation-run-2026-11-07-0930.md

@@ -0,0 +1,168 @@
+# 测试负责人工作汇报(第 67 轮 · 实际跑测档)
+
+> **轮次**:2026-11-07 09:30 定时自动化巡检(ccb91e89)
+> **模式**:execute 档 —— 除编译之外的自动化测试全量实测(非仅 discovery)
+> **角色**:测试负责人(不代写生产代码)
+
+---
+
+## 基本信息
+
+| 项目 | 内容 |
+|------|------|
+| 汇报人 | 测试负责人(定时自动化巡检 agent) |
+| 汇报周期 | 2026-11-07 09:30(第 67 轮) |
+| 负责模块/单元 | cfc 全仓四套件:cfc-backend(Maven surefire)/ cfc-web(Jest)/ cfc-frontend(Jest)/ cfc-langgraph(pytest) |
+
+---
+
+## 一、本轮工作数据汇总
+
+### 1.1 测试用例建设
+
+| 指标 | 数量 | 说明 |
+|------|------|------|
+| **本轮新增测试用例数** | 0 个 | 本轮无新写用例;SRS/场景零变更,无需新增(见下) |
+| **本轮验证执行测试数** | 2643 个 | 后端 2219 + cfc-web 90 + cfc-frontend 313 + pytest 51 实跑(另 12 pytest skip + 4 后端 skip) |
+| **用例通过率** | 后端 96.71% / 前端 100% / pytest 100%(实跑口径) |
+
+> **SRS/场景变更核查**:`tests/user-scenarios`、`tests/test-cases` 自 2026-11-07 02:10 **零变更**(`find -newermt` 返回空)→ **无需更新测试用例**。但发现 3 处**产品文案/规则变更后测试断言过期**(属 B-18 A 类断言基线漂移,非 SRS 文档变更,详见 1.3/附录 C)。
+
+### 1.2 会话与任务分发
+
+| 指标 | 数量 | 说明 |
+|------|------|------|
+| **分派任务数** | 0 个 | 本自动化巡检无人工会话分发 |
+| **恢复智能体会话数** | 0 个 | 无 |
+| **当前在用会话数** | 0 个 | 纯自动化离线巡检,无活跃智能体会话 |
+
+### 1.2b 各会话当前工作状态列表
+
+本巡检为单 agent 定时任务,无多会话编排,故不适用(状态机分布见 1.5)。
+
+### 1.3 问题处置
+
+| 指标 | 数量 | 说明 |
+|------|------|------|
+| **新测试发现问题数** | 3 个 | ① B-38(本轮 26 红类/69 红例归因汇总)② GuideModuleIntegrationTest `platform_fee` 数据截断(真实候选)③ DimensionRegistryMapContractTest 3F(新契约断言与实现不一致) |
+| **已解决测试相关问题数** | 3 个 | ① B-34(问卷 `prompt_template`)pytest 51/51 全绿实证修复生效 ② B-35(DAN 解析 A1/A2/B4)38/38 全绿复验通过 ③ B-37(sleep.config.tags blank-key)10/10 全绿复验通过 |
+| **待解决测试相关问题数** | 2 个(新增)+ 既有 | B-38 归因需研发关注;B-13 环境红待处置;其余承袭 B-1~B-37 在册 |
+
+### 1.4 本轮 git 提交与推送证据(真理证据)
+
+| 提交 sha | 关联任务/能力键 | 阶段 | 触及文件类型 | 目标分支 | 已推送远端 | 备注 |
+|----------|-----------------|------|--------------|----------|------------|------|
+| `(本轮提交,见文末)` | 巡检报告/台账 | 巡检 | 报告+台账 | cfclub | 是 | 仅测试侧产物,不触碰研发 WIP |
+
+> 本轮 `HEAD=7ecb11d02`,`= origin/cfclub`,工作区含研发 WIP(21 测试文件 + 8 pytest + 1 删除资产)——**测试角色不代提交研发 WIP**,仅提交测试侧产物。
+
+### 1.5 状态机阶段分布(全局进度)
+
+| 阶段 | 键数 | 备注 |
+|------|------|------|
+| GREEN | 5 | health.report.createReport / dan.assessment.getActiveMaterial / guide.trainingPlan.getPlanDetail / admin.auth.login / health.report.upload(本工作区账本) |
+| YELLOW | — | sleep.config.tags 键不在本工作区账本(B-37 复验通过,`--mark-green` 由研发负责人侧执行) |
+| RED / UNTRACKED / DONE | — | 本工作区账本未跟踪 |
+
+> 完整账本 22 键分布见研发负责人侧状态机;本工作区 `state.json` 仅 5 键全 GREEN。
+
+### 1.6 数据源健康度
+
+| 数据源 | 读取键数 | 是否正常 | 备注 |
+|--------|----------|----------|------|
+| 需求侧(⏳ wish) | 5 | 正常 | state.json 5 键均可达 |
+| 契约常量(contract) | 9 | 正常 | 9 个关键契约类全部实跑 GREEN |
+| 测试用例引用(test_case_map) | 3740 | 正常 | inventory 跨源编目 |
+| 执行结果回填(case_results) | 2219 | 正常 | 后端 surefire 277 类全解析 |
+
+---
+
+## 二、向研发提出的改进建议
+
+| 序号 | 建议标题 | 问题描述 | 根因分析 | 建议方案 | 优先级 | 状态 |
+|------|----------|----------|----------|----------|--------|------|
+| 1 | 处置 B-13 环境红 | 3 个 `@SpringBootTest` 类(AdminFamilyOverviewControllerTest/FamilyAdminOverviewServiceTest/UserServiceFamilyNameLinkTest)8 例每轮必红 | `primaryDataSource`(Hikari)→ `Communications link failure`(连接池初始化失败)。本轮实测确认:3306 有监听,但该数据源指向实例握手失败;另 GuideModuleIntegrationTest 能写库(`MysqlDataTruncation`),说明存在可达 MySQL —— B-13 属**数据源指向差异**而非「本机无 MySQL」 | 改 `@ActiveProfiles("test")` + `src/test/resources/application-test.yml` 统一指向可达测试库(池上限 4);或修正 primaryDataSource 指向 | P0 | 待评估 |
+| 2 | 同步 3 处文案/规则断言 | ArticleWorkflowTest(「仅已驳回」vs「仅已驳回或已撤回」)、StatsControllerTest(「未关联家庭」vs「请先创建或加入家庭」)、WishControllerTest(childId→memberId)共 6 例断言过期 | 产品文案/规则迭代后测试断言未同步(B-18 同族 A 类基线漂移) | 测试侧按新文案更新断言并提交(下轮处理);产品侧同步明确规则语义 | P1 | 待评估 |
+| 3 | 复验 GuideModuleIntegrationTest `platform_fee` 截断 | `testGuidePackageCreationFlow` 报 `MysqlDataTruncation: Out of range value for column 'platform_fee'` | 写入值超出 `platform_fee` 列范围(schema 未迁移或金额超范围)——**真实问题候选**,非测试误报 | 研发核验 `platform_fee` 列定义与迁移脚本,确认 schema 与代码一致性 | P1 | 待评估 |
+| 4 | 修复 WIP 契约类断言 | DimensionRegistryMapContractTest 3F(unknown legacy 期望 data=null 实得原值;missing 期望 400 实得 200) | 维度合并后新契约类断言与实现不一致(TDD 红 or 实现缺口) | 研发按契约口径补齐实现或按实现口径修订断言(需明确契约意图) | P1 | 待评估 |
+| 5 | 修 A 类测试装置缺陷 | 剩余 A 类 ~15 类 50 例(doNothing 误用/matcher 混用/NPE/桩名过期) | Mockito API 误用 + 测试装置未跟进生产重构(B-18/B-25 同族) | 测试侧批量修复(最大杠杆:修完 G1 预计 →97%+),按 B-18 清单逐类收口 | P1 | 待评估 |
+| 6 | 规范 EVD/契约测试入库 | 36 个新增契约测试类进入编译树,覆盖 10.4%→22.2%,但部分仍为工作区未跟踪文件 | `.gitignore:70 *.py` 忽略脚本(B-33)+ 测试文件未入库(B-23 同族) | 测试文件 `git add` + commit + push 入库;`.gitignore` 由研发放行例外 | P2 | 待评估 |
+
+---
+
+## 三、本轮阻塞与风险
+
+| 阻塞项 | 影响范围 | 阻塞类型 | 处置进展 | 需要协调 |
+|--------|----------|----------|----------|----------|
+| B-13 环境红(primaryDataSource 连接池初始化失败) | 3 类 8 例每轮必红 | 研发/环境 | 待处理(本轮确认数据源指向差异) | 研发修复数据源指向或测试配置 |
+| B-38 本轮红类归因(26 类/69 例) | 后端通过率 96.71%(+0.93pt) | 测试/研发 | 已归因,见附录 C | 研发关注真实候选(GuideModuleIntegrationTest) |
+| 研发 WIP 未入库(21 测试文件 + 8 pytest + 1 删除资产) | 覆盖/度量不可复现 | 研发/流程 | 待 O-5 裁决(测试角色不代提交) | 主理人裁决 WIP 入库 |
+| B-33 `.gitignore:70 *.py` 忽略脚本 | 度量脚本写了就丢 | 研发/流程 | 待处理 | 研发放行例外 |
+
+---
+
+## 四、下轮工作计划
+
+| 计划项 | 预计完成时间 | 前置依赖 | 备注 |
+|--------|--------------|----------|------|
+| 全量四套件复跑(承袭本轮基线 96.71%) | 下轮巡检 | 无 | 若源码零变更则采信,有变更则重跑 |
+| 同步 3 处文案断言 + 修 A 类装置缺陷(B-18 清单) | 下轮巡检 | 测试侧可独立处理 | 修复后复跑定向确认 |
+| B-37 `sleep.config.tags` 键 `--mark-green` | 下轮巡检 | 研发负责人侧执行 | 10/10 绿证据已备 |
+| 跟踪 TR-10~14(B-37/B-35/EVD 场景跑通登记) | 下轮巡检 | 三类流证据 | 按 sc-key-map 口径补登记 |
+
+---
+
+## 附录 A:本轮新增测试用例明细
+
+本轮无新增用例(SRS/场景零变更)。新增契约测试类(进入编译树使覆盖提升)为研发侧 EVD-8R/9/10/11/12 等 36 个,非测试侧新写。
+
+## 附录 B:任务分派与会话恢复明细
+
+无(纯自动化巡检,无会话分发)。
+
+## 附录 C:新发现问题明细(本轮红类归因 · 26 类 / 40F+29E=69 例)
+
+| 问题 ID | 类 | 类型 | 归因 | 路由去向 | 处置状态 |
+|---------|-----|------|------|----------|----------|
+| B-38-1 | AdminFamilyOverviewControllerTest / FamilyAdminOverviewServiceTest / UserServiceFamilyNameLinkTest(3E/3E/2E=8 例) | 环境红 | `primaryDataSource`→Hikari→`Communications link failure`(B-13 同族,数据源指向差异) | 研发/环境 | 待处理 |
+| B-38-2 | ArticleWorkflowTest(3F)/StatsControllerTest(1F)/WishControllerTest(2F)/MindFortuneControllerTest(1F)(7 例) | 断言过期 | 产品文案/规则/错误码变更后断言未同步(B-18 同族) | 测试自处置 | 待处理(下轮同步) |
+| B-38-3 | CfCommissionServiceSettleTest(8F)/ProductOrderServiceFulfillmentMultiModeTest(6E)/ProductOrderServiceUpdateExpressFieldTest(3F)/DailyCheckinStreakFlowTest(1E)/PlannerBindInviteFlowTest(5F1E)/GuideFamilyTaskControllerTest(2F1E)/GuideRolePermissionTest(1F1E)/ServiceRoleApproveTest(2E)/TaskPlanServiceTest(1F)/FamilyJoinRequestServiceReferrerBindTest(4E)/FortuneServiceTest(2E)/GrowthRecordSyncFlowTest(1F2E)(~40 例) | 装置缺陷 | Mockito 误用(doNothing/matcher)/桩缺失/NPE(B-18/B-25 同族) | 测试自处置 | 待处理(B-18 清单) |
+| B-38-4 | DimensionRegistryMapContractTest(3F)/MembershipPaySwitchTest(1F)/PaymentServiceORDRoutingTest(1F)/OrchestrationEngineTest(1F)/OrchestrationIntegrationTest(1F)/EnergySystemFlowTest(6F)(13 例) | 契约/行为断言不一致 | 新契约类断言与实现不一致 or 集成流环境敏感(500) | 研发 | 待评估 |
+| B-38-5 | GuideModuleIntegrationTest(1E) | 真实候选 | `platform_fee` 数据截断(schema 与代码不一致) | 研发 | 待评估 |
+
+---
+
+## 附录 D:关键契约类复验(本轮全量实跑证据)
+
+| 契约类 | 结果 | 关联阻塞 |
+|--------|------|----------|
+| SleepConfigTagsMechanismContractTest | 10/10 GREEN | **B-37 复验通过**(blank-key 已修复) |
+| DanReportParseServiceTest | 38/38 GREEN | **B-35 复验通过**(A1/A2/B4 解析已修复) |
+| HealthDimensionControllerTest | 15/15 GREEN | B-18 相关类转绿 |
+| CfBalanceControllerTest | 8/8 GREEN | B-8/B-10 保持绿 |
+| TaskControllerReviewTest | 17/17 GREEN | B-21 保持绿 |
+| AssessmentComparisonContractTest | 6/6 GREEN | 新契约类 |
+| DanReportUploadContractTest | 11/11 GREEN | 新契约类 |
+| GlobalSearchScP82ContractTest | 5/5 GREEN | 新契约类 |
+| HealthReportAuditContractTest | 8/8 GREEN | 新契约类 |
+
+---
+
+## 附录 E:本轮四套件实测总览
+
+| 套件 | 实测 | 结果 | 备注 |
+|------|------|------|------|
+| cfc-backend(Maven surefire) | 277 类 / 2219 例 | **96.71%**(2146 过 / 40F / 29E / 4S) | 43m8s,`-DskipTests=false` |
+| cfc-web(Jest) | 12 套件 / 90 例 | **100%**(47.6s) | 连续多轮全绿 |
+| cfc-frontend(Jest) | 16 套件 / 313 例 | **100%**(34.3s) | 含 coupon-claimed-actions/team-invite-share |
+| cfc-langgraph(pytest) | 51 passed / 12 skipped / 0 failed | **100%**(302s) | **B-34 实证**(此前 2 红清零) |
+| 覆盖(discovery) | 359 控制器 / 1943 handler | 覆盖 432(**22.2%**,covered=32/partial=196/uncovered=130) | 较上轮 10.4% 大幅提升(EVD 契约类入链) |
+| 编目(inventory) | 跨源 | md 784 / Playwright 522 / Python 67 / Java@Test 2367 / 场景 11 / 合计 3740 | 台账刷新 |
+
+**对比基线**(第 65/66 轮 02:15/01:58):1847 例 / 95.78% → 本轮 **2219 例 / 96.71%**(+372 例,+0.93pt)。用例数增长主因:EVD 契约类等 WIP 测试进入编译树 + execute 档全量(上轮采信口径)。
+
+---
+
+> **提交说明**:本轮测试结果有实质变化(B-34/B-35/B-37 复验通过、覆盖 10.4%→22.2%、通过率 95.78%→96.71%),按指令提交远程并通知研发。提交内容仅限测试侧产物(本报告 + blockers 台账 + discovery/inventory/automation-status),不触碰研发 WIP。
+
+**模板版本**:v1.1 · 本轮巡检产物 · 2026-11-07 09:30

+ 107 - 37
docs/tdd/test/automation-status.md

@@ -21,10 +21,10 @@
 | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
 | 结构化测试用例(md) | 11 | 784 | 0 | 784 | 784 | 0 | 0 | 0 | 0 |
 | 用户场景(md) | 11 | 0 | 0 | 11 | 11 | 0 | 0 | 0 | 0 |
-| Playwright(e2e/integration) | 76 | 444 | 76 | 0 | 76 | 0 | 0 | 0 | 0 |
-| Python(pytest) | 11 | 47 | 11 | 0 | 11 | 0 | 0 | 0 | 0 |
-| Java后端测试 | 232 | 1839 | 232 | 0 | 232 | 0 | 0 | 0 | 0 |
-| **合计** | — | **3114** | **319** | **795** | 1114 | 0 | 0 | 0 | 0 |
+| Playwright(e2e/integration) | 88 | 522 | 88 | 0 | 78 | 0 | 7 | 3 | 0 |
+| Python(pytest) | 11 | 67 | 11 | 0 | 11 | 0 | 0 | 0 | 0 |
+| Java后端测试 | 290 | 2367 | 290 | 0 | 273 | 0 | 15 | 2 | 0 |
+| **合计** | — | **3740** | **389** | **795** | 1157 | 0 | 22 | 5 | 0 |
 
 ## 二、结构化测试用例自动化状态(`tests/test-cases/*.md`)
 
@@ -815,37 +815,50 @@
 | `tests/test-cases/vendor.md#TC-S-N05` | 报告解析接入 | 服务商 | P0 | 文档用例(待自动化) | 未跟踪 | 设计:类型/大小校验;不执行;存储隔离|e2e:上传校验 |
 | `tests/test-cases/vendor.md#TC-S-N06` | 营养食谱 | 服务商 | P1 | 文档用例(待自动化) | 未跟踪 | 设计:内容转义存储/渲染;不执行|e2e:内容安全 |
 
-## 三、Playwright 端到端/集成(`tests/**/*.spec.js`)
+## 三、Playwright 端到端/集成(`tests/*.md`)
 
 | 来源 | 用例数 | 自动化状态 | 执行状态 | 备注 |
 | --- | --- | --- | --- | --- |
 | `tests/e2e/_smoke_browser.spec.js` | 2 | 已自动化(e2e) | 未跟踪 | — |
 | `tests/e2e/activity-registration.spec.js` | 5 | 已自动化(e2e) | 未跟踪 | — |
-| `tests/e2e/admin-activity-review.spec.js` | 2 | 已自动化(e2e) | 未跟踪 | — |
-| `tests/e2e/admin-butler-review.spec.js` | 6 | 已自动化(e2e) | 未跟踪 | — |
-| `tests/e2e/admin-commission-config.spec.js` | 4 | 已自动化(e2e) | 未跟踪 | — |
+| `tests/e2e/admin-activity-review.spec.js` | 2 | 已自动化(e2e) | 通过 | — |
+| `tests/e2e/admin-butler-review.spec.js` | 6 | 已自动化(e2e) | 失败 | — |
+| `tests/e2e/admin-commission-config.spec.js` | 4 | 已自动化(e2e) | 失败 | — |
 | `tests/e2e/admin-ecom-supplier.spec.js` | 3 | 已自动化(e2e) | 未跟踪 | — |
 | `tests/e2e/admin-menu-survey.spec.js` | 2 | 已自动化(e2e) | 未跟踪 | — |
 | `tests/e2e/admin-panel.spec.js` | 4 | 已自动化(e2e) | 未跟踪 | — |
 | `tests/e2e/admin-promotion-config.spec.js` | 2 | 已自动化(e2e) | 未跟踪 | — |
 | `tests/e2e/ai-plan-task-flow.spec.js` | 7 | 已自动化(e2e) | 未跟踪 | — |
-| `tests/e2e/api/api-smoke.spec.js` | 4 | 已自动化(e2e) | 未跟踪 | — |
-| `tests/e2e/api/article-api.spec.js` | 7 | 已自动化(e2e) | 未跟踪 | — |
+| `tests/e2e/api/activity-ranking-sc-p77-p86.spec.js` | 5 | 已自动化(e2e) | 未跟踪 | — |
+| `tests/e2e/api/api-smoke.spec.js` | 4 | 已自动化(e2e) | 通过 | — |
+| `tests/e2e/api/article-api.spec.js` | 7 | 已自动化(e2e) | 通过 | — |
+| `tests/e2e/api/badge-sc-c09-c10-a05.spec.js` | 8 | 已自动化(e2e) | 未跟踪 | — |
 | `tests/e2e/api/butler-fallback.spec.js` | 4 | 已自动化(e2e) | 未跟踪 | — |
-| `tests/e2e/api/contact-api.spec.js` | 6 | 已自动化(e2e) | 未跟踪 | — |
-| `tests/e2e/api/energy-api.spec.js` | 8 | 已自动化(e2e) | 未跟踪 | — |
-| `tests/e2e/api/family-member-api.spec.js` | 14 | 已自动化(e2e) | 未跟踪 | — |
+| `tests/e2e/api/coach-food-sc-b07.spec.js` | 5 | 已自动化(e2e) | 未跟踪 | — |
+| `tests/e2e/api/contact-api.spec.js` | 6 | 已自动化(e2e) | 通过 | — |
+| `tests/e2e/api/dimension-energy-contract.spec.js` | 14 | 已自动化(e2e) | 未跟踪 | — |
+| `tests/e2e/api/energy-api.spec.js` | 8 | 已自动化(e2e) | 通过 | — |
+| `tests/e2e/api/energy-sc-p87-p88-c24.spec.js` | 6 | 已自动化(e2e) | 未跟踪 | — |
+| `tests/e2e/api/family-member-api.spec.js` | 14 | 已自动化(e2e) | 通过 | — |
 | `tests/e2e/api/generated/tc-scripted.spec.js` | 0 | 已自动化(e2e) | 未跟踪 | — |
+| `tests/e2e/api/guide-review-sc-t06-t18.spec.js` | 5 | 已自动化(e2e) | 未跟踪 | — |
 | `tests/e2e/api/human-butler-workorder.spec.js` | 4 | 已自动化(e2e) | 未跟踪 | — |
-| `tests/e2e/api/nonfunc-perf-compat.spec.js` | 5 | 已自动化(e2e) | 未跟踪 | — |
-| `tests/e2e/api/nonfunc-security.spec.js` | 11 | 已自动化(e2e) | 未跟踪 | — |
+| `tests/e2e/api/incentive-loop-sc-x05.spec.js` | 3 | 已自动化(e2e) | 未跟踪 | — |
+| `tests/e2e/api/mall-exchange-sc-c22.spec.js` | 4 | 已自动化(e2e) | 未跟踪 | — |
+| `tests/e2e/api/nonfunc-perf-compat.spec.js` | 5 | 已自动化(e2e) | 通过 | — |
+| `tests/e2e/api/nonfunc-security.spec.js` | 11 | 已自动化(e2e) | 失败 | — |
 | `tests/e2e/api/sc-p-03-switch-role.spec.js` | 11 | 已自动化(e2e) | 未跟踪 | — |
+| `tests/e2e/api/task-c14-reject-recycle.spec.js` | 8 | 已自动化(e2e) | 未跟踪 | — |
+| `tests/e2e/api/task-checkin-sc-c05.spec.js` | 4 | 已自动化(e2e) | 未跟踪 | — |
 | `tests/e2e/api/task-create-scp10.spec.js` | 10 | 已自动化(e2e) | 未跟踪 | — |
+| `tests/e2e/api/task-frequency-sc-p12.spec.js` | 5 | 已自动化(e2e) | 未跟踪 | — |
 | `tests/e2e/api/wechat-login.spec.js` | 5 | 已自动化(e2e) | 未跟踪 | — |
+| `tests/e2e/api/wish-flow-sc-p13-p14-c04.spec.js` | 11 | 已自动化(e2e) | 未跟踪 | — |
 | `tests/e2e/article-management.spec.js` | 5 | 已自动化(e2e) | 未跟踪 | — |
 | `tests/e2e/assessment-appointment-functional.spec.js` | 7 | 已自动化(e2e) | 未跟踪 | — |
 | `tests/e2e/assessment-appointment.spec.js` | 6 | 已自动化(e2e) | 未跟踪 | — |
 | `tests/e2e/assessment-order-flow.spec.js` | 5 | 已自动化(e2e) | 未跟踪 | — |
+| `tests/e2e/ci-smoke.spec.js` | 1 | 已自动化(e2e) | 未跟踪 | — |
 | `tests/e2e/consignee-management.spec.js` | 8 | 已自动化(e2e) | 未跟踪 | — |
 | `tests/e2e/contact-management.spec.js` | 4 | 已自动化(e2e) | 未跟踪 | — |
 | `tests/e2e/daily-checkin-streak.spec.js` | 9 | 已自动化(e2e) | 未跟踪 | — |
@@ -894,19 +907,18 @@
 | `tests/e2e/wish-exchange-flow.spec.js` | 12 | 已自动化(e2e) | 未跟踪 | — |
 | `tests/integration/mini-games-api.spec.js` | 13 | 已自动化(e2e) | 未跟踪 | — |
 | `tests/integration/plan-chain.spec.js` | 10 | 已自动化(e2e) | 未跟踪 | — |
-| `tests/unit/games/1a2b.spec.js` | 1 | 已自动化(e2e) | 未跟踪 | — |
 
 ## 四、Python 测试(`cfc-langgraph/tests · tools/xaf_agent_hub/tests`)
 
 | 来源 | 用例数 | 自动化状态 | 执行状态 | 备注 |
 | --- | --- | --- | --- | --- |
 | `cfc-langgraph/tests/qna/test_graph.py` | 4 | 已自动化(pytest) | 未跟踪 | — |
-| `cfc-langgraph/tests/test_analyze.py` | 2 | 已自动化(pytest) | 未跟踪 | — |
-| `cfc-langgraph/tests/test_auto_tag.py` | 5 | 已自动化(pytest) | 未跟踪 | — |
-| `cfc-langgraph/tests/test_chat.py` | 1 | 已自动化(pytest) | 未跟踪 | — |
+| `cfc-langgraph/tests/test_analyze.py` | 4 | 已自动化(pytest) | 未跟踪 | — |
+| `cfc-langgraph/tests/test_auto_tag.py` | 12 | 已自动化(pytest) | 未跟踪 | — |
+| `cfc-langgraph/tests/test_chat.py` | 4 | 已自动化(pytest) | 未跟踪 | — |
 | `cfc-langgraph/tests/test_graph.py` | 5 | 已自动化(pytest) | 未跟踪 | — |
 | `cfc-langgraph/tests/test_health_plan.py` | 13 | 已自动化(pytest) | 未跟踪 | — |
-| `cfc-langgraph/tests/test_intent.py` | 5 | 已自动化(pytest) | 未跟踪 | — |
+| `cfc-langgraph/tests/test_intent.py` | 13 | 已自动化(pytest) | 未跟踪 | — |
 | `cfc-langgraph/tests/test_memory.py` | 3 | 已自动化(pytest) | 未跟踪 | — |
 | `cfc-langgraph/tests/test_recommend.py` | 3 | 已自动化(pytest) | 未跟踪 | — |
 | `cfc-langgraph/tests/test_report_parse.py` | 5 | 已自动化(pytest) | 未跟踪 | — |
@@ -916,19 +928,19 @@
 
 | 来源 | 用例数 | 自动化状态 | 执行状态 | 目标类 |
 | --- | --- | --- | --- | --- |
-| `cfc-backend/src/test/java/com/etotem/cfc/common/AdminRolesTest.java` | 9 | 已自动化(@Test) | 未跟踪 | AdminRoles |
+| `cfc-backend/src/test/java/com/etotem/cfc/common/AdminRolesTest.java` | 9 | 已自动化(@Test) | 通过 | AdminRoles |
 | `cfc-backend/src/test/java/com/etotem/cfc/common/ResultCodeFactoryTest.java` | 11 | 已自动化(@Test) | 未跟踪 | ResultCodeFactory |
 | `cfc-backend/src/test/java/com/etotem/cfc/common/TestRoles.java` | 0 | 已自动化(@Test) | 未跟踪 | TestRoles.java |
-| `cfc-backend/src/test/java/com/etotem/cfc/config/AttributionStage1FoundationTest.java` | 7 | 已自动化(@Test) | 未跟踪 | AttributionStage1Foundation |
-| `cfc-backend/src/test/java/com/etotem/cfc/config/DatabaseInitializerSeedTest.java` | 6 | 已自动化(@Test) | 未跟踪 | DatabaseInitializerSeed |
-| `cfc-backend/src/test/java/com/etotem/cfc/config/FamilyAccessInterceptorTest.java` | 11 | 已自动化(@Test) | 未跟踪 | FamilyAccessInterceptor |
+| `cfc-backend/src/test/java/com/etotem/cfc/config/AttributionStage1FoundationTest.java` | 7 | 已自动化(@Test) | 通过 | AttributionStage1Foundation |
+| `cfc-backend/src/test/java/com/etotem/cfc/config/DatabaseInitializerSeedTest.java` | 6 | 已自动化(@Test) | 通过 | DatabaseInitializerSeed |
+| `cfc-backend/src/test/java/com/etotem/cfc/config/FamilyAccessInterceptorTest.java` | 11 | 已自动化(@Test) | 通过 | FamilyAccessInterceptor |
 | `cfc-backend/src/test/java/com/etotem/cfc/config/JwtInterceptorContractEdgeTest.java` | 10 | 已自动化(@Test) | 未跟踪 | JwtInterceptorContractEdge |
 | `cfc-backend/src/test/java/com/etotem/cfc/config/JwtInterceptorLoginRequiredPathTest.java` | 3 | 已自动化(@Test) | 未跟踪 | JwtInterceptorLoginRequiredPath |
-| `cfc-backend/src/test/java/com/etotem/cfc/config/JwtInterceptorLoginRequiredTest.java` | 5 | 已自动化(@Test) | 未跟踪 | JwtInterceptorLoginRequired |
+| `cfc-backend/src/test/java/com/etotem/cfc/config/JwtInterceptorLoginRequiredTest.java` | 5 | 已自动化(@Test) | 通过 | JwtInterceptorLoginRequired |
 | `cfc-backend/src/test/java/com/etotem/cfc/config/JwtInterceptorWechatLoginTest.java` | 4 | 已自动化(@Test) | 未跟踪 | JwtInterceptorWechatLogin |
 | `cfc-backend/src/test/java/com/etotem/cfc/config/ScG06JwtGuardTest.java` | 19 | 已自动化(@Test) | 未跟踪 | ScG06JwtGuard |
-| `cfc-backend/src/test/java/com/etotem/cfc/controller/AttributionControllerTest.java` | 1 | 已自动化(@Test) | 未跟踪 | AttributionController |
-| `cfc-backend/src/test/java/com/etotem/cfc/controller/AttributionSurveyRoutingTest.java` | 3 | 已自动化(@Test) | 未跟踪 | AttributionSurveyRouting |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/AttributionControllerTest.java` | 1 | 已自动化(@Test) | 通过 | AttributionController |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/AttributionSurveyRoutingTest.java` | 3 | 已自动化(@Test) | 通过 | AttributionSurveyRouting |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/AuthWechatLoginContractTest.java` | 10 | 已自动化(@Test) | 未跟踪 | AuthWechatLoginContract |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/BadgeControllerGetMemberBadgesTest.java` | 9 | 已自动化(@Test) | 未跟踪 | BadgeControllerGetMemberBadges |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/DanAssessmentControllerGetActiveMaterialTest.java` | 3 | 已自动化(@Test) | 未跟踪 | DanAssessmentControllerGetActiveMaterial |
@@ -944,24 +956,36 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/IndicatorControllerTest.java` | 2 | 已自动化(@Test) | 未跟踪 | IndicatorController |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/IndicatorFavoriteControllerTest.java` | 10 | 已自动化(@Test) | 未跟踪 | IndicatorFavoriteController |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/MembershipControllerPlansLevelOrderTest.java` | 1 | 已自动化(@Test) | 未跟踪 | MembershipControllerPlansLevelOrder |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG01LandingContractTest.java` | 7 | 已自动化(@Test) | 未跟踪 | ScG01LandingContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG03LoginMethodContractTest.java` | 13 | 已自动化(@Test) | 未跟踪 | ScG03LoginMethodContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG04InviteRegisterContractTest.java` | 9 | 已自动化(@Test) | 未跟踪 | ScG04InviteRegisterContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG05AnonymousBrowseContractTest.java` | 8 | 已自动化(@Test) | 未跟踪 | ScG05AnonymousBrowseContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG07TestModeContractTest.java` | 5 | 已自动化(@Test) | 未跟踪 | ScG07TestModeContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG08EnvAdaptiveContractTest.java` | 5 | 已自动化(@Test) | 未跟踪 | ScG08EnvAdaptiveContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG09LogoutContractTest.java` | 6 | 已自动化(@Test) | 未跟踪 | ScG09LogoutContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG10RegisterGuideContractTest.java` | 7 | 已自动化(@Test) | 未跟踪 | ScG10RegisterGuideContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG11AgreementContractTest.java` | 5 | 已自动化(@Test) | 未跟踪 | ScG11AgreementContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG12H5FallbackContractTest.java` | 6 | 已自动化(@Test) | 未跟踪 | ScG12H5FallbackContract |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminAuthControllerLoginContractTest.java` | 15 | 已自动化(@Test) | 未跟踪 | AdminAuthControllerLoginContract |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminAuthControllerLoginStatusTest.java` | 10 | 已自动化(@Test) | 未跟踪 | AdminAuthControllerLoginStatus |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminAuthWechatScanTest.java` | 11 | 已自动化(@Test) | 未跟踪 | AdminAuthWechatScan |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminButlerControllerEnvelopeTest.java` | 4 | 已自动化(@Test) | 未跟踪 | AdminButlerControllerEnvelope |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminCommissionConfigControllerTest.java` | 5 | 已自动化(@Test) | 未跟踪 | AdminCommissionConfigController |
-| `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminProductControllerBatchShelveTest.java` | 4 | 已自动化(@Test) | 未跟踪 | AdminProductControllerBatchShelve |
-| `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/ReportParserAdminControllerTest.java` | 3 | 已自动化(@Test) | 未跟踪 | ReportParserAdminController |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminCommissionConfigPartialUpdateTest.java` | 2 | 已自动化(@Test) | 未跟踪 | AdminCommissionConfigPartialUpdate |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminProductControllerBatchShelveTest.java` | 4 | 已自动化(@Test) | 通过 | AdminProductControllerBatchShelve |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/ReportParserAdminControllerTest.java` | 3 | 已自动化(@Test) | 通过 | ReportParserAdminController |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/SupplyTeamControllerInviteTest.java` | 7 | 已自动化(@Test) | 未跟踪 | SupplyTeamControllerInvite |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/ai/AIChatControllerGateTest.java` | 18 | 已自动化(@Test) | 未跟踪 | AIChatControllerGate |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/ai/ButlerControllerGateTest.java` | 9 | 已自动化(@Test) | 未跟踪 | ButlerControllerGate |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/butler/ButlerControllerEnvelopeTest.java` | 1 | 已自动化(@Test) | 未跟踪 | ButlerControllerEnvelope |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/config/SleepConfigTagsMechanismContractTest.java` | 10 | 已自动化(@Test) | 未跟踪 | SleepConfigTagsMechanismContract |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/family/FamilyMembersControllerAddMemberTest.java` | 7 | 已自动化(@Test) | 未跟踪 | FamilyMembersControllerAddMember |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/family/FamilyMembersControllerListTest.java` | 4 | 已自动化(@Test) | 未跟踪 | FamilyMembersControllerList |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/family/FamilyMembersControllerRenameFamilyTest.java` | 2 | 已自动化(@Test) | 未跟踪 | FamilyMembersControllerRenameFamily |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/growth/GrowthHistoryViewContractTest.java` | 9 | 已自动化(@Test) | 未跟踪 | GrowthHistoryViewContract |
-| `cfc-backend/src/test/java/com/etotem/cfc/controller/guide/TeacherMessageControllerMyTest.java` | 1 | 已自动化(@Test) | 未跟踪 | TeacherMessageControllerMy |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/guide/TeacherMessageControllerMyTest.java` | 1 | 已自动化(@Test) | 通过 | TeacherMessageControllerMy |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/guide/TrainingPlanControllerGetPlanDetailTest.java` | 8 | 已自动化(@Test) | 未跟踪 | TrainingPlanControllerGetPlanDetail |
-| `cfc-backend/src/test/java/com/etotem/cfc/controller/guide/TrainingPlanControllerGetPlanListTest.java` | 10 | 已自动化(@Test) | 未跟踪 | TrainingPlanControllerGetPlanList |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/guide/TrainingPlanControllerGetPlanListTest.java` | 10 | 已自动化(@Test) | 通过 | TrainingPlanControllerGetPlanList |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/reward/RewardEstimateControllerEstimateTest.java` | 11 | 已自动化(@Test) | 未跟踪 | RewardEstimateControllerEstimate |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/reward/RewardEstimateControllerTest.java` | 17 | 已自动化(@Test) | 未跟踪 | RewardEstimateController |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/task/TaskControllerCreateTaskTest.java` | 7 | 已自动化(@Test) | 未跟踪 | TaskControllerCreateTask |
@@ -973,14 +997,14 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/GrowthRecordSyncFlowTest.java` | 10 | 已自动化(@Test) | 未跟踪 | GrowthRecordSyncFlow |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/GuideModuleIntegrationTest.java` | 4 | 已自动化(@Test) | 未跟踪 | GuideModule |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/PlannerBindInviteFlowTest.java` | 9 | 已自动化(@Test) | 未跟踪 | PlannerBindInviteFlow |
-| `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/AIChatControllerTest.java` | 17 | 已自动化(@Test) | 未跟踪 | AIChatController |
-| `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/ActivityControllerTest.java` | 16 | 已自动化(@Test) | 未跟踪 | ActivityController |
+| `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/AIChatControllerTest.java` | 17 | 已自动化(@Test) | 通过 | AIChatController |
+| `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/ActivityControllerTest.java` | 16 | 已自动化(@Test) | 通过 | ActivityController |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/AdminFamilyOverviewControllerTest.java` | 3 | 已自动化(@Test) | 未跟踪 | AdminFamilyOverviewController |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/AdminSpecialPriceControllerTest.java` | 8 | 已自动化(@Test) | 未跟踪 | AdminSpecialPriceController |
-| `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/ArticleCategoryControllerTest.java` | 3 | 已自动化(@Test) | 未跟踪 | ArticleCategoryController |
-| `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/ArticleControllerTest.java` | 11 | 已自动化(@Test) | 未跟踪 | ArticleController |
-| `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/AuthControllerTest.java` | 39 | 已自动化(@Test) | 未跟踪 | AuthController |
-| `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/DailyTaskControllerTest.java` | 2 | 已自动化(@Test) | 未跟踪 | DailyTaskController |
+| `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/ArticleCategoryControllerTest.java` | 3 | 已自动化(@Test) | 通过 | ArticleCategoryController |
+| `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/ArticleControllerTest.java` | 11 | 已自动化(@Test) | 失败 | ArticleController |
+| `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/AuthControllerTest.java` | 39 | 已自动化(@Test) | 失败 | AuthController |
+| `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/DailyTaskControllerTest.java` | 2 | 已自动化(@Test) | 通过 | DailyTaskController |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/DimensionAdminControllerTest.java` | 13 | 已自动化(@Test) | 未跟踪 | DimensionAdminController |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/DimensionRegistryMapContractTest.java` | 7 | 已自动化(@Test) | 未跟踪 | DimensionRegistryMapContract |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/DimensionRegistryTreeTest.java` | 9 | 已自动化(@Test) | 未跟踪 | DimensionRegistryTree |
@@ -1033,6 +1057,7 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/service/ActivityRegistrationQuotaConcurrencyTest.java` | 6 | 已自动化(@Test) | 未跟踪 | ActivityRegistrationQuotaConcurrency |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/AiGatewayTimeoutTest.java` | 1 | 已自动化(@Test) | 未跟踪 | AiGatewayTimeout |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/ArticleAudioServiceChunkFilterTest.java` | 3 | 已自动化(@Test) | 未跟踪 | ArticleAudioServiceChunkFilter |
+| `cfc-backend/src/test/java/com/etotem/cfc/service/ButlerServiceListAllEnvelopeTest.java` | 1 | 已自动化(@Test) | 未跟踪 | ButlerServiceListAllEnvelope |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/CfBalanceServiceTest.java` | 25 | 已自动化(@Test) | 未跟踪 | CfBalanceService |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/CfCommissionServiceSettleTest.java` | 12 | 已自动化(@Test) | 未跟踪 | CfCommissionServiceSettle |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/CfCommissionServiceTest.java` | 2 | 已自动化(@Test) | 未跟踪 | CfCommissionService |
@@ -1100,31 +1125,50 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/task/OrderTimeoutCancelTaskSpecialDealTest.java` | 3 | 已自动化(@Test) | 未跟踪 | OrderTimeoutCancelTaskSpecialDeal |
 | `cfc-backend/src/test/java/com/etotem/cfc/task/TaskCheckinWebhookReminderTaskTest.java` | 7 | 已自动化(@Test) | 未跟踪 | TaskCheckinWebhookReminderTask |
 | `cfc-backend/src/test/java/com/etotem/cfc/task/VirtualPayTimeoutTaskTest.java` | 5 | 已自动化(@Test) | 未跟踪 | VirtualPayTimeoutTask |
+| `cfc-backend/src/test/java/com/etotem/cfc/testutil/FrontendSourceLocator.java` | 0 | 已自动化(@Test) | 未跟踪 | FrontendSourceLocator.java |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ActivityAuditTest.java` | 10 | 已自动化(@Test) | 未跟踪 | ActivityAudit |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ActivityRegistrationListTest.java` | 3 | 已自动化(@Test) | 未跟踪 | ActivityRegistrationList |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ActivityRegistrationQuotaUnitTest.java` | 8 | 已自动化(@Test) | 未跟踪 | ActivityRegistrationQuotaUnit |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ActivityRegistrationRejectTest.java` | 3 | 已自动化(@Test) | 未跟踪 | ActivityRegistrationReject |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ActivityTagServiceTest.java` | 5 | 已自动化(@Test) | 未跟踪 | ActivityTagService |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ActivityTeamServiceUnitTest.java` | 12 | 已自动化(@Test) | 未跟踪 | ActivityTeamServiceUnit |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/AfterSalesScS06ContractTest.java` | 12 | 已自动化(@Test) | 未跟踪 | AfterSalesScS06Contract |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ArticleAutoTagServiceTest.java` | 8 | 已自动化(@Test) | 未跟踪 | ArticleAutoTagService |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ArticleBackfillTest.java` | 2 | 已自动化(@Test) | 未跟踪 | ArticleBackfill |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ArticleRelatedServiceTest.java` | 6 | 已自动化(@Test) | 未跟踪 | ArticleRelatedService |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/AssessmentComparisonContractTest.java` | 6 | 已自动化(@Test) | 未跟踪 | AssessmentComparisonContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/AssessmentPlanContractTestBase.java` | 0 | 已自动化(@Test) | 未跟踪 | AssessmentPlanContractTestBase.java |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/AssessmentQuotaAppointmentContractTest.java` | 27 | 已自动化(@Test) | 未跟踪 | AssessmentQuotaAppointmentContract |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/AttributionAdjustServiceTest.java` | 5 | 已自动化(@Test) | 未跟踪 | AttributionAdjustService |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/AttributionPipelineMockTest.java` | 2 | 已自动化(@Test) | 未跟踪 | AttributionPipelineMock |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/AttributionPlanServiceTest.java` | 2 | 已自动化(@Test) | 未跟踪 | AttributionPlanService |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/AttributionRedlinesTest.java` | 8 | 已自动化(@Test) | 未跟踪 | AttributionRedlines |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/CartReplaceComboTest.java` | 5 | 已自动化(@Test) | 未跟踪 | CartReplaceCombo |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/CfBalanceControllerTest.java` | 8 | 已自动化(@Test) | 未跟踪 | CfBalanceController |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/CoachButlerNotificationContractTest.java` | 14 | 已自动化(@Test) | 未跟踪 | CoachButlerNotificationContract |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ComboOfferCalculatorTest.java` | 8 | 已自动化(@Test) | 未跟踪 | ComboOfferCalculator |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ComboOrderStockTest.java` | 3 | 已自动化(@Test) | 未跟踪 | ComboOrderStock |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ComboServiceTest.java` | 10 | 已自动化(@Test) | 未跟踪 | ComboService |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ConditionEvaluatorServiceTest.java` | 12 | 已自动化(@Test) | 未跟踪 | ConditionEvaluatorService |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/CouponUseScP57ScP75ContractTest.java` | 11 | 已自动化(@Test) | 未跟踪 | CouponUseScP57ScP75Contract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/DanAssessmentExecutionContractTest.java` | 11 | 已自动化(@Test) | 未跟踪 | DanAssessmentExecutionContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/DanReportUploadContractTest.java` | 11 | 已自动化(@Test) | 未跟踪 | DanReportUploadContract |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/DimensionCodeConstantsTest.java` | 2 | 已自动化(@Test) | 未跟踪 | DimensionCodeConstants |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyBehaviorConfigContractTest.java` | 7 | 已自动化(@Test) | 未跟踪 | EnergyBehaviorConfigContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyConfigAdminContractTest.java` | 18 | 已自动化(@Test) | 未跟踪 | EnergyConfigAdminContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyContractTestBase.java` | 0 | 已自动化(@Test) | 未跟踪 | EnergyContractTestBase.java |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyGrantContractTest.java` | 9 | 已自动化(@Test) | 未跟踪 | EnergyGrantContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyIsolationContractTest.java` | 8 | 已自动化(@Test) | 未跟踪 | EnergyIsolationContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyLogsContractScoreHistoryTest.java` | 11 | 已自动化(@Test) | 未跟踪 | EnergyLogsContractScoreHistory |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyOverviewContractTest.java` | 7 | 已自动化(@Test) | 未跟踪 | EnergyOverviewContract |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/FamilyMemberDimensionBaseScoreServiceTest.java` | 7 | 已自动化(@Test) | 未跟踪 | FamilyMemberDimensionBaseScoreService |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/FamilyMemberServiceRenameTest.java` | 4 | 已自动化(@Test) | 未跟踪 | FamilyMemberServiceRename |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/FamilyNamingSupportTest.java` | 5 | 已自动化(@Test) | 未跟踪 | FamilyNamingSupport |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/FamilyUserSwitchRoleTest.java` | 13 | 已自动化(@Test) | 未跟踪 | FamilyUserSwitchRole |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/FiveDimensionScoreServiceTest.java` | 12 | 已自动化(@Test) | 未跟踪 | FiveDimensionScoreService |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/FiveDimensionSelfCheckContractTest.java` | 15 | 已自动化(@Test) | 未跟踪 | FiveDimensionSelfCheckContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/GlobalSearchScP82ContractTest.java` | 5 | 已自动化(@Test) | 未跟踪 | GlobalSearchScP82Contract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/GuideBindingAccessContractTest.java` | 17 | 已自动化(@Test) | 未跟踪 | GuideBindingAccessContract |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuideFamilyAccessGuardTest.java` | 9 | 已自动化(@Test) | 未跟踪 | GuideFamilyAccessGuard |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuideFamilyQueryServiceTest.java` | 4 | 已自动化(@Test) | 未跟踪 | GuideFamilyQueryService |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuideFamilyServiceBindTest.java` | 3 | 已自动化(@Test) | 未跟踪 | GuideFamilyServiceBind |
@@ -1132,19 +1176,45 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/HealthPlanDeleteCascadeTest.java` | 6 | 已自动化(@Test) | 未跟踪 | HealthPlanDeleteCascade |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/HealthPlanLazyBackfillTest.java` | 5 | 已自动化(@Test) | 未跟踪 | HealthPlanLazyBackfill |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/HealthPlanReviewGuardTest.java` | 10 | 已自动化(@Test) | 未跟踪 | HealthPlanReviewGuard |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/HealthReportAuditContractTest.java` | 8 | 已自动化(@Test) | 未跟踪 | HealthReportAuditContract |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/KnowledgeBaseBackfillTest.java` | 9 | 已自动化(@Test) | 未跟踪 | KnowledgeBaseBackfill |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ManualDimensionScoreContractTest.java` | 13 | 已自动化(@Test) | 未跟踪 | ManualDimensionScoreContract |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/MemberPriceResolverTest.java` | 6 | 已自动化(@Test) | 未跟踪 | MemberPriceResolver |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/MembershipRenewScP60ScP80ContractTest.java` | 9 | 已自动化(@Test) | 未跟踪 | MembershipRenewScP60ScP80Contract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/MembershipViewScP59ContractTest.java` | 6 | 已自动化(@Test) | 未跟踪 | MembershipViewScP59Contract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/OrderCreatePayShipConfirmScX07ContractTest.java` | 14 | 已自动化(@Test) | 未跟踪 | OrderCreatePayShipConfirmScX07Contract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/OrderRefundScP56ScA12ContractTest.java` | 11 | 已自动化(@Test) | 未跟踪 | OrderRefundScP56ScA12Contract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/PlanActivationExecutionContractTest.java` | 14 | 已自动化(@Test) | 未跟踪 | PlanActivationExecutionContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/PlanLifecycleParentContractTest.java` | 31 | 已自动化(@Test) | 未跟踪 | PlanLifecycleParentContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/PlanReviewTeacherContractTest.java` | 19 | 已自动化(@Test) | 未跟踪 | PlanReviewTeacherContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/PointsLedgerScP15ContractTest.java` | 8 | 已自动化(@Test) | 未跟踪 | PointsLedgerScP15Contract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ProductBrowseScP52ScG05ContractTest.java` | 6 | 已自动化(@Test) | 未跟踪 | ProductBrowseScP52ScG05Contract |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ProductDTOMappingTest.java` | 3 | 已自动化(@Test) | 未跟踪 | ProductDTOMapping |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ProductDetailScP53ContractTest.java` | 7 | 已自动化(@Test) | 未跟踪 | ProductDetailScP53Contract |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ProductListNutritionTagFilterTest.java` | 2 | 已自动化(@Test) | 未跟踪 | ProductListNutritionTagFilter |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ProductUpdateClearTest.java` | 5 | 已自动化(@Test) | 未跟踪 | ProductUpdateClear |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/RecommendationNutritionTagTest.java` | 1 | 已自动化(@Test) | 未跟踪 | RecommendationNutritionTag |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/RepeatTaskGeneratorPassThroughTest.java` | 3 | 已自动化(@Test) | 未跟踪 | RepeatTaskGeneratorPassThrough |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportConfirmRefreshFiveDimContractTest.java` | 3 | 已自动化(@Test) | 未跟踪 | ReportConfirmRefreshFiveDimContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportDietRecommendContractTest.java` | 8 | 已自动化(@Test) | 未跟踪 | ReportDietRecommendContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportParserAdminContractTest.java` | 5 | 已自动化(@Test) | 未跟踪 | ReportParserAdminContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportParserProviderConnectContractTest.java` | 3 | 已自动化(@Test) | 未跟踪 | ReportParserProviderConnectContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportShareGrantContractTest.java` | 11 | 已自动化(@Test) | 未跟踪 | ReportShareGrantContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportTransferContractTest.java` | 11 | 已自动化(@Test) | 未跟踪 | ReportTransferContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportViewPermissionContractTest.java` | 11 | 已自动化(@Test) | 未跟踪 | ReportViewPermissionContract |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ReviewCenterSummaryTest.java` | 3 | 已自动化(@Test) | 未跟踪 | ReviewCenterSummary |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ServiceRoleApproveTest.java` | 6 | 已自动化(@Test) | 未跟踪 | ServiceRoleApprove |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ServiceRoleFilterTest.java` | 3 | 已自动化(@Test) | 未跟踪 | ServiceRoleFilter |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskCreateScP10ContractTest.java` | 14 | 已自动化(@Test) | 未跟踪 | TaskCreateScP10Contract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskFrequencyScP12ContractTest.java` | 4 | 已自动化(@Test) | 未跟踪 | TaskFrequencyScP12Contract |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskPlanServiceTest.java` | 4 | 已自动化(@Test) | 未跟踪 | TaskPlanService |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskProgressUpdateTest.java` | 3 | 已自动化(@Test) | 未跟踪 | TaskProgressUpdate |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskReviewScT06ContractTest.java` | 6 | 已自动化(@Test) | 未跟踪 | TaskReviewScT06Contract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskTemplatePackageContractTest.java` | 13 | 已自动化(@Test) | 未跟踪 | TaskTemplatePackageContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/TianpanGuideContractTest.java` | 10 | 已自动化(@Test) | 未跟踪 | TianpanGuideContract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/VendorOrderShipConfirmScS03ScS04ContractTest.java` | 9 | 已自动化(@Test) | 未跟踪 | VendorOrderShipConfirmScS03ScS04Contract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/VendorProductManageScS02ContractTest.java` | 9 | 已自动化(@Test) | 未跟踪 | VendorProductManageScS02Contract |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/WishFlowScP13ContractTest.java` | 15 | 已自动化(@Test) | 未跟踪 | WishFlowScP13Contract |
 | `cfc-backend/src/test/java/com/etotem/cfc/util/CfFormulaEvaluatorTest.java` | 8 | 已自动化(@Test) | 未跟踪 | CfFormulaEvaluator |
 | `cfc-backend/src/test/java/com/etotem/cfc/util/SpearmanUtilTest.java` | 6 | 已自动化(@Test) | 未跟踪 | SpearmanUtil |
 | `cfc-backend/src/test/java/com/etotem/cfc/util/UserUtilTest.java` | 6 | 已自动化(@Test) | 未跟踪 | UserUtil |

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
docs/tdd/test/blockers.md


+ 89 - 28
docs/tdd/test/discovery.md

@@ -9,30 +9,28 @@
 | --- | --- |
 | 控制器总数 | 359 |
 | handler 方法总数 | 1943 |
-| handler 方法已覆盖 | 378 (19.5%) |
-| 单元-全覆盖(handler 方法) | 27 |
-| 单元-部分覆盖(handler 方法) | 193 |
-| 单元-未覆盖(handler 方法) | 138 |
+| handler 方法已覆盖 | 432 (22.2%) |
+| 单元-全覆盖(handler 方法) | 32 |
+| 单元-部分覆盖(handler 方法) | 196 |
+| 单元-未覆盖(handler 方法) | 130 |
 | 单元-无handler 方法 | 1 |
-| 测试文件数 | 232 |
-| @Test 方法总数 | 1839 |
+| 测试文件数 | 290 |
+| @Test 方法总数 | 2367 |
 | 含跳过/假设项(test 级 partial) | 4 |
 
 ## 二、未覆盖控制器(发现「缺口」· 非发明)
 
 > 以下控制器在当前测试源中**没有任何handler 方法被命中**。这是真实扫描得到的覆盖缺口。
 
-共 138 个:
+共 130 个:
 
 - `DanAssessmentController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/DanAssessmentController.java`,29 方法)
 - `AdminInventoryController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/admin/AdminInventoryController.java`,15 方法)
-- `FamilyInviteController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/family/FamilyInviteController.java`,15 方法)
 - `OrchestrationController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/OrchestrationController.java`,15 方法)
 - `KeyPersonController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/KeyPersonController.java`,14 方法)
 - `AdminGuideController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/admin/AdminGuideController.java`,10 方法)
 - `GuideController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/guide/GuideController.java`,10 方法)
 - `ProcurementTaskController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProcurementTaskController.java`,10 方法)
-- `TaskTemplatePackageController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/TaskTemplatePackageController.java`,10 方法)
 - `TeacherController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/guide/TeacherController.java`,10 方法)
 - `UserController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/UserController.java`,10 方法)
 - `GutHealthProjectController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/GutHealthProjectController.java`,9 方法)
@@ -51,14 +49,12 @@
 - `PlannerCertificationController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/planner/PlannerCertificationController.java`,7 方法)
 - `ShareController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/ShareController.java`,7 方法)
 - `StreetController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/StreetController.java`,7 方法)
-- `TianpanController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/tianpan/TianpanController.java`,7 方法)
 - `AdminCommissionController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/admin/AdminCommissionController.java`,6 方法)
 - `AssessmentAppointmentController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/assessment/AssessmentAppointmentController.java`,6 方法)
 - `ContactMatchController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/ContactMatchController.java`,6 方法)
 - `CouponGiftController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/CouponGiftController.java`,6 方法)
 - `DietIngredientController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/diet/DietIngredientController.java`,6 方法)
 - `FamilyEarningsController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/FamilyEarningsController.java`,6 方法)
-- `FamilyPlatformBalanceController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/FamilyPlatformBalanceController.java`,6 方法)
 - `MindFortuneController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/mind/MindFortuneController.java`,6 方法)
 - `PackagePaymentController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/PackagePaymentController.java`,6 方法)
 - `ProductDeliveryConfigController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProductDeliveryConfigController.java`,6 方法)
@@ -73,7 +69,6 @@
 - `MealRecommendController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/MealRecommendController.java`,5 方法)
 - `MediaController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/MediaController.java`,5 方法)
 - `ParentController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/family/ParentController.java`,5 方法)
-- `PointsController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/family/PointsController.java`,5 方法)
 - `RecommendationStatsController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/recommendation/RecommendationStatsController.java`,5 方法)
 - `RelationshipQualityController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/family/RelationshipQualityController.java`,5 方法)
 - `RewardWishlistController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/reward/RewardWishlistController.java`,5 方法)
@@ -84,31 +79,36 @@
 - `DimensionRegistryController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/admin/DimensionRegistryController.java`,4 方法)
 - `DistributionInviteController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/DistributionInviteController.java`,4 方法)
 - `EmotionAlertController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/mind/EmotionAlertController.java`,4 方法)
-- …(其余 78 个见完整扫描)
+- `HealthStatusController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/HealthStatusController.java`,4 方法)
+- `HomeController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/HomeController.java`,4 方法)
+- `InnatePortraitController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/mind/InnatePortraitController.java`,4 方法)
+- `PackagePurchaseController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/guide/PackagePurchaseController.java`,4 方法)
+- `PlanReviewController`(`cfc-backend/src/main/java/com/etotem/cfc/controller/guide/PlanReviewController.java`,4 方法)
+- …(其余 70 个见完整扫描)
 
 ## 三、部分覆盖控制器(已做一部分测试)
 
 > 这些控制器**已有测试但只覆盖了部分handler 方法**——即用户要求的「已经做了一部分测试的情况,要能够找到」。
 
-共 193 个:
+共 196 个:
 
 - `AdminController`:覆盖 1/65,未覆盖方法:getUsers、createUser、getUser、updateUser、resetUserPassword、searchUsers、deleteUser、getChild、updateChild、adjustPoints
 - `HealthReportController`:覆盖 1/59,未覆盖方法:createReport、getLatestReport、listFamilyReports、listAllReports、getReportIndicatorsWithPrevious、listIndicators、getMemberIndicators、getGutFlora、rebuildIndicatorCurrent、getMemberIndicatorCurrent
 - `HealthKnowledgeBaseController`:覆盖 2/28,未覆盖方法:batchQuery、add、update、delete、importKnowledgeBase、queryBacteria、batchQueryBacteria、queryIndicator、queryFood、getSection
-- `AdminArticleController`:覆盖 1/22,未覆盖方法:create、update、detail、delete、publishById、publish、backfillTags、toggleFeatured、move、audit
+- `AdminArticleController`:覆盖 2/22,未覆盖方法:create、update、detail、delete、publishById、backfillTags、toggleFeatured、move、audit、submitReview
 - `ProductOrderController`:覆盖 7/19,未覆盖方法:myOrderCounts、vendorConfirm、reviewUpdate、ship、applyRefund、handlePaymentSuccess、notify、activityAudit、activitySignIn、activityComplete
 - `AuthController`:覆盖 14/18,未覆盖方法:setSwitchPassword、verifyToken、ssoTicket、ssoLogin
 - `TaskController`:覆盖 7/18,未覆盖方法:getMinigameOptions、getTodayTasks、completeTask、startTask、getTodayParentTasks、completeParentTask、deleteTask、completeMinigameTask、batchComplete、batchDelete
 - `FamilyUserController`:覆盖 3/17,未覆盖方法:getUserInfo、updateUserInfo、joinFamily、createFamily、switchMode、switchToFamilyMember、switchBackToParent、switchBackVerify、getFamilyMemberren、updateFamilyMember
 - `GuideManagementController`:覆盖 3/17,未覆盖方法:resubmitApplication、getUserApplications、getApplicationRecords、generateInviteCode、getInviteCodes、validateInviteCode、getChildGuides、getAllChildGuides、getParentGuide、getGuidePackageTemplates
 - `MembershipController`:覆盖 4/17,未覆盖方法:getAllLevels、getMyMembership、getUpgradeRecords、upgradeOrder、activateTrial、createOrder、continueOrder、getPricingPlans、getMembershipCompare、paymentNotify
-- `ArticleController`:覆盖 4/16,未覆盖方法:relatedProducts、related、relatedByProduct、getArticleAudio、reportReadingTime、readingStats、dailyTip、aiQuestions、submitAnswers、publish
+- `ArticleController`:覆盖 5/16,未覆盖方法:relatedProducts、related、relatedByProduct、getArticleAudio、reportReadingTime、readingStats、dailyTip、aiQuestions、submitAnswers、myPosts
 - `CircleController`:覆盖 1/16,未覆盖方法:myCircles、discover、join、leave、create、update、pendingMembers、approve、feed、multiFeed
-- `ReportParserAdminController`:覆盖 1/15,未覆盖方法:listTypes、toggleType、deleteType、listFingerprints、saveFingerprint、deleteFingerprint、listImports、uploadImport、approveImport、rejectImport
+- `FamilyInviteController`:覆盖 2/15,未覆盖方法:generateQrCode、requestJoinByCode、approveJoinRequest、rejectJoinRequest、getPendingRequests、getMyRequest、cancelJoinRequest、validateFamilyCode、bindFamilyInviter、acceptInvite
+- `ReportParserAdminController`:覆盖 3/15,未覆盖方法:toggleType、deleteType、listFingerprints、saveFingerprint、deleteFingerprint、listImports、uploadImport、approveImport、rejectImport、listClusters
 - `ActivityController`:覆盖 6/13,未覆盖方法:submitReview、register、cancelRegistration、myRegistrations、registrationRoster、checkin、checkinReview
-- `CommissionController`:覆盖 2/13,未覆盖方法:team、stats、balance、teamList、funnel、teamConsumption、myReferrer、teamTree、teamGrowthCurve、teamAllMembersConsumptionCurve
+- `CommissionController`:覆盖 3/13,未覆盖方法:team、stats、teamList、funnel、teamConsumption、myReferrer、teamTree、teamGrowthCurve、teamAllMembersConsumptionCurve、teamL1ConsumptionCurve
 - `GrowthRecordController`:覆盖 4/13,未覆盖方法:getRecordList、getChildRecords、getRecordDetail、deleteRecord、syncExternalResult、createFromUpload、createSupplement、checkDuplicate、getSupplements
-- `HealthPlanController`:覆盖 2/13,未覆盖方法:generate、regenerateSection、save、confirm、detail、planTasks、availableTeachers、listPendingReview、updatePlan、approvePlan
 - `AdminCouponController`:覆盖 1/12,未覆盖方法:PreAuthorize、PreAuthorize、PreAuthorize、PreAuthorize、PreAuthorize、PreAuthorize、PreAuthorize、PreAuthorize、giftTransfers、PreAuthorize
 - `StatsController`:覆盖 4/12,未覆盖方法:getDashboardSummary、getRevenueStats、getMembershipStats、childOverview、familySummary、pointsRanking、getTrafficAnalytics、recordProductView
 - `SupplySystemController`:覆盖 1/12,未覆盖方法:create、update、detail、toggleStatus、listAll、getMySystem、getMyTeams、memberList、addMember、removeMember
@@ -127,9 +127,9 @@
 - `SubscriptionController`:覆盖 1/10,未覆盖方法:getPlans、createOrder、subscribe、cancel、setAutoRenew、getMyBenefits、checkBenefit、getTier、updateTier
 - `AdminButlerController`:覆盖 4/9,未覆盖方法:review、assignMember、assignments、unassign、toggleAccepting
 - `AdminProductController`:覆盖 2/9,未覆盖方法:review、shelve、detail、create、update、copy、delete
-- `EnergyController`:覆盖 5/9,未覆盖方法:configureSourceRatios、getScoreHistory、getFamilyScoreHistory、getWealthDetail
+- `EnergyController`:覆盖 7/9,未覆盖方法:configureSourceRatios、getWealthDetail
 - `FileRecordController`:覆盖 1/9,未覆盖方法:upload、update、deleteFile、getTags、tagCreate、tagUpdate、tagDelete、stats
-- `FiveDimensionSelfCheckController`:覆盖 3/9,未覆盖方法:submit、getHistory、ignoreSelfCheck、generatePlan、getTrendAnalysis、aiGenerateQuestions
+- `FiveDimensionSelfCheckController`:覆盖 4/9,未覆盖方法:getHistory、ignoreSelfCheck、generatePlan、getTrendAnalysis、aiGenerateQuestions
 - `KnowledgeBaseController`:覆盖 1/9,未覆盖方法:backfillTags、get、save、delete、bindDimensions、bindTags、uploadFile、fetchUrl
 - `ProductController`:覆盖 6/9,未覆盖方法:updateImages、specMap、relatedProducts
 - `AdminActivityController`:覆盖 1/8,未覆盖方法:review、detail、submitReview、audit、backfillTags、withdraw、reDraft
@@ -146,10 +146,11 @@
 - `DoaController`:覆盖 1/7,未覆盖方法:createStage、stageDetail、cancelStage、submitPlan、submitReview、weekList
 - `EmotionCheckinController`:覆盖 3/7,未覆盖方法:create、stats、weeklyReport、recognizeEmotion
 - `GrowthPlanController`:覆盖 1/7,未覆盖方法:createPlan、getChildPlans、getActivePlan、getPlanDetail、updatePlan、reviewPlan
-- `GuideActivityController`:覆盖 1/7,未覆盖方法:getActivityDetail、createActivity、updateActivity、publishActivity、cancelActivity、deleteActivity
+- `GuideActivityController`:覆盖 2/7,未覆盖方法:getActivityDetail、createActivity、updateActivity、cancelActivity、deleteActivity
 - `SupplyTeamController`:覆盖 1/7,未覆盖方法:listCustomers、bindCustomer、getRelation、getInviteCode、getInviteInfo、joinByInviteCode
-- `AdminEnergyConfigController`:覆盖 1/6,未覆盖方法:sourceList、sourceSave、sourceDelete、dailyLimits、dailyLimitSave
-- `AdminEnergyRuleController`:覆盖 1/6,未覆盖方法:create、update、delete、toggle、dimensions
+- `TianpanController`:覆盖 3/7,未覆盖方法:annualEnergy、dailyFortune、relatedItems、recalibrate
+- `AdminEnergyConfigController`:覆盖 5/6,未覆盖方法:sourceDelete
+- `AdminEnergyRuleController`:覆盖 5/6,未覆盖方法:update
 - `AdminFoodController`:覆盖 1/6,未覆盖方法:create、update、delete、detail、saveMonths
 - `AdminGuidePopupController`:覆盖 2/6,未覆盖方法:create、update、delete、stats
 - `AdminHomeBannerController`:覆盖 1/6,未覆盖方法:save、delete、batchDelete、toggle、updateSort
@@ -161,6 +162,7 @@
 - `AdminSystemPromptController`:覆盖 1/6,未覆盖方法:save、reset、delete、listVersions、rollback
 - `ButlerController`:覆盖 1/6,未覆盖方法:apply、getProfile、updateProfile、getServiceRecords、getCommissions
 - `ContentSectionController`:覆盖 1/6,未覆盖方法:getVisibleSections、getDetail、create、update、delete
+- `FamilyPlatformBalanceController`:覆盖 1/6,未覆盖方法:getLogs、exchangeCoupon、adminBalance、adminLogs、adminAdjust
 - `FoodRecommendController`:覆盖 2/6,未覆盖方法:getIndex、getHistory、getByFamily、getCautionFoods
 - `IndicatorAdminController`:覆盖 1/6,未覆盖方法:create、update、delete、listValues、backfill
 - `IndicatorController`:覆盖 2/6,未覆盖方法:quickLookup、sourceTypes、periods、correlationList
@@ -188,6 +190,7 @@
 - `InviteController`:覆盖 3/5,未覆盖方法:bind、getQrCode
 - `MbtiController`:覆盖 2/5,未覆盖方法:submit、profile、history
 - `MiniGameController`:覆盖 1/5,未覆盖方法:getGameByCode、getAllGames、updateStatus、completeGame
+- `PointsController`:覆盖 1/5,未覆盖方法:getPointsLogs、adjustPoints、getSystemBalance、getPointsLogsByCategory
 - `PointsExchangeController`:覆盖 1/5,未覆盖方法:getProductList、getProductDetail、exchangeProduct、getExchangeStats
 - `ProductSkuController`:覆盖 1/5,未覆盖方法:get、create、update、delete
 - `RecommendationRuleAdminController`:覆盖 1/5,未覆盖方法:create、update、delete、batchEnable
@@ -199,7 +202,6 @@
 - `AdminActivityCheckinController`:覆盖 1/4,未覆盖方法:export、add、review
 - `AdminAfterSalesController`:覆盖 1/4,未覆盖方法:detail、review、complete
 - `AdminCfEarnRuleController`:覆盖 1/4,未覆盖方法:save、toggle、history
-- `AdminEnergyBehaviorConfigController`:覆盖 1/4,未覆盖方法:detail、update、toggle
 - `AdminOrgMemberController`:覆盖 1/4,未覆盖方法:addMember、removeMember、changeType
 - `AdminPlannerCertCategoryController`:覆盖 1/4,未覆盖方法:create、update、delete
 - `AdminPlannerCourseController`:覆盖 1/4,未覆盖方法:create、update、delete
@@ -210,7 +212,7 @@
 - `AdminSubscriptionController`:覆盖 1/4,未覆盖方法:cancelSubscription、activateSubscription、getBenefitConfig
 - `AdminSupplierController`:覆盖 1/4,未覆盖方法:save、update、delete
 - `AdminSurveyController`:覆盖 1/4,未覆盖方法:save、delete、aiGenerate
-- `AdminUnifiedKnowledgeController`:覆盖 1/4,未覆盖方法:section、update、reset
+- `AdminUnifiedKnowledgeController`:覆盖 2/4,未覆盖方法:update、reset
 - `BaziConfigController`:覆盖 1/4,未覆盖方法:create、update、delete
 - `BloodTypeConfigController`:覆盖 1/4,未覆盖方法:create、update、delete
 - `ConsentController`:覆盖 2/4,未覆盖方法:withdrawConsent、checkConsent
@@ -229,6 +231,7 @@
 - `ActivityFeedbackController`:覆盖 1/3,未覆盖方法:submit、my
 - `ActivityMaterialController`:覆盖 1/3,未覆盖方法:upload、delete
 - `AdminCfRateTierController`:覆盖 1/3,未覆盖方法:save、delete
+- `AdminCfValueController`:覆盖 1/3,未覆盖方法:getLogs、allBalances
 - `AdminHealthPlanController`:覆盖 2/3,未覆盖方法:detail
 - `AdminNotificationTemplateController`:覆盖 1/3,未覆盖方法:save、delete
 - `AdminPackageController`:覆盖 1/3,未覆盖方法:approvePackage、rejectPackage
@@ -252,8 +255,9 @@
 - `InnatePortraitConfigController`:覆盖 1/3,未覆盖方法:update、invalidate
 - `InteractionLogController`:覆盖 1/3,未覆盖方法:addInteraction、getInteractionTypes
 - `KnowledgeTagController`:覆盖 1/3,未覆盖方法:save、delete
-- `ManualDimensionScoreController`:覆盖 1/3,未覆盖方法:submit、history
+- `ManualDimensionScoreController`:覆盖 2/3,未覆盖方法:history
 - `ReportParseAdminController`:覆盖 1/3,未覆盖方法:retry、backfillFood
+- `ReportParserController`:覆盖 1/3,未覆盖方法:uploadAndParse、detect
 - `ReportSummaryController`:覆盖 1/3,未覆盖方法:detail、download
 - `ReportSurveyController`:覆盖 1/3,未覆盖方法:createSurvey、submitSurvey
 - `ReviewController`:覆盖 1/3,未覆盖方法:getReviewOrderDetail、getReviewStatus
@@ -270,7 +274,6 @@
 - `BasicQuotaController`:覆盖 1/2,未覆盖方法:getAllQuotaStatus
 - `CfTransferController`:覆盖 1/2,未覆盖方法:send
 - `CircleChallengeController`:覆盖 1/2,未覆盖方法:getHistory
-- `DimensionWeightController`:覆盖 1/2,未覆盖方法:save
 - `EmiReportController`:覆盖 1/2,未覆盖方法:getFamilyLatestReports
 - `GuideConfigController`:覆盖 1/2,未覆盖方法:ack
 - `HealthAlertController`:覆盖 1/2,未覆盖方法:dismiss
@@ -293,7 +296,9 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/AuthControllerTest.java` | com | 39 | 0 | 14 | AuthController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/DanReportParseServiceTest.java` | com | 38 | 2 | 0 | DanReportController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/CfPathwayEarnServiceTest.java` | com | 32 | 16 | 0 | — | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/PlanLifecycleParentContractTest.java` | com | 31 | 12 | 12 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/WishControllerTest.java` | com | 29 | 4 | 11 | WishController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/AssessmentQuotaAppointmentContractTest.java` | com | 27 | 9 | 0 | AssessmentQuotaController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/CfBalanceServiceTest.java` | com | 25 | 0 | 0 | CfBalanceController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/IndicatorChangeServiceTest.java` | com | 23 | 0 | 0 | IndicatorController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/DimensionScoreServiceTest.java` | com | 21 | 0 | 0 | — | — |
@@ -304,10 +309,13 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/GuideFamilyTaskControllerTest.java` | com | 20 | 11 | 8 | GuideFamilyTaskController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/IndicatorChangeServiceSemanticTest.java` | com | 20 | 0 | 0 | IndicatorController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/ProductOrderControllerTest.java` | com | 20 | 3 | 7 | ProductOrderController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/PlanReviewTeacherContractTest.java` | com | 19 | 4 | 4 | PlanReviewController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/config/ScG06JwtGuardTest.java` | com | 19 | 0 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/ai/AIChatControllerGateTest.java` | com | 18 | 15 | 6 | AIChatController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyConfigAdminContractTest.java` | com | 18 | 17 | 10 | EnergyController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/SupplySystemServiceTest.java` | com | 18 | 0 | 0 | SupplySystemController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/AIChatControllerTest.java` | com | 17 | 17 | 3 | AIChatController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/GuideBindingAccessContractTest.java` | com | 17 | 4 | 0 | GuideController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/MembershipServiceTest.java` | com | 17 | 0 | 0 | MembershipController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/reward/RewardEstimateControllerTest.java` | com | 17 | 0 | 1 | RewardEstimateController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/task/TaskControllerReviewTest.java` | com | 17 | 1 | 4 | TaskController | — |
@@ -317,15 +325,24 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/ProductControllerTest.java` | com | 16 | 8 | 6 | ProductController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/ActivityOrderServiceTest.java` | com | 15 | 0 | 0 | ActivityController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminAuthControllerLoginContractTest.java` | com | 15 | 6 | 1 | AdminAuthController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/FiveDimensionSelfCheckContractTest.java` | com | 15 | 5 | 3 | FiveDimensionSelfCheckController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/HealthDimensionControllerTest.java` | com | 15 | 3 | 4 | HealthDimensionController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/TaskServiceReviewTest.java` | com | 15 | 0 | 0 | TaskController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/WishFlowScP13ContractTest.java` | com | 15 | 0 | 0 | WishController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/ArticleWorkflowTest.java` | com | 14 | 0 | 0 | ArticleController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/CoachButlerNotificationContractTest.java` | com | 14 | 7 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/NutritionDeficiencyServiceTest.java` | com | 14 | 0 | 0 | — | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/OrderCreatePayShipConfirmScX07ContractTest.java` | com | 14 | 2 | 0 | — | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/PlanActivationExecutionContractTest.java` | com | 14 | 2 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskCreateScP10ContractTest.java` | com | 14 | 0 | 0 | TaskController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/DimensionAdminControllerTest.java` | com | 13 | 0 | 7 | DimensionAdminController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/FamilyUserSwitchRoleTest.java` | com | 13 | 1 | 1 | FamilyController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/GuidePackageServiceTest.java` | com | 13 | 0 | 0 | GuideController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ManualDimensionScoreContractTest.java` | com | 13 | 6 | 2 | ManualDimensionScoreController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG03LoginMethodContractTest.java` | com | 13 | 1 | 4 | — | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskTemplatePackageContractTest.java` | com | 13 | 4 | 11 | TaskTemplatePackageController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ActivityTeamServiceUnitTest.java` | com | 12 | 0 | 0 | ActivityController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/AfterSalesScS06ContractTest.java` | com | 12 | 0 | 0 | AfterSalesController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/CfCommissionServiceSettleTest.java` | com | 12 | 2 | 0 | CfCommissionController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ConditionEvaluatorServiceTest.java` | com | 12 | 7 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/FiveDimensionScoreServiceTest.java` | com | 12 | 10 | 0 | — | — |
@@ -338,10 +355,18 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/ArticleControllerTest.java` | com | 11 | 7 | 4 | ArticleController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/CfReferralServiceSalesTierTest.java` | com | 11 | 0 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/CfSpendDispatchServiceTest.java` | com | 11 | 0 | 0 | — | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/CouponUseScP57ScP75ContractTest.java` | com | 11 | 0 | 0 | CouponController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/DanAssessmentExecutionContractTest.java` | com | 11 | 0 | 0 | DanAssessmentController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/DanReportUploadContractTest.java` | com | 11 | 8 | 0 | DanReportController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/DataMigrationServiceTest.java` | com | 11 | 5 | 0 | DataMigrationController | skip×1、⚠部分 |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyLogsContractScoreHistoryTest.java` | com | 11 | 3 | 3 | EnergyController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/config/FamilyAccessInterceptorTest.java` | com | 11 | 0 | 0 | FamilyController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/GuideConfigServiceTest.java` | com | 11 | 13 | 0 | GuideConfigController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/OrderRefundScP56ScA12ContractTest.java` | com | 11 | 0 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/PdfParseServiceTest.java` | com | 11 | 0 | 0 | — | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportShareGrantContractTest.java` | com | 11 | 2 | 0 | — | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportTransferContractTest.java` | com | 11 | 3 | 0 | — | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportViewPermissionContractTest.java` | com | 11 | 13 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/common/ResultCodeFactoryTest.java` | com | 11 | 0 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/reward/RewardEstimateControllerEstimateTest.java` | com | 11 | 0 | 0 | RewardController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/ActivityAdminServiceTest.java` | com | 10 | 10 | 0 | ActivityController | — |
@@ -355,21 +380,27 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/IndicatorFavoriteControllerTest.java` | com | 10 | 8 | 3 | IndicatorFavoriteController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/config/JwtInterceptorContractEdgeTest.java` | com | 10 | 2 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/config/SleepConfigTagsMechanismContractTest.java` | com | 10 | 3 | 3 | — | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/TianpanGuideContractTest.java` | com | 10 | 2 | 3 | TianpanController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/guide/TrainingPlanControllerGetPlanListTest.java` | com | 10 | 0 | 0 | TrainingPlanController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/common/AdminRolesTest.java` | com | 9 | 0 | 0 | AdminController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/BadgeControllerGetMemberBadgesTest.java` | com | 9 | 1 | 0 | BadgeController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/ai/ButlerControllerGateTest.java` | com | 9 | 4 | 6 | ButlerController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/DimensionRegistryTreeTest.java` | com | 9 | 6 | 0 | DimensionRegistryController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyGrantContractTest.java` | com | 9 | 4 | 1 | EnergyController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/FamilyFoodOverviewServiceTest.java` | com | 9 | 9 | 0 | FamilyController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/growth/GrowthHistoryViewContractTest.java` | com | 9 | 3 | 0 | GrowthController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuideFamilyAccessGuardTest.java` | com | 9 | 0 | 0 | GuideController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/GuideTeamControllerTest.java` | com | 9 | 4 | 5 | GuideTeamController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/IndicatorTrendServiceTest.java` | com | 9 | 17 | 0 | IndicatorController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/KnowledgeBaseBackfillTest.java` | com | 9 | 6 | 0 | KnowledgeBaseController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/MembershipRenewScP60ScP80ContractTest.java` | com | 9 | 0 | 0 | MembershipController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/PlannerBindInviteFlowTest.java` | com | 9 | 15 | 5 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/PlatformPointsServiceTest.java` | com | 9 | 2 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/RewardRuleServiceBatchEstimateTest.java` | com | 9 | 0 | 0 | RewardController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG04InviteRegisterContractTest.java` | com | 9 | 1 | 3 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/SpecialPriceServiceTest.java` | com | 9 | 0 | 0 | SpecialPriceController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/VendorOrderShipConfirmScS03ScS04ContractTest.java` | com | 9 | 0 | 0 | VendorController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/VendorProductManageScS02ContractTest.java` | com | 9 | 0 | 0 | VendorController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ActivityRegistrationQuotaUnitTest.java` | com | 8 | 3 | 0 | ActivityController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/AdminSpecialPriceControllerTest.java` | com | 8 | 12 | 4 | AdminSpecialPriceController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ArticleAutoTagServiceTest.java` | com | 8 | 0 | 0 | ArticleController | — |
@@ -378,22 +409,32 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/service/CfEarnDispatchServiceTest.java` | com | 8 | 0 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/util/CfFormulaEvaluatorTest.java` | com | 8 | 0 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ComboOfferCalculatorTest.java` | com | 8 | 0 | 0 | — | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyIsolationContractTest.java` | com | 8 | 5 | 2 | EnergyController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/FamilyControllerTest.java` | com | 8 | 1 | 3 | FamilyController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/GuideApplicationServiceTest.java` | com | 8 | 0 | 0 | GuideController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/GuideOrderControllerTest.java` | com | 8 | 11 | 3 | GuideOrderController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/HealthReportAuditContractTest.java` | com | 8 | 3 | 0 | HealthReportController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/HealthReportServiceAuditConfirmTest.java` | com | 8 | 0 | 0 | HealthReportController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/HealthReportServiceTest.java` | com | 8 | 0 | 0 | HealthReportController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/orchestration/OrchestrationEngineTest.java` | com | 8 | 0 | 0 | OrchestrationController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/PointsLedgerScP15ContractTest.java` | com | 8 | 3 | 0 | PointsController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/ProductOrderServiceSpecialDealTest.java` | com | 8 | 1 | 0 | ProductController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/RealNameBackfillServiceTest.java` | com | 8 | 0 | 0 | — | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportDietRecommendContractTest.java` | com | 8 | 0 | 0 | — | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG05AnonymousBrowseContractTest.java` | com | 8 | 2 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/guide/TrainingPlanControllerGetPlanDetailTest.java` | com | 8 | 0 | 0 | TrainingPlanController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/config/AttributionStage1FoundationTest.java` | com | 7 | 11 | 0 | AttributionController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/DimensionRegistryMapContractTest.java` | com | 7 | 0 | 0 | DimensionRegistryController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyBehaviorConfigContractTest.java` | com | 7 | 1 | 4 | EnergyController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyOverviewContractTest.java` | com | 7 | 10 | 1 | EnergyController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/EnergySystemFlowTest.java` | com | 7 | 22 | 5 | EnergyController | skip×1、⚠部分 |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/FamilyMemberDimensionBaseScoreServiceTest.java` | com | 7 | 10 | 0 | FamilyController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/family/FamilyMembersControllerAddMemberTest.java` | com | 7 | 1 | 1 | FamilyController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/GuideFamilyServiceTest.java` | com | 7 | 0 | 0 | GuideController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/orchestration/OrchestrationIntegrationTest.java` | com | 7 | 0 | 0 | OrchestrationController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ProductDetailScP53ContractTest.java` | com | 7 | 0 | 0 | ProductController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG01LandingContractTest.java` | com | 7 | 0 | 0 | — | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG10RegisterGuideContractTest.java` | com | 7 | 0 | 2 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/SupplyTeamControllerInviteTest.java` | com | 7 | 7 | 0 | SupplyTeamController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/task/TaskCheckinWebhookReminderTaskTest.java` | com | 7 | 0 | 0 | TaskController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/task/TaskControllerCreateTaskTest.java` | com | 7 | 0 | 1 | TaskController | — |
@@ -401,6 +442,7 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/service/ActivityRegistrationQuotaConcurrencyTest.java` | com | 6 | 0 | 0 | ActivityController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/ActivityServicePublishTest.java` | com | 6 | 0 | 0 | ActivityController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ArticleRelatedServiceTest.java` | com | 6 | 0 | 0 | ArticleController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/AssessmentComparisonContractTest.java` | com | 6 | 0 | 0 | AssessmentComparisonController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/CfTransferServiceTest.java` | com | 6 | 0 | 0 | CfTransferController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/DailyCheckinStreakFlowTest.java` | com | 6 | 13 | 6 | DailyCheckinController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/config/DatabaseInitializerSeedTest.java` | com | 6 | 0 | 0 | — | — |
@@ -414,14 +456,19 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/service/IndicatorFavoriteServiceTest.java` | com | 6 | 6 | 0 | IndicatorController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/MemberPriceResolverTest.java` | com | 6 | 0 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/MembershipPaySwitchTest.java` | com | 6 | 10 | 0 | MembershipController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/MembershipViewScP59ContractTest.java` | com | 6 | 0 | 0 | MembershipController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ProductBrowseScP52ScG05ContractTest.java` | com | 6 | 2 | 0 | ProductController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/ProductOrderServiceFulfillmentMultiModeTest.java` | com | 6 | 0 | 0 | ProductController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/ReportAnalyzeQuotaServiceTest.java` | com | 6 | 0 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/ReportBlockAssemblerTest.java` | com | 6 | 16 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/ReportDateExtractorTest.java` | com | 6 | 0 | 0 | — | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG09LogoutContractTest.java` | com | 6 | 0 | 0 | — | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG12H5FallbackContractTest.java` | com | 6 | 0 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/ServiceContentServiceTest.java` | com | 6 | 0 | 0 | ServiceContentController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ServiceRoleApproveTest.java` | com | 6 | 0 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/util/SpearmanUtilTest.java` | com | 6 | 0 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/StatsControllerTest.java` | com | 6 | 10 | 2 | StatsController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskReviewScT06ContractTest.java` | com | 6 | 0 | 0 | TaskController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/UserServiceWechatLoginContractTest.java` | com | 6 | 3 | 0 | UserController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/util/UserUtilTest.java` | com | 6 | 0 | 0 | UserController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/WithdrawalServiceTest.java` | com | 6 | 0 | 0 | WithdrawalController | — |
@@ -436,6 +483,7 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/service/FamilyMemberServiceIsChildTest.java` | com | 5 | 0 | 0 | FamilyController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/FamilyNamingSupportTest.java` | com | 5 | 0 | 0 | FamilyController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/FamilyPlatformPointsServiceCouponTest.java` | com | 5 | 0 | 0 | FamilyController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/GlobalSearchScP82ContractTest.java` | com | 5 | 12 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/HealthPlanLazyBackfillTest.java` | com | 5 | 0 | 0 | HealthPlanController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/HealthReportControllerCreateReportTest.java` | com | 5 | 2 | 0 | HealthReportController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/HealthReportServiceBackfillResilienceTest.java` | com | 5 | 7 | 0 | HealthReportController | — |
@@ -444,6 +492,10 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/service/NumSoulCalculatorTest.java` | com | 5 | 0 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ProductUpdateClearTest.java` | com | 5 | 0 | 0 | ProductController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/RelationshipQuestionnaireServiceTest.java` | com | 5 | 0 | 0 | RelationshipQuestionnaireController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportParserAdminContractTest.java` | com | 5 | 6 | 2 | ReportParserController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG07TestModeContractTest.java` | com | 5 | 3 | 0 | — | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG08EnvAdaptiveContractTest.java` | com | 5 | 0 | 0 | — | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG11AgreementContractTest.java` | com | 5 | 0 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/TaskServiceMinigameTest.java` | com | 5 | 0 | 0 | TaskController | skip×1、⚠部分 |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/UserServiceEffectiveFamilyIdsTest.java` | com | 5 | 0 | 0 | UserController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/UserServiceWechatLoginTest.java` | com | 5 | 3 | 0 | UserController | — |
@@ -465,6 +517,7 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/service/PointsExchangeServiceTest.java` | com | 4 | 0 | 0 | PointsExchangeController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/impl/PurchaseServiceImplRenewalTest.java` | com | 4 | 5 | 0 | PurchaseController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/ServiceTypeServiceTest.java` | com | 4 | 0 | 0 | ServiceTypeController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskFrequencyScP12ContractTest.java` | com | 4 | 0 | 0 | TaskController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskPlanServiceTest.java` | com | 4 | 2 | 0 | TaskController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/TaskServiceCfEarnTest.java` | com | 4 | 0 | 0 | TaskController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/TeacherLoginTest.java` | com | 4 | 0 | 0 | TeacherController | skip×1、⚠部分 |
@@ -491,11 +544,14 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ProductDTOMappingTest.java` | com | 3 | 0 | 0 | ProductController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/ProductOrderServiceUpdateExpressFieldTest.java` | com | 3 | 0 | 0 | ProductController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/RepeatTaskGeneratorPassThroughTest.java` | com | 3 | 0 | 0 | — | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportConfirmRefreshFiveDimContractTest.java` | com | 3 | 0 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/ReportParserAdminControllerTest.java` | com | 3 | 0 | 1 | ReportParserAdminController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportParserProviderConnectContractTest.java` | com | 3 | 3 | 1 | ReportParserController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ReviewCenterSummaryTest.java` | com | 3 | 0 | 0 | ReviewController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ServiceRoleFilterTest.java` | com | 3 | 0 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/SpecialPriceControllerTest.java` | com | 3 | 8 | 1 | SpecialPriceController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskProgressUpdateTest.java` | com | 3 | 0 | 0 | TaskController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminCommissionConfigPartialUpdateTest.java` | com | 2 | 0 | 1 | AdminCommissionConfigController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ArticleBackfillTest.java` | com | 2 | 0 | 0 | ArticleController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/AttributionPipelineMockTest.java` | com | 2 | 36 | 0 | AttributionController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/AttributionPlanServiceTest.java` | com | 2 | 8 | 0 | AttributionController | — |
@@ -513,6 +569,8 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/service/UserServiceFamilyNameLinkTest.java` | com | 2 | 0 | 0 | UserController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/AiGatewayTimeoutTest.java` | com | 1 | 2 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/AttributionControllerTest.java` | com | 1 | 0 | 0 | AttributionController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/butler/ButlerControllerEnvelopeTest.java` | com | 1 | 7 | 1 | ButlerController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/service/ButlerServiceListAllEnvelopeTest.java` | com | 1 | 5 | 0 | ButlerController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/DailyOverviewServiceTest.java` | com | 1 | 1 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/IndicatorCorrelationServiceTest.java` | com | 1 | 0 | 0 | IndicatorController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/IndicatorValueMapperTest.java` | com | 1 | 0 | 0 | IndicatorController | — |
@@ -521,6 +579,9 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/RecommendationNutritionTagTest.java` | com | 1 | 0 | 0 | RecommendController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/ReportSummaryServiceCompletenessTest.java` | com | 1 | 0 | 0 | ReportSummaryController | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/guide/TeacherMessageControllerMyTest.java` | com | 1 | 1 | 0 | TeacherController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/AssessmentPlanContractTestBase.java` | com | 0 | 0 | 0 | AssessmentController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyContractTestBase.java` | com | 0 | 0 | 0 | EnergyController | — |
+| `cfc-backend/src/test/java/com/etotem/cfc/testutil/FrontendSourceLocator.java` | com | 0 | 0 | 0 | — | — |
 | `cfc-backend/src/test/java/com/etotem/cfc/common/TestRoles.java` | com | 0 | 0 | 0 | — | — |
 
 ## 五、使用说明

+ 80 - 10
docs/tdd/test/inventory.md

@@ -9,11 +9,11 @@
 | 来源类型 | 文件数 | 用例/方法数 |
 | --- | --- | --- |
 | 结构化测试用例(md) | 11 | 784 |
-| Playwright(spec.js) | 76 | 444 |
-| Python(pytest) | 11 | 47 |
-| Java后端(测试文件) | 232 | 1839 (@Test) |
+| Playwright(spec.js) | 88 | 522 |
+| Python(pytest) | 11 | 67 |
+| Java后端(测试文件) | 290 | 2367 (@Test) |
 | 用户场景(md) | 11 | 文件级 |
-| **合计** | — | **3114** 用例/方法 |
+| **合计** | — | **3740** 用例/方法 |
 
 ## 二、结构化测试用例(`tests/test-cases/*.md`)
 
@@ -806,7 +806,7 @@
 | `TC-S-N05` | 报告解析接入 | 服务商 | P0 | 安全 | `tests/test-cases/vendor.md#TC-S-N05` | 上传校验 | 类型/大小校验;不执行;存储隔离 |
 | `TC-S-N06` | 营养食谱 | 服务商 | P1 | 安全 | `tests/test-cases/vendor.md#TC-S-N06` | 内容安全 | 内容转义存储/渲染;不执行 |
 
-## 三、Playwright 端到端 / 集成测试(`tests/**/*.spec.js`)
+## 三、Playwright 端到端 / 集成测试(`tests/*.md`)
 
 > 来源锚点 = `文件#用例标题`。用例标题列于 JSON(`inventory.json`)便于回写。
 
@@ -822,23 +822,36 @@
 | `tests/e2e/admin-panel.spec.js` | 4 | `tests/e2e/admin-panel.spec.js` |
 | `tests/e2e/admin-promotion-config.spec.js` | 2 | `tests/e2e/admin-promotion-config.spec.js` |
 | `tests/e2e/ai-plan-task-flow.spec.js` | 7 | `tests/e2e/ai-plan-task-flow.spec.js` |
+| `tests/e2e/api/activity-ranking-sc-p77-p86.spec.js` | 5 | `tests/e2e/api/activity-ranking-sc-p77-p86.spec.js` |
 | `tests/e2e/api/api-smoke.spec.js` | 4 | `tests/e2e/api/api-smoke.spec.js` |
 | `tests/e2e/api/article-api.spec.js` | 7 | `tests/e2e/api/article-api.spec.js` |
+| `tests/e2e/api/badge-sc-c09-c10-a05.spec.js` | 8 | `tests/e2e/api/badge-sc-c09-c10-a05.spec.js` |
 | `tests/e2e/api/butler-fallback.spec.js` | 4 | `tests/e2e/api/butler-fallback.spec.js` |
+| `tests/e2e/api/coach-food-sc-b07.spec.js` | 5 | `tests/e2e/api/coach-food-sc-b07.spec.js` |
 | `tests/e2e/api/contact-api.spec.js` | 6 | `tests/e2e/api/contact-api.spec.js` |
+| `tests/e2e/api/dimension-energy-contract.spec.js` | 14 | `tests/e2e/api/dimension-energy-contract.spec.js` |
 | `tests/e2e/api/energy-api.spec.js` | 8 | `tests/e2e/api/energy-api.spec.js` |
+| `tests/e2e/api/energy-sc-p87-p88-c24.spec.js` | 6 | `tests/e2e/api/energy-sc-p87-p88-c24.spec.js` |
 | `tests/e2e/api/family-member-api.spec.js` | 14 | `tests/e2e/api/family-member-api.spec.js` |
 | `tests/e2e/api/generated/tc-scripted.spec.js` | 0 | `tests/e2e/api/generated/tc-scripted.spec.js` |
+| `tests/e2e/api/guide-review-sc-t06-t18.spec.js` | 5 | `tests/e2e/api/guide-review-sc-t06-t18.spec.js` |
 | `tests/e2e/api/human-butler-workorder.spec.js` | 4 | `tests/e2e/api/human-butler-workorder.spec.js` |
+| `tests/e2e/api/incentive-loop-sc-x05.spec.js` | 3 | `tests/e2e/api/incentive-loop-sc-x05.spec.js` |
+| `tests/e2e/api/mall-exchange-sc-c22.spec.js` | 4 | `tests/e2e/api/mall-exchange-sc-c22.spec.js` |
 | `tests/e2e/api/nonfunc-perf-compat.spec.js` | 5 | `tests/e2e/api/nonfunc-perf-compat.spec.js` |
 | `tests/e2e/api/nonfunc-security.spec.js` | 11 | `tests/e2e/api/nonfunc-security.spec.js` |
 | `tests/e2e/api/sc-p-03-switch-role.spec.js` | 11 | `tests/e2e/api/sc-p-03-switch-role.spec.js` |
+| `tests/e2e/api/task-c14-reject-recycle.spec.js` | 8 | `tests/e2e/api/task-c14-reject-recycle.spec.js` |
+| `tests/e2e/api/task-checkin-sc-c05.spec.js` | 4 | `tests/e2e/api/task-checkin-sc-c05.spec.js` |
 | `tests/e2e/api/task-create-scp10.spec.js` | 10 | `tests/e2e/api/task-create-scp10.spec.js` |
+| `tests/e2e/api/task-frequency-sc-p12.spec.js` | 5 | `tests/e2e/api/task-frequency-sc-p12.spec.js` |
 | `tests/e2e/api/wechat-login.spec.js` | 5 | `tests/e2e/api/wechat-login.spec.js` |
+| `tests/e2e/api/wish-flow-sc-p13-p14-c04.spec.js` | 11 | `tests/e2e/api/wish-flow-sc-p13-p14-c04.spec.js` |
 | `tests/e2e/article-management.spec.js` | 5 | `tests/e2e/article-management.spec.js` |
 | `tests/e2e/assessment-appointment-functional.spec.js` | 7 | `tests/e2e/assessment-appointment-functional.spec.js` |
 | `tests/e2e/assessment-appointment.spec.js` | 6 | `tests/e2e/assessment-appointment.spec.js` |
 | `tests/e2e/assessment-order-flow.spec.js` | 5 | `tests/e2e/assessment-order-flow.spec.js` |
+| `tests/e2e/ci-smoke.spec.js` | 1 | `tests/e2e/ci-smoke.spec.js` |
 | `tests/e2e/consignee-management.spec.js` | 8 | `tests/e2e/consignee-management.spec.js` |
 | `tests/e2e/contact-management.spec.js` | 4 | `tests/e2e/contact-management.spec.js` |
 | `tests/e2e/daily-checkin-streak.spec.js` | 9 | `tests/e2e/daily-checkin-streak.spec.js` |
@@ -887,19 +900,18 @@
 | `tests/e2e/wish-exchange-flow.spec.js` | 12 | `tests/e2e/wish-exchange-flow.spec.js` |
 | `tests/integration/mini-games-api.spec.js` | 13 | `tests/integration/mini-games-api.spec.js` |
 | `tests/integration/plan-chain.spec.js` | 10 | `tests/integration/plan-chain.spec.js` |
-| `tests/unit/games/1a2b.spec.js` | 1 | `tests/unit/games/1a2b.spec.js` |
 
 ## 四、Python 测试(`cfc-langgraph/tests · tools/xaf_agent_hub/tests`)
 
 | 文件 | 用例数 | 来源 |
 | --- | --- | --- |
 | `cfc-langgraph/tests/qna/test_graph.py` | 4 | `cfc-langgraph/tests/qna/test_graph.py` |
-| `cfc-langgraph/tests/test_analyze.py` | 2 | `cfc-langgraph/tests/test_analyze.py` |
-| `cfc-langgraph/tests/test_auto_tag.py` | 5 | `cfc-langgraph/tests/test_auto_tag.py` |
-| `cfc-langgraph/tests/test_chat.py` | 1 | `cfc-langgraph/tests/test_chat.py` |
+| `cfc-langgraph/tests/test_analyze.py` | 4 | `cfc-langgraph/tests/test_analyze.py` |
+| `cfc-langgraph/tests/test_auto_tag.py` | 12 | `cfc-langgraph/tests/test_auto_tag.py` |
+| `cfc-langgraph/tests/test_chat.py` | 4 | `cfc-langgraph/tests/test_chat.py` |
 | `cfc-langgraph/tests/test_graph.py` | 5 | `cfc-langgraph/tests/test_graph.py` |
 | `cfc-langgraph/tests/test_health_plan.py` | 13 | `cfc-langgraph/tests/test_health_plan.py` |
-| `cfc-langgraph/tests/test_intent.py` | 5 | `cfc-langgraph/tests/test_intent.py` |
+| `cfc-langgraph/tests/test_intent.py` | 13 | `cfc-langgraph/tests/test_intent.py` |
 | `cfc-langgraph/tests/test_memory.py` | 3 | `cfc-langgraph/tests/test_memory.py` |
 | `cfc-langgraph/tests/test_recommend.py` | 3 | `cfc-langgraph/tests/test_recommend.py` |
 | `cfc-langgraph/tests/test_report_parse.py` | 5 | `cfc-langgraph/tests/test_report_parse.py` |
@@ -939,16 +951,28 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/IndicatorControllerTest.java` | cfc-backend | 2 | IndicatorController | `cfc-backend/src/test/java/com/etotem/cfc/controller/IndicatorControllerTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/IndicatorFavoriteControllerTest.java` | cfc-backend | 10 | IndicatorFavoriteController | `cfc-backend/src/test/java/com/etotem/cfc/controller/IndicatorFavoriteControllerTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/MembershipControllerPlansLevelOrderTest.java` | cfc-backend | 1 | MembershipControllerPlansLevelOrder | `cfc-backend/src/test/java/com/etotem/cfc/controller/MembershipControllerPlansLevelOrderTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG01LandingContractTest.java` | cfc-backend | 7 | ScG01LandingContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG01LandingContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG03LoginMethodContractTest.java` | cfc-backend | 13 | ScG03LoginMethodContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG03LoginMethodContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG04InviteRegisterContractTest.java` | cfc-backend | 9 | ScG04InviteRegisterContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG04InviteRegisterContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG05AnonymousBrowseContractTest.java` | cfc-backend | 8 | ScG05AnonymousBrowseContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG05AnonymousBrowseContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG07TestModeContractTest.java` | cfc-backend | 5 | ScG07TestModeContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG07TestModeContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG08EnvAdaptiveContractTest.java` | cfc-backend | 5 | ScG08EnvAdaptiveContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG08EnvAdaptiveContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG09LogoutContractTest.java` | cfc-backend | 6 | ScG09LogoutContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG09LogoutContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG10RegisterGuideContractTest.java` | cfc-backend | 7 | ScG10RegisterGuideContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG10RegisterGuideContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG11AgreementContractTest.java` | cfc-backend | 5 | ScG11AgreementContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG11AgreementContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG12H5FallbackContractTest.java` | cfc-backend | 6 | ScG12H5FallbackContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/ScG12H5FallbackContractTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminAuthControllerLoginContractTest.java` | cfc-backend | 15 | AdminAuthControllerLoginContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminAuthControllerLoginContractTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminAuthControllerLoginStatusTest.java` | cfc-backend | 10 | AdminAuthControllerLoginStatus | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminAuthControllerLoginStatusTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminAuthWechatScanTest.java` | cfc-backend | 11 | AdminAuthWechatScan | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminAuthWechatScanTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminButlerControllerEnvelopeTest.java` | cfc-backend | 4 | AdminButlerControllerEnvelope | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminButlerControllerEnvelopeTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminCommissionConfigControllerTest.java` | cfc-backend | 5 | AdminCommissionConfigController | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminCommissionConfigControllerTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminCommissionConfigPartialUpdateTest.java` | cfc-backend | 2 | AdminCommissionConfigPartialUpdate | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminCommissionConfigPartialUpdateTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminProductControllerBatchShelveTest.java` | cfc-backend | 4 | AdminProductControllerBatchShelve | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminProductControllerBatchShelveTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/ReportParserAdminControllerTest.java` | cfc-backend | 3 | ReportParserAdminController | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/ReportParserAdminControllerTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/SupplyTeamControllerInviteTest.java` | cfc-backend | 7 | SupplyTeamControllerInvite | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/SupplyTeamControllerInviteTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/ai/AIChatControllerGateTest.java` | cfc-backend | 18 | AIChatControllerGate | `cfc-backend/src/test/java/com/etotem/cfc/controller/ai/AIChatControllerGateTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/ai/ButlerControllerGateTest.java` | cfc-backend | 9 | ButlerControllerGate | `cfc-backend/src/test/java/com/etotem/cfc/controller/ai/ButlerControllerGateTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/controller/butler/ButlerControllerEnvelopeTest.java` | cfc-backend | 1 | ButlerControllerEnvelope | `cfc-backend/src/test/java/com/etotem/cfc/controller/butler/ButlerControllerEnvelopeTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/config/SleepConfigTagsMechanismContractTest.java` | cfc-backend | 10 | SleepConfigTagsMechanismContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/config/SleepConfigTagsMechanismContractTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/family/FamilyMembersControllerAddMemberTest.java` | cfc-backend | 7 | FamilyMembersControllerAddMember | `cfc-backend/src/test/java/com/etotem/cfc/controller/family/FamilyMembersControllerAddMemberTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/controller/family/FamilyMembersControllerListTest.java` | cfc-backend | 4 | FamilyMembersControllerList | `cfc-backend/src/test/java/com/etotem/cfc/controller/family/FamilyMembersControllerListTest.java` |
@@ -1028,6 +1052,7 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/service/ActivityRegistrationQuotaConcurrencyTest.java` | cfc-backend | 6 | ActivityRegistrationQuotaConcurrency | `cfc-backend/src/test/java/com/etotem/cfc/service/ActivityRegistrationQuotaConcurrencyTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/AiGatewayTimeoutTest.java` | cfc-backend | 1 | AiGatewayTimeout | `cfc-backend/src/test/java/com/etotem/cfc/service/AiGatewayTimeoutTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/ArticleAudioServiceChunkFilterTest.java` | cfc-backend | 3 | ArticleAudioServiceChunkFilter | `cfc-backend/src/test/java/com/etotem/cfc/service/ArticleAudioServiceChunkFilterTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/service/ButlerServiceListAllEnvelopeTest.java` | cfc-backend | 1 | ButlerServiceListAllEnvelope | `cfc-backend/src/test/java/com/etotem/cfc/service/ButlerServiceListAllEnvelopeTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/CfBalanceServiceTest.java` | cfc-backend | 25 | CfBalanceService | `cfc-backend/src/test/java/com/etotem/cfc/service/CfBalanceServiceTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/CfCommissionServiceSettleTest.java` | cfc-backend | 12 | CfCommissionServiceSettle | `cfc-backend/src/test/java/com/etotem/cfc/service/CfCommissionServiceSettleTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/service/CfCommissionServiceTest.java` | cfc-backend | 2 | CfCommissionService | `cfc-backend/src/test/java/com/etotem/cfc/service/CfCommissionServiceTest.java` |
@@ -1095,31 +1120,50 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/task/OrderTimeoutCancelTaskSpecialDealTest.java` | cfc-backend | 3 | OrderTimeoutCancelTaskSpecialDeal | `cfc-backend/src/test/java/com/etotem/cfc/task/OrderTimeoutCancelTaskSpecialDealTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/task/TaskCheckinWebhookReminderTaskTest.java` | cfc-backend | 7 | TaskCheckinWebhookReminderTask | `cfc-backend/src/test/java/com/etotem/cfc/task/TaskCheckinWebhookReminderTaskTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/task/VirtualPayTimeoutTaskTest.java` | cfc-backend | 5 | VirtualPayTimeoutTask | `cfc-backend/src/test/java/com/etotem/cfc/task/VirtualPayTimeoutTaskTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/testutil/FrontendSourceLocator.java` | cfc-backend | 0 | FrontendSourceLocator.java | `cfc-backend/src/test/java/com/etotem/cfc/testutil/FrontendSourceLocator.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ActivityAuditTest.java` | cfc-backend | 10 | ActivityAudit | `cfc-backend/src/test/java/com/etotem/cfc/unit/ActivityAuditTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ActivityRegistrationListTest.java` | cfc-backend | 3 | ActivityRegistrationList | `cfc-backend/src/test/java/com/etotem/cfc/unit/ActivityRegistrationListTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ActivityRegistrationQuotaUnitTest.java` | cfc-backend | 8 | ActivityRegistrationQuotaUnit | `cfc-backend/src/test/java/com/etotem/cfc/unit/ActivityRegistrationQuotaUnitTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ActivityRegistrationRejectTest.java` | cfc-backend | 3 | ActivityRegistrationReject | `cfc-backend/src/test/java/com/etotem/cfc/unit/ActivityRegistrationRejectTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ActivityTagServiceTest.java` | cfc-backend | 5 | ActivityTagService | `cfc-backend/src/test/java/com/etotem/cfc/unit/ActivityTagServiceTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ActivityTeamServiceUnitTest.java` | cfc-backend | 12 | ActivityTeamServiceUnit | `cfc-backend/src/test/java/com/etotem/cfc/unit/ActivityTeamServiceUnitTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/AfterSalesScS06ContractTest.java` | cfc-backend | 12 | AfterSalesScS06Contract | `cfc-backend/src/test/java/com/etotem/cfc/unit/AfterSalesScS06ContractTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ArticleAutoTagServiceTest.java` | cfc-backend | 8 | ArticleAutoTagService | `cfc-backend/src/test/java/com/etotem/cfc/unit/ArticleAutoTagServiceTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ArticleBackfillTest.java` | cfc-backend | 2 | ArticleBackfill | `cfc-backend/src/test/java/com/etotem/cfc/unit/ArticleBackfillTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ArticleRelatedServiceTest.java` | cfc-backend | 6 | ArticleRelatedService | `cfc-backend/src/test/java/com/etotem/cfc/unit/ArticleRelatedServiceTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/AssessmentComparisonContractTest.java` | cfc-backend | 6 | AssessmentComparisonContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/AssessmentComparisonContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/AssessmentPlanContractTestBase.java` | cfc-backend | 0 | AssessmentPlanContractTestBase.java | `cfc-backend/src/test/java/com/etotem/cfc/unit/AssessmentPlanContractTestBase.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/AssessmentQuotaAppointmentContractTest.java` | cfc-backend | 27 | AssessmentQuotaAppointmentContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/AssessmentQuotaAppointmentContractTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/AttributionAdjustServiceTest.java` | cfc-backend | 5 | AttributionAdjustService | `cfc-backend/src/test/java/com/etotem/cfc/unit/AttributionAdjustServiceTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/AttributionPipelineMockTest.java` | cfc-backend | 2 | AttributionPipelineMock | `cfc-backend/src/test/java/com/etotem/cfc/unit/AttributionPipelineMockTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/AttributionPlanServiceTest.java` | cfc-backend | 2 | AttributionPlanService | `cfc-backend/src/test/java/com/etotem/cfc/unit/AttributionPlanServiceTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/AttributionRedlinesTest.java` | cfc-backend | 8 | AttributionRedlines | `cfc-backend/src/test/java/com/etotem/cfc/unit/AttributionRedlinesTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/CartReplaceComboTest.java` | cfc-backend | 5 | CartReplaceCombo | `cfc-backend/src/test/java/com/etotem/cfc/unit/CartReplaceComboTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/CfBalanceControllerTest.java` | cfc-backend | 8 | CfBalanceController | `cfc-backend/src/test/java/com/etotem/cfc/unit/CfBalanceControllerTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/CoachButlerNotificationContractTest.java` | cfc-backend | 14 | CoachButlerNotificationContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/CoachButlerNotificationContractTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ComboOfferCalculatorTest.java` | cfc-backend | 8 | ComboOfferCalculator | `cfc-backend/src/test/java/com/etotem/cfc/unit/ComboOfferCalculatorTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ComboOrderStockTest.java` | cfc-backend | 3 | ComboOrderStock | `cfc-backend/src/test/java/com/etotem/cfc/unit/ComboOrderStockTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ComboServiceTest.java` | cfc-backend | 10 | ComboService | `cfc-backend/src/test/java/com/etotem/cfc/unit/ComboServiceTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ConditionEvaluatorServiceTest.java` | cfc-backend | 12 | ConditionEvaluatorService | `cfc-backend/src/test/java/com/etotem/cfc/unit/ConditionEvaluatorServiceTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/CouponUseScP57ScP75ContractTest.java` | cfc-backend | 11 | CouponUseScP57ScP75Contract | `cfc-backend/src/test/java/com/etotem/cfc/unit/CouponUseScP57ScP75ContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/DanAssessmentExecutionContractTest.java` | cfc-backend | 11 | DanAssessmentExecutionContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/DanAssessmentExecutionContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/DanReportUploadContractTest.java` | cfc-backend | 11 | DanReportUploadContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/DanReportUploadContractTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/DimensionCodeConstantsTest.java` | cfc-backend | 2 | DimensionCodeConstants | `cfc-backend/src/test/java/com/etotem/cfc/unit/DimensionCodeConstantsTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyBehaviorConfigContractTest.java` | cfc-backend | 7 | EnergyBehaviorConfigContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyBehaviorConfigContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyConfigAdminContractTest.java` | cfc-backend | 18 | EnergyConfigAdminContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyConfigAdminContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyContractTestBase.java` | cfc-backend | 0 | EnergyContractTestBase.java | `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyContractTestBase.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyGrantContractTest.java` | cfc-backend | 9 | EnergyGrantContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyGrantContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyIsolationContractTest.java` | cfc-backend | 8 | EnergyIsolationContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyIsolationContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyLogsContractScoreHistoryTest.java` | cfc-backend | 11 | EnergyLogsContractScoreHistory | `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyLogsContractScoreHistoryTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyOverviewContractTest.java` | cfc-backend | 7 | EnergyOverviewContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/EnergyOverviewContractTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/FamilyMemberDimensionBaseScoreServiceTest.java` | cfc-backend | 7 | FamilyMemberDimensionBaseScoreService | `cfc-backend/src/test/java/com/etotem/cfc/unit/FamilyMemberDimensionBaseScoreServiceTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/FamilyMemberServiceRenameTest.java` | cfc-backend | 4 | FamilyMemberServiceRename | `cfc-backend/src/test/java/com/etotem/cfc/unit/FamilyMemberServiceRenameTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/FamilyNamingSupportTest.java` | cfc-backend | 5 | FamilyNamingSupport | `cfc-backend/src/test/java/com/etotem/cfc/unit/FamilyNamingSupportTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/FamilyUserSwitchRoleTest.java` | cfc-backend | 13 | FamilyUserSwitchRole | `cfc-backend/src/test/java/com/etotem/cfc/unit/FamilyUserSwitchRoleTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/FiveDimensionScoreServiceTest.java` | cfc-backend | 12 | FiveDimensionScoreService | `cfc-backend/src/test/java/com/etotem/cfc/unit/FiveDimensionScoreServiceTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/FiveDimensionSelfCheckContractTest.java` | cfc-backend | 15 | FiveDimensionSelfCheckContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/FiveDimensionSelfCheckContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/GlobalSearchScP82ContractTest.java` | cfc-backend | 5 | GlobalSearchScP82Contract | `cfc-backend/src/test/java/com/etotem/cfc/unit/GlobalSearchScP82ContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/GuideBindingAccessContractTest.java` | cfc-backend | 17 | GuideBindingAccessContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuideBindingAccessContractTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuideFamilyAccessGuardTest.java` | cfc-backend | 9 | GuideFamilyAccessGuard | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuideFamilyAccessGuardTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuideFamilyQueryServiceTest.java` | cfc-backend | 4 | GuideFamilyQueryService | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuideFamilyQueryServiceTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuideFamilyServiceBindTest.java` | cfc-backend | 3 | GuideFamilyServiceBind | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuideFamilyServiceBindTest.java` |
@@ -1127,19 +1171,45 @@
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/HealthPlanDeleteCascadeTest.java` | cfc-backend | 6 | HealthPlanDeleteCascade | `cfc-backend/src/test/java/com/etotem/cfc/unit/HealthPlanDeleteCascadeTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/HealthPlanLazyBackfillTest.java` | cfc-backend | 5 | HealthPlanLazyBackfill | `cfc-backend/src/test/java/com/etotem/cfc/unit/HealthPlanLazyBackfillTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/HealthPlanReviewGuardTest.java` | cfc-backend | 10 | HealthPlanReviewGuard | `cfc-backend/src/test/java/com/etotem/cfc/unit/HealthPlanReviewGuardTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/HealthReportAuditContractTest.java` | cfc-backend | 8 | HealthReportAuditContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/HealthReportAuditContractTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/KnowledgeBaseBackfillTest.java` | cfc-backend | 9 | KnowledgeBaseBackfill | `cfc-backend/src/test/java/com/etotem/cfc/unit/KnowledgeBaseBackfillTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ManualDimensionScoreContractTest.java` | cfc-backend | 13 | ManualDimensionScoreContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/ManualDimensionScoreContractTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/MemberPriceResolverTest.java` | cfc-backend | 6 | MemberPriceResolver | `cfc-backend/src/test/java/com/etotem/cfc/unit/MemberPriceResolverTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/MembershipRenewScP60ScP80ContractTest.java` | cfc-backend | 9 | MembershipRenewScP60ScP80Contract | `cfc-backend/src/test/java/com/etotem/cfc/unit/MembershipRenewScP60ScP80ContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/MembershipViewScP59ContractTest.java` | cfc-backend | 6 | MembershipViewScP59Contract | `cfc-backend/src/test/java/com/etotem/cfc/unit/MembershipViewScP59ContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/OrderCreatePayShipConfirmScX07ContractTest.java` | cfc-backend | 14 | OrderCreatePayShipConfirmScX07Contract | `cfc-backend/src/test/java/com/etotem/cfc/unit/OrderCreatePayShipConfirmScX07ContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/OrderRefundScP56ScA12ContractTest.java` | cfc-backend | 11 | OrderRefundScP56ScA12Contract | `cfc-backend/src/test/java/com/etotem/cfc/unit/OrderRefundScP56ScA12ContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/PlanActivationExecutionContractTest.java` | cfc-backend | 14 | PlanActivationExecutionContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/PlanActivationExecutionContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/PlanLifecycleParentContractTest.java` | cfc-backend | 31 | PlanLifecycleParentContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/PlanLifecycleParentContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/PlanReviewTeacherContractTest.java` | cfc-backend | 19 | PlanReviewTeacherContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/PlanReviewTeacherContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/PointsLedgerScP15ContractTest.java` | cfc-backend | 8 | PointsLedgerScP15Contract | `cfc-backend/src/test/java/com/etotem/cfc/unit/PointsLedgerScP15ContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ProductBrowseScP52ScG05ContractTest.java` | cfc-backend | 6 | ProductBrowseScP52ScG05Contract | `cfc-backend/src/test/java/com/etotem/cfc/unit/ProductBrowseScP52ScG05ContractTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ProductDTOMappingTest.java` | cfc-backend | 3 | ProductDTOMapping | `cfc-backend/src/test/java/com/etotem/cfc/unit/ProductDTOMappingTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ProductDetailScP53ContractTest.java` | cfc-backend | 7 | ProductDetailScP53Contract | `cfc-backend/src/test/java/com/etotem/cfc/unit/ProductDetailScP53ContractTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ProductListNutritionTagFilterTest.java` | cfc-backend | 2 | ProductListNutritionTagFilter | `cfc-backend/src/test/java/com/etotem/cfc/unit/ProductListNutritionTagFilterTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ProductUpdateClearTest.java` | cfc-backend | 5 | ProductUpdateClear | `cfc-backend/src/test/java/com/etotem/cfc/unit/ProductUpdateClearTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/RecommendationNutritionTagTest.java` | cfc-backend | 1 | RecommendationNutritionTag | `cfc-backend/src/test/java/com/etotem/cfc/unit/RecommendationNutritionTagTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/RepeatTaskGeneratorPassThroughTest.java` | cfc-backend | 3 | RepeatTaskGeneratorPassThrough | `cfc-backend/src/test/java/com/etotem/cfc/unit/RepeatTaskGeneratorPassThroughTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportConfirmRefreshFiveDimContractTest.java` | cfc-backend | 3 | ReportConfirmRefreshFiveDimContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportConfirmRefreshFiveDimContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportDietRecommendContractTest.java` | cfc-backend | 8 | ReportDietRecommendContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportDietRecommendContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportParserAdminContractTest.java` | cfc-backend | 5 | ReportParserAdminContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportParserAdminContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportParserProviderConnectContractTest.java` | cfc-backend | 3 | ReportParserProviderConnectContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportParserProviderConnectContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportShareGrantContractTest.java` | cfc-backend | 11 | ReportShareGrantContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportShareGrantContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportTransferContractTest.java` | cfc-backend | 11 | ReportTransferContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportTransferContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportViewPermissionContractTest.java` | cfc-backend | 11 | ReportViewPermissionContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/ReportViewPermissionContractTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ReviewCenterSummaryTest.java` | cfc-backend | 3 | ReviewCenterSummary | `cfc-backend/src/test/java/com/etotem/cfc/unit/ReviewCenterSummaryTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ServiceRoleApproveTest.java` | cfc-backend | 6 | ServiceRoleApprove | `cfc-backend/src/test/java/com/etotem/cfc/unit/ServiceRoleApproveTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/ServiceRoleFilterTest.java` | cfc-backend | 3 | ServiceRoleFilter | `cfc-backend/src/test/java/com/etotem/cfc/unit/ServiceRoleFilterTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskCreateScP10ContractTest.java` | cfc-backend | 14 | TaskCreateScP10Contract | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskCreateScP10ContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskFrequencyScP12ContractTest.java` | cfc-backend | 4 | TaskFrequencyScP12Contract | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskFrequencyScP12ContractTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskPlanServiceTest.java` | cfc-backend | 4 | TaskPlanService | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskPlanServiceTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskProgressUpdateTest.java` | cfc-backend | 3 | TaskProgressUpdate | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskProgressUpdateTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskReviewScT06ContractTest.java` | cfc-backend | 6 | TaskReviewScT06Contract | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskReviewScT06ContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskTemplatePackageContractTest.java` | cfc-backend | 13 | TaskTemplatePackageContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskTemplatePackageContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/TianpanGuideContractTest.java` | cfc-backend | 10 | TianpanGuideContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/TianpanGuideContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/VendorOrderShipConfirmScS03ScS04ContractTest.java` | cfc-backend | 9 | VendorOrderShipConfirmScS03ScS04Contract | `cfc-backend/src/test/java/com/etotem/cfc/unit/VendorOrderShipConfirmScS03ScS04ContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/VendorProductManageScS02ContractTest.java` | cfc-backend | 9 | VendorProductManageScS02Contract | `cfc-backend/src/test/java/com/etotem/cfc/unit/VendorProductManageScS02ContractTest.java` |
+| `cfc-backend/src/test/java/com/etotem/cfc/unit/WishFlowScP13ContractTest.java` | cfc-backend | 15 | WishFlowScP13Contract | `cfc-backend/src/test/java/com/etotem/cfc/unit/WishFlowScP13ContractTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/util/CfFormulaEvaluatorTest.java` | cfc-backend | 8 | CfFormulaEvaluator | `cfc-backend/src/test/java/com/etotem/cfc/util/CfFormulaEvaluatorTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/util/SpearmanUtilTest.java` | cfc-backend | 6 | SpearmanUtil | `cfc-backend/src/test/java/com/etotem/cfc/util/SpearmanUtilTest.java` |
 | `cfc-backend/src/test/java/com/etotem/cfc/util/UserUtilTest.java` | cfc-backend | 6 | UserUtil | `cfc-backend/src/test/java/com/etotem/cfc/util/UserUtilTest.java` |

Некоторые файлы не были показаны из-за большого количества измененных файлов