# TDD 测试用例总台账(跨源编目 · 标注来源 · 可回写) > 生成依据:`tdd-orchestrator/scripts/test_inventory.py` 对全仓库测试源的只读扫描。 > **仅发现/格式化/跟踪已有测试,不创建、不发明**。每条用例均标注**来源**(原文件路径 + 锚点), > 进度回写落在 `.tdd/test-progress.json` 侧车(按来源锚点索引),**绝不改动原测试文件**。 ## 一、汇总(按来源类型) | 来源类型 | 文件数 | 用例/方法数 | | --- | --- | --- | | 结构化测试用例(md) | 10 | 719 | | Playwright(spec.js) | 96 | 571 | | Python(pytest) | 11 | 48 | | Java后端(测试文件) | 375 | 3096 (@Test) | | 用户场景(md) | 11 | 文件级 | | **合计** | — | **4434** 用例/方法 | ## 二、结构化测试用例(`tests/test-cases/*.md`) > 每条来源锚点 = `文件#TC编号`,回写进度时定位此锚点即可,不改原 markdown 表格。 | TC编号 | 模块 | 角色 | 优先级 | 类型 | 来源 | 对应e2e | 关联设计 | | --- | --- | --- | --- | --- | --- | --- | --- | | `TC-A-01` | 认证 | 运营 | P0 | 接口 | `tests/test-cases/admin.md#TC-A-01` | e2e/roles/admin/login.spec.js | AdminAuthController | | `TC-A-02` | 统计 | 运营 | P1 | 功能 | `tests/test-cases/admin.md#TC-A-02` | e2e/admin-panel.spec.js | StatsController | | `TC-A-03` | 方案管理 | 运营 | P1 | 功能 | `tests/test-cases/admin.md#TC-A-03` | — | 方案管理(全量) | | `TC-A-04` | 方案激活 | 运营 | P1 | 功能 | `tests/test-cases/admin.md#TC-A-04` | — | 方案激活 | | `TC-A-05` | 报告解析 | 运营 | P1 | 功能 | `tests/test-cases/admin.md#TC-A-05` | e2e/health-report-audit.spec.js | AdminReportParserController | | `TC-A-06` | 报告解析 | 运营 | P1 | 接口 | `tests/test-cases/admin.md#TC-A-06` | — | 报告类型注册 | | `TC-A-07` | 报告解析 | 运营 | P2 | 功能 | `tests/test-cases/admin.md#TC-A-07` | — | 未知聚类自学习 | | `TC-A-08` | 文章 | 运营 | P0 | 功能 | `tests/test-cases/admin.md#TC-A-08` | e2e/article-management.spec.js | 文章发布-审核 | | `TC-A-09` | 文章·去重 | 运营 | P1 | 异常 | `tests/test-cases/admin.md#TC-A-09` | — | 文章标题去重 | | `TC-A-10` | 关系类型 | 运营 | P1 | 功能 | `tests/test-cases/admin.md#TC-A-10` | e2e/roles/admin/../relationship | 关系类型 CRUD | | `TC-A-11` | 勋章 | 运营 | P0 | 接口 | `tests/test-cases/admin.md#TC-A-11` | e2e/points-system.spec.js`(参考) | 勋章管理;黑盒回归 | | `TC-A-12` | 供应商 | 运营 | P0 | 接口 | `tests/test-cases/admin.md#TC-A-12` | e2e/roles/admin/vendor/management.spec.js | 供应商管理;黑盒回归 | | `TC-A-13` | 活动 | 运营 | P1 | 功能 | `tests/test-cases/admin.md#TC-A-13` | e2e/roles/admin/activity-review.spec.js | 活动审核撤回;黑盒回归 | | `TC-A-14` | 知识库 | 运营 | P1 | 接口 | `tests/test-cases/admin.md#TC-A-14` | e2e/health-knowledge-base.spec.js | 知识库管理;黑盒回归 | | `TC-A-15` | 数据迁移 | 运营 | P2 | 功能 | `tests/test-cases/admin.md#TC-A-15` | — | 多数据源/SfmsDataSourceConfig | | `TC-A-16` | 参数校验 | 运营 | P0 | 异常 | `tests/test-cases/admin.md#TC-A-16` | e2e/admin-panel.spec.js | 统一 Result+全局异常;黑盒回归 | | `TC-A-17` | /api/admin/report-parser/* | 运营 | P1 | 功能 | `tests/test-cases/admin.md#TC-A-17` | — | /api/admin/report-parser/* | | `TC-A-18` | 优惠券/活动管理 | 运营 | P1 | 功能 | `tests/test-cases/admin.md#TC-A-18` | — | 优惠券/活动管理 | | `TC-A-19` | 内容安全 | 运营 | P1 | 功能 | `tests/test-cases/admin.md#TC-A-19` | — | 内容安全 | | `TC-A-20` | GDPR 工单 | 运营 | P1 | 功能 | `tests/test-cases/admin.md#TC-A-20` | — | GDPR 工单 | | `TC-A-21` | 网关/限流 | 运营 | P1 | 功能 | `tests/test-cases/admin.md#TC-A-21` | — | 网关/限流 | | `TC-A-22` | 模型管理 | 运营 | P1 | 功能 | `tests/test-cases/admin.md#TC-A-22` | — | 模型管理 | | `TC-A-23` | 知识库 | 运营 | P1 | 功能 | `tests/test-cases/admin.md#TC-A-23` | — | 知识库 | | `TC-A-01-E` | 认证 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-01-E` | — | AdminAuthController | | `TC-A-02-E` | 统计 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-02-E` | — | StatsController | | `TC-A-03-E` | 方案管理 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-03-E` | — | 方案管理(全量) | | `TC-A-04-E` | 方案激活 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-04-E` | — | 方案激活 | | `TC-A-05-E` | 报告解析 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-05-E` | — | AdminReportParserController | | `TC-A-06-E` | 报告解析 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-06-E` | — | 报告类型注册 | | `TC-A-07-E` | 报告解析 | 运营 | P3 | 异常 | `tests/test-cases/admin.md#TC-A-07-E` | — | 未知聚类自学习 | | `TC-A-08-E` | 文章 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-08-E` | — | 文章发布-审核 | | `TC-A-09-E` | 文章·去重 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-09-E` | — | 文章标题去重 | | `TC-A-10-E` | 关系类型 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-10-E` | — | 关系类型 CRUD | | `TC-A-11-E` | 勋章 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-11-E` | — | 勋章管理;黑盒回归 | | `TC-A-12-E` | 供应商 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-12-E` | — | 供应商管理;黑盒回归 | | `TC-A-13-E` | 活动 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-13-E` | — | 活动审核撤回;黑盒回归 | | `TC-A-14-E` | 知识库 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-14-E` | — | 知识库管理;黑盒回归 | | `TC-A-15-E` | 数据迁移 | 运营 | P3 | 异常 | `tests/test-cases/admin.md#TC-A-15-E` | — | 多数据源/SfmsDataSourceConfig | | `TC-A-16-E` | 参数校验 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-16-E` | — | 统一 Result+全局异常;黑盒回归 | | `TC-A-17-E` | /api/admin/report-parser/* | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-17-E` | — | /api/admin/report-parser/* | | `TC-A-18-E` | 优惠券/活动管理 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-18-E` | — | 优惠券/活动管理 | | `TC-A-19-E` | 内容安全 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-19-E` | — | 内容安全 | | `TC-A-20-E` | GDPR 工单 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-20-E` | — | GDPR 工单 | | `TC-A-21-E` | 网关/限流 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-21-E` | — | 网关/限流 | | `TC-A-22-E` | 模型管理 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-22-E` | — | 模型管理 | | `TC-A-01-P` | 认证 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-01-P` | — | AdminAuthController | | `TC-A-02-P` | 统计 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-02-P` | — | StatsController | | `TC-A-03-P` | 方案管理 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-03-P` | — | 方案管理(全量) | | `TC-A-04-P` | 方案激活 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-04-P` | — | 方案激活 | | `TC-A-05-P` | 报告解析 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-05-P` | — | AdminReportParserController | | `TC-A-06-P` | 报告解析 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-06-P` | — | 报告类型注册 | | `TC-A-07-P` | 报告解析 | 运营 | P2 | 权限 | `tests/test-cases/admin.md#TC-A-07-P` | — | 未知聚类自学习 | | `TC-A-08-P` | 文章 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-08-P` | — | 文章发布-审核 | | `TC-A-09-P` | 文章·去重 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-09-P` | — | 文章标题去重 | | `TC-A-10-P` | 关系类型 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-10-P` | — | 关系类型 CRUD | | `TC-A-11-P` | 勋章 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-11-P` | — | 勋章管理;黑盒回归 | | `TC-A-12-P` | 供应商 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-12-P` | — | 供应商管理;黑盒回归 | | `TC-A-13-P` | 活动 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-13-P` | — | 活动审核撤回;黑盒回归 | | `TC-A-14-P` | 知识库 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-14-P` | — | 知识库管理;黑盒回归 | | `TC-A-15-P` | 数据迁移 | 运营 | P2 | 权限 | `tests/test-cases/admin.md#TC-A-15-P` | — | 多数据源/SfmsDataSourceConfig | | `TC-A-16-P` | 参数校验 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-16-P` | — | 统一 Result+全局异常;黑盒回归 | | `TC-A-17-P` | /api/admin/report-parser/* | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-17-P` | — | /api/admin/report-parser/* | | `TC-A-18-P` | 优惠券/活动管理 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-18-P` | — | 优惠券/活动管理 | | `TC-A-19-P` | 内容安全 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-19-P` | — | 内容安全 | | `TC-A-20-P` | GDPR 工单 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-20-P` | — | GDPR 工单 | | `TC-A-21-P` | 网关/限流 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-21-P` | — | 网关/限流 | | `TC-A-22-P` | 模型管理 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-22-P` | — | 模型管理 | | `TC-A-25` | 维度/权重/上限配置 | 运营 | P1 | 功能 | `tests/test-cases/admin.md#TC-A-25` | tests/e2e/energy-rules-config.spec.js | DimensionConfigController/DimensionWeightController | | `TC-A-26` | 能量/归因权重 | 运营 | P1 | 功能 | `tests/test-cases/admin.md#TC-A-26` | — | EnergyController/AttributionWeights | | `TC-A-27` | 团队分润/成本价/流水/提现审核 | 运营 | P0 | 功能 | `tests/test-cases/admin.md#TC-A-27` | — | TeamProfitAdminController/TeamProfitConfigService/WithdrawalService(S-cfc-68,17b6d6bfb) | | `TC-A-28` | 我的星级看板 | 家长/运营 | P1 | 功能 | `tests/test-cases/admin.md#TC-A-28` | TeamStarMyViewContractTest` 24/24(研发侧契约单测已绿) | TeamStarController/StarScoreCalculator(S-cfc-71,2b73e20f6) | | `TC-A-29` | 月度星级简报 | 运营/家长 | P1 | 功能 | `tests/test-cases/admin.md#TC-A-29` | TeamStarDigestContractTest`(研发侧契约单测已绿) | StarDigestService(S-cfc-70,786c88e02) | | `TC-A-30` | 团队邀请创建 | 运营/团队负责人 | P1 | 功能 | `tests/test-cases/admin.md#TC-A-30` | — | DistributionInviteController/TeamInvitationCreateContractTest(S-cfc-60,36974f042) | | `TC-A-25-E` | 维度/权重/上限配置 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-25-E` | — | DimensionConfigController | | `TC-A-27-E` | 团队分润 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-27-E` | — | TeamProfitAdminController | | `TC-A-26-E` | 能量/归因权重 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-26-E` | — | EnergyController/AttributionWeights | | `TC-A-25-P` | 维度/权重/上限配置 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-25-P` | — | DimensionConfigController | | `TC-A-26-P` | 能量/归因权重 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-26-P` | — | EnergyController | | `TC-A-27-P` | 团队分润/提现审核 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-27-P` | — | TeamProfitAdminController/JwtInterceptor | | `TC-A-27-S` | 管理端/睡眠配置 | 运营 | P1 | 功能 | `tests/test-cases/admin.md#TC-A-27-S` | — | 变更C / AdminSleepConfigController(参考 AdminGuideConfigController get/save 模式)+ sleep.quality.tags | | `TC-A-27-S-E` | 管理端/睡眠配置 | 运营 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-27-S-E` | — | 变更C 验收口径 + 风险项 3 / 配置校验与回退契约 | | `TC-A-27-S-P` | 管理端/睡眠配置 | 运营 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-27-S-P` | — | 变更C / AdminSleepConfigController 权限校验 + LOGIN_REQUIRED_PATHS | | `TC-A-24` | 财富中心·贡献榜 | 运营/管理员 | P1 | 功能 | `tests/test-cases/admin.md#TC-A-24` | — | family.earnings.admin.role / family.earnings.pool.toggle | | `TC-A-23-E` | 团队收益·推广分享 | 运营/团队负责人 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-23-E` | — | team.referral.earnings.cf | | `TC-A-24-E` | 财富中心·贡献榜 | 运营/管理员 | P2 | 异常 | `tests/test-cases/admin.md#TC-A-24-E` | — | family.earnings.admin.role / family.earnings.pool.toggle | | `TC-A-23-P` | 团队收益·推广分享 | 运营/团队负责人 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-23-P` | — | team.referral.earnings.cf / JwtInterceptor | | `TC-A-24-P` | 财富中心·贡献榜 | 运营/管理员 | P1 | 权限 | `tests/test-cases/admin.md#TC-A-24-P` | — | family.earnings.admin.role / LOGIN_REQUIRED_PATHS | | `TC-A-N01` | 配置CRUD | 运营 | P1 | 性能 | `tests/test-cases/admin.md#TC-A-N01` | — | 配置管理 | | `TC-A-N02` | 报告解析中台 | 运营 | P0 | 性能 | `tests/test-cases/admin.md#TC-A-N02` | — | 解析中台 | | `TC-A-N03` | 登录统计 | 运营 | P1 | 性能 | `tests/test-cases/admin.md#TC-A-N03` | — | 统计聚合 | | `TC-A-N04` | 限流熔断 | 运营 | P0 | 性能 | `tests/test-cases/admin.md#TC-A-N04` | e2e/api/nonfunc-perf-compat.spec.js | 限流熔断 | | `TC-A-N05` | 登录统计 | 运营 | P0 | 安全 | `tests/test-cases/admin.md#TC-A-N05` | e2e/api/nonfunc-security.spec.js | 后台鉴权 | | `TC-A-N06` | 文章审核 | 运营 | P1 | 安全 | `tests/test-cases/admin.md#TC-A-N06` | e2e/api/nonfunc-security.spec.js | 内容安全 | | `TC-A-N07` | 内容安全 | 运营 | P0 | 安全 | `tests/test-cases/admin.md#TC-A-N07` | — | SSRF 防护 | | `TC-A-N08` | 知识库 | 运营 | P1 | 安全 | `tests/test-cases/admin.md#TC-A-N08` | — | 上传校验 | | `TC-A-N09` | 注销导出 | 运营 | P0 | 安全 | `tests/test-cases/admin.md#TC-A-N09` | — | 数据导出合规 | | `TC-C-01` | 权限/双角色 | 孩子 | P0 | 权限 | `tests/test-cases/child.md#TC-C-01` | e2e/roles/child/login.spec.js | 双角色铁律:孩子端不能切家长 | | `TC-C-02` | 任务 | 孩子 | P0 | 功能 | `tests/test-cases/child.md#TC-C-02` | e2e/roles/child/../tasks | TaskController | | `TC-C-03` | 小游戏 | 孩子 | P1 | 功能 | `tests/test-cases/child.md#TC-C-03` | e2e/roles/child/mini-games.spec.js | pages/games/* | | `TC-C-04` | 心愿 | 孩子 | P1 | 功能 | `tests/test-cases/child.md#TC-C-04` | e2e/roles/parent/wish-management.spec.js | WishController | | `TC-C-05` | 心愿 | 孩子 | P1 | 功能 | `tests/test-cases/child.md#TC-C-05` | — | RewardController | | `TC-C-06` | 能量 | 孩子 | P1 | 功能 | `tests/test-cases/child.md#TC-C-06` | e2e/roles/parent/energy-dashboard.spec.js`(参考) | EnergyController | | `TC-C-07` | 报告/权限 | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-07` | e2e/roles/teacher/dan-report-flow.spec.js`(参考) | 报告查看权限隔离 | | `TC-C-08` | 打卡/方案 | 孩子 | P0 | 功能 | `tests/test-cases/child.md#TC-C-08` | e2e/roles/child/daily-checkin.spec.js | 健康打卡/方案进度 | | `TC-C-09` | 勋章 | 孩子 | P2 | 功能 | `tests/test-cases/child.md#TC-C-09` | — | RewardController | | `TC-C-10` | 勋章提醒 | 孩子 | P2 | 功能 | `tests/test-cases/child.md#TC-C-10` | — | MedalController | | `TC-C-11` | 成长记录 | 孩子 | P1 | 功能 | `tests/test-cases/child.md#TC-C-11` | — | GrowthController | | `TC-C-12` | 食谱查看 | 孩子 | P1 | 功能 | `tests/test-cases/child.md#TC-C-12` | — | 饮食推荐 | | `TC-C-13` | AI 对话 | 孩子 | P1 | 功能 | `tests/test-cases/child.md#TC-C-13` | — | AIChatController | | `TC-C-14` | 任务重做 | 孩子 | P1 | 功能 | `tests/test-cases/child.md#TC-C-14` | — | TaskController | | `TC-C-15` | 消息接收 | 孩子 | P1 | 功能 | `tests/test-cases/child.md#TC-C-15` | — | 消息服务 | | `TC-C-16` | 个人资料 | 孩子 | P1 | 功能 | `tests/test-cases/child.md#TC-C-16` | — | AuthController | | `TC-C-17` | 退出 | 孩子 | P1 | 功能 | `tests/test-cases/child.md#TC-C-17` | — | AuthController | | `TC-C-18` | 设备校验 | 孩子 | P2 | 功能 | `tests/test-cases/child.md#TC-C-18` | — | AuthController | | `TC-C-19` | 消息服务 | 孩子 | P1 | 功能 | `tests/test-cases/child.md#TC-C-19` | — | 消息服务 | | `TC-C-20` | GrowthController | 孩子 | P1 | 功能 | `tests/test-cases/child.md#TC-C-20` | — | GrowthController | | `TC-C-21` | 舌诊情绪识别 | 孩子 | P1 | 功能 | `tests/test-cases/child.md#TC-C-21` | — | 舌诊情绪识别 | | `TC-C-22` | MallController | 孩子 | P1 | 功能 | `tests/test-cases/child.md#TC-C-22` | — | MallController | | `TC-C-23` | 客服 | 孩子 | P1 | 功能 | `tests/test-cases/child.md#TC-C-23` | — | 客服 | | `TC-C-01-E` | 权限/双角色 | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-01-E` | — | 双角色铁律:孩子端不能切家长 | | `TC-C-02-E` | 任务 | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-02-E` | — | TaskController | | `TC-C-03-E` | 小游戏 | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-03-E` | — | pages/games/* | | `TC-C-04-E` | 心愿 | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-04-E` | — | WishController | | `TC-C-05-E` | 心愿 | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-05-E` | — | RewardController | | `TC-C-06-E` | 能量 | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-06-E` | — | EnergyController | | `TC-C-07-E` | 报告/权限 | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-07-E` | — | 报告查看权限隔离 | | `TC-C-08-E` | 打卡/方案 | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-08-E` | — | 健康打卡/方案进度 | | `TC-C-09-E` | 勋章 | 孩子 | P3 | 异常 | `tests/test-cases/child.md#TC-C-09-E` | — | RewardController | | `TC-C-10-E` | 勋章提醒 | 孩子 | P3 | 异常 | `tests/test-cases/child.md#TC-C-10-E` | — | MedalController | | `TC-C-11-E` | 成长记录 | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-11-E` | — | GrowthController | | `TC-C-12-E` | 食谱查看 | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-12-E` | — | 饮食推荐 | | `TC-C-13-E` | AI 对话 | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-13-E` | — | AIChatController | | `TC-C-14-E` | 任务重做 | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-14-E` | — | TaskController | | `TC-C-15-E` | 消息接收 | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-15-E` | — | 消息服务 | | `TC-C-16-E` | 个人资料 | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-16-E` | — | AuthController | | `TC-C-17-E` | 退出 | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-17-E` | — | AuthController | | `TC-C-18-E` | 设备校验 | 孩子 | P3 | 异常 | `tests/test-cases/child.md#TC-C-18-E` | — | AuthController | | `TC-C-19-E` | 消息服务 | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-19-E` | — | 消息服务 | | `TC-C-20-E` | GrowthController | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-20-E` | — | GrowthController | | `TC-C-21-E` | 舌诊情绪识别 | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-21-E` | — | 舌诊情绪识别 | | `TC-C-22-E` | MallController | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-22-E` | — | MallController | | `TC-C-23-E` | 客服 | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-23-E` | — | 客服 | | `TC-C-01-P` | 权限/双角色 | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-01-P` | — | 双角色铁律:孩子端不能切家长 | | `TC-C-02-P` | 任务 | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-02-P` | — | TaskController | | `TC-C-03-P` | 小游戏 | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-03-P` | — | pages/games/* | | `TC-C-04-P` | 心愿 | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-04-P` | — | WishController | | `TC-C-05-P` | 心愿 | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-05-P` | — | RewardController | | `TC-C-06-P` | 能量 | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-06-P` | — | EnergyController | | `TC-C-07-P` | 报告/权限 | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-07-P` | — | 报告查看权限隔离 | | `TC-C-08-P` | 打卡/方案 | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-08-P` | — | 健康打卡/方案进度 | | `TC-C-09-P` | 勋章 | 孩子 | P2 | 权限 | `tests/test-cases/child.md#TC-C-09-P` | — | RewardController | | `TC-C-10-P` | 勋章提醒 | 孩子 | P2 | 权限 | `tests/test-cases/child.md#TC-C-10-P` | — | MedalController | | `TC-C-11-P` | 成长记录 | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-11-P` | — | GrowthController | | `TC-C-12-P` | 食谱查看 | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-12-P` | — | 饮食推荐 | | `TC-C-13-P` | AI 对话 | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-13-P` | — | AIChatController | | `TC-C-14-P` | 任务重做 | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-14-P` | — | TaskController | | `TC-C-15-P` | 消息接收 | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-15-P` | — | 消息服务 | | `TC-C-16-P` | 个人资料 | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-16-P` | — | AuthController | | `TC-C-17-P` | 退出 | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-17-P` | — | AuthController | | `TC-C-18-P` | 设备校验 | 孩子 | P2 | 权限 | `tests/test-cases/child.md#TC-C-18-P` | — | AuthController | | `TC-C-19-P` | 消息服务 | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-19-P` | — | 消息服务 | | `TC-C-20-P` | GrowthController | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-20-P` | — | GrowthController | | `TC-C-21-P` | 舌诊情绪识别 | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-21-P` | — | 舌诊情绪识别 | | `TC-C-22-P` | MallController | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-22-P` | — | MallController | | `TC-C-23-P` | 客服 | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-23-P` | — | 客服 | | `TC-C-24` | 能量/小游戏·任务 | 孩子 | P1 | 功能 | `tests/test-cases/child.md#TC-C-24` | tests/e2e/mini-games.spec.js | GameRecordService/TaskController | | `TC-C-25` | 能量/方案打卡 | 孩子 | P1 | 功能 | `tests/test-cases/child.md#TC-C-25` | tests/e2e/daily-checkin-streak.spec.js | GrowthTaskService | | `TC-C-24-E` | 能量/小游戏·任务 | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-24-E` | — | GameRecordService | | `TC-C-25-E` | 能量/方案打卡 | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-25-E` | — | GrowthTaskService | | `TC-C-24-P` | 能量/小游戏·任务 | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-24-P` | — | JwtInterceptor+role | | `TC-C-25-P` | 能量/方案打卡 | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-25-P` | — | GrowthTaskService | | `TC-C-26` | 健康打卡/睡眠配置 | 孩子 | P1 | 功能 | `tests/test-cases/child.md#TC-C-26` | — | 变更C / HealthSleepController + sys_config(sleep.quality.tags) + sleep-checkin.vue:quickTags(路径需核实) | | `TC-C-26-E` | 健康打卡/睡眠配置 | 孩子 | P2 | 异常 | `tests/test-cases/child.md#TC-C-26-E` | — | 变更C 验收口径 + 风险项 3(默认值/历史数据)/ quickTags 回退契约 | | `TC-C-26-P` | 健康打卡/睡眠配置 | 孩子 | P1 | 权限 | `tests/test-cases/child.md#TC-C-26-P` | — | 变更C / AdminSleepConfigController 权限校验(路径需核实)+ JwtInterceptor 家庭归属 | | `TC-C-N01` | 任务打卡 | 孩子 | P1 | 性能 | `tests/test-cases/child.md#TC-C-N01` | — | TaskController | | `TC-C-N02` | 消息通知 | 孩子 | P2 | 性能 | `tests/test-cases/child.md#TC-C-N02` | — | 消息中心 | | `TC-C-N03` | 孩子端 | 孩子 | P1 | 兼容 | `tests/test-cases/child.md#TC-C-N03` | — | 孩子端 | | `TC-C-N04` | 只读报告 | 孩子 | P2 | 兼容 | `tests/test-cases/child.md#TC-C-N04` | — | 报告前端 | | `TC-C-N05` | 心愿 | 孩子 | P1 | 安全 | `tests/test-cases/child.md#TC-C-N05` | — | 心愿鉴权 | | `TC-C-N06` | 消息通知 | 孩子 | P2 | 安全 | `tests/test-cases/child.md#TC-C-N06` | — | 消息渲染 | | `TC-C-N07` | 孩子端 | 孩子 | P0 | 安全 | `tests/test-cases/child.md#TC-C-N07` | e2e/api/nonfunc-security.spec.js | 双角色铁律 | | `TC-DV-01` | 预约/权限 | 家长A vs 家长B | P0 | 权限 | `tests/test-cases/deep-dive-assessment-appointment.md#TC-DV-01` | - | F1 | | `TC-DV-02` | 预约/状态机 | 规划师 | P1 | 异常 | `tests/test-cases/deep-dive-assessment-appointment.md#TC-DV-02` | - | F2 | | `TC-DV-03` | 预约/额度 | 家长 | P0 | 功能 | `tests/test-cases/deep-dive-assessment-appointment.md#TC-DV-03` | - | 修正口径 | | `TC-DV-04` | 预约/幂等 | 家长 | P1 | 异常 | `tests/test-cases/deep-dive-assessment-appointment.md#TC-DV-04` | - | F4 | | `TC-DV-05` | 预约/权限 | 非指派用户 | P0 | 权限 | `tests/test-cases/deep-dive-assessment-appointment.md#TC-DV-05` | - | 既有 | | `TC-DV-06` | 预约/校验 | 家长 | P1 | 接口 | `tests/test-cases/deep-dive-assessment-appointment.md#TC-DV-06` | - | 既有 | | `TC-DV-07` | 列表/权限 | 非 teacher | P2 | 权限 | `tests/test-cases/deep-dive-assessment-appointment.md#TC-DV-07` | - | F5 | | `TC-DV-08` | 预约/校验 | 家长 | P2 | 异常 | `tests/test-cases/deep-dive-assessment-appointment.md#TC-DV-08` | - | F6 | | `TC-DV-09` | 预约/状态机 | 规划师 | P1 | 功能 | `tests/test-cases/deep-dive-assessment-appointment.md#TC-DV-09` | - | 状态机 | | `TC-DV-10` | 订单↔额度↔预约 | 家长 | P0 | 功能 | `tests/test-cases/deep-dive-assessment-appointment.md#TC-DV-10` | - | 修正口径 | | `TC-PA-01` | 激活/拆任务 | 规划师 | P0 | 功能 | `tests/test-cases/deep-dive-plan-activation.md#TC-PA-01` | - | G1 | | `TC-PA-02` | 激活/幂等 | 规划师 | P0 | 异常 | `tests/test-cases/deep-dive-plan-activation.md#TC-PA-02` | - | G1 | | `TC-PA-03` | 激活/并发幂等 | 规划师×2 | P1 | 并发 | `tests/test-cases/deep-dive-plan-activation.md#TC-PA-03` | - | G2 | | `TC-PA-04` | 激活/取消 | 规划师 | P1 | 功能 | `tests/test-cases/deep-dive-plan-activation.md#TC-PA-04` | - | G3 | | `TC-PA-05` | 拆任务/边界 | 规划师 | P2 | 边界 | `tests/test-cases/deep-dive-plan-activation.md#TC-PA-05` | - | G3 | | `TC-PA-06` | 拆任务/数据 | 规划师 | P2 | 数据 | `tests/test-cases/deep-dive-plan-activation.md#TC-PA-06` | - | G4 | | `TC-G-01` | 启动/首页 | 游客 | P1 | 功能 | `tests/test-cases/guest.md#TC-G-01` | e2e/roles/child/login.spec.js`(反向) | JwtInterceptor 拦截 /api/** | | `TC-G-02` | 认证 | 游客 | P0 | 接口 | `tests/test-cases/guest.md#TC-G-02` | e2e/roles/parent/../login | AuthController/API_REFERENCE 1.1 | | `TC-G-03` | 认证 | 游客 | P2 | 接口 | `tests/test-cases/guest.md#TC-G-03` | — | 统一 POST/JWT | | `TC-G-04` | 家庭/邀请 | 游客 | P1 | 功能 | `tests/test-cases/guest.md#TC-G-04` | e2e/roles/teacher/family-binding.spec.js`(参考) | FamilyInviteController | | `TC-G-05` | 权限 | 游客 | P0 | 权限 | `tests/test-cases/guest.md#TC-G-05` | e2e/debug-control.spec.js`(参考) | JWT;8 公开路径白名单(1.1) | | `TC-G-06` | 权限 | 游客 | P0 | 权限 | `tests/test-cases/guest.md#TC-G-06` | e2e/debug-control.spec.js`(参考) | JwtInterceptor | | `TC-G-07` | 测试模式 | 游客 | P2 | 功能 | `tests/test-cases/guest.md#TC-G-07` | — | AGENTS.md 测试模式 | | `TC-G-08` | 环境切换 | 游客 | P2 | 功能 | `tests/test-cases/guest.md#TC-G-08` | — | config.js | | `TC-G-09` | 认证 | 游客 | P1 | 功能 | `tests/test-cases/guest.md#TC-G-09` | — | AuthController | | `TC-G-10` | 注册 | 游客 | P1 | 功能 | `tests/test-cases/guest.md#TC-G-10` | — | AuthController | | `TC-G-11` | 协议页/AgreementController | 游客 | P2 | 功能 | `tests/test-cases/guest.md#TC-G-11` | — | 协议页/AgreementController | | `TC-G-12` | config.js | 游客 | P2 | 功能 | `tests/test-cases/guest.md#TC-G-12` | — | config.js | | `TC-G-01-E` | 启动/首页 | 游客 | P2 | 异常 | `tests/test-cases/guest.md#TC-G-01-E` | — | JwtInterceptor 拦截 /api/** | | `TC-G-02-E` | 认证 | 游客 | P2 | 异常 | `tests/test-cases/guest.md#TC-G-02-E` | — | AuthController/API_REFERENCE 1.1 | | `TC-G-03-E` | 认证 | 游客 | P2 | 异常 | `tests/test-cases/guest.md#TC-G-03-E` | — | 统一 POST/JWT | | `TC-G-04-E` | 家庭/邀请 | 游客 | P2 | 异常 | `tests/test-cases/guest.md#TC-G-04-E` | — | FamilyInviteController | | `TC-G-05-E` | 权限 | 游客 | P2 | 异常 | `tests/test-cases/guest.md#TC-G-05-E` | — | JWT;8 公开路径白名单(1.1) | | `TC-G-06-E` | 权限 | 游客 | P1 | 异常 | `tests/test-cases/guest.md#TC-G-06-E` | — | JwtInterceptor | | `TC-G-07-E` | 测试模式 | 游客 | P3 | 异常 | `tests/test-cases/guest.md#TC-G-07-E` | — | AGENTS.md 测试模式 | | `TC-G-08-E` | 环境切换 | 游客 | P3 | 异常 | `tests/test-cases/guest.md#TC-G-08-E` | — | config.js | | `TC-G-09-E` | 认证 | 游客 | P2 | 异常 | `tests/test-cases/guest.md#TC-G-09-E` | — | AuthController | | `TC-G-10-E` | 注册 | 游客 | P2 | 异常 | `tests/test-cases/guest.md#TC-G-10-E` | — | AuthController | | `TC-G-11-E` | 协议页 | 游客 | P2 | 异常 | `tests/test-cases/guest.md#TC-G-11-E` | — | 协议页/AgreementController | | `TC-G-12-E` | config.js | 游客 | P2 | 异常 | `tests/test-cases/guest.md#TC-G-12-E` | — | config.js | | `TC-G-01-P` | 启动/首页 | 游客 | P1 | 权限 | `tests/test-cases/guest.md#TC-G-01-P` | — | JwtInterceptor 拦截 /api/** | | `TC-G-02-P` | 认证 | 游客 | P1 | 权限 | `tests/test-cases/guest.md#TC-G-02-P` | — | AuthController/API_REFERENCE 1.1 | | `TC-G-03-P` | 认证 | 游客 | P1 | 权限 | `tests/test-cases/guest.md#TC-G-03-P` | — | 统一 POST/JWT | | `TC-G-04-P` | 家庭/邀请 | 游客 | P1 | 权限 | `tests/test-cases/guest.md#TC-G-04-P` | — | FamilyInviteController | | `TC-G-05-P` | 权限 | 游客 | P1 | 权限 | `tests/test-cases/guest.md#TC-G-05-P` | — | JWT;8 公开路径白名单(1.1) | | `TC-G-06-P` | 权限 | 游客 | P1 | 权限 | `tests/test-cases/guest.md#TC-G-06-P` | — | JwtInterceptor | | `TC-G-07-P` | 测试模式 | 游客 | P2 | 权限 | `tests/test-cases/guest.md#TC-G-07-P` | — | AGENTS.md 测试模式 | | `TC-G-08-P` | 环境切换 | 游客 | P2 | 权限 | `tests/test-cases/guest.md#TC-G-08-P` | — | config.js | | `TC-G-09-P` | 认证 | 游客 | P1 | 权限 | `tests/test-cases/guest.md#TC-G-09-P` | — | AuthController | | `TC-G-10-P` | 注册 | 游客 | P1 | 权限 | `tests/test-cases/guest.md#TC-G-10-P` | — | AuthController | | `TC-G-11-P` | 协议页/AgreementController | 游客 | P2 | 权限 | `tests/test-cases/guest.md#TC-G-11-P` | — | 协议页/AgreementController | | `TC-G-12-P` | config.js | 游客 | P2 | 权限 | `tests/test-cases/guest.md#TC-G-12-P` | — | config.js | | `TC-G-N01` | 落地页 | 游客 | P2 | 性能 | `tests/test-cases/guest.md#TC-G-N01` | — | 落地页/邀请 | | `TC-G-N02` | 浏览转化 | 游客 | P2 | 兼容 | `tests/test-cases/guest.md#TC-G-N02` | e2e/api/nonfunc-perf-compat.spec.js | 登录注册(微信授权) | | `TC-G-N03` | 非微信H5 | 游客 | P2 | 兼容 | `tests/test-cases/guest.md#TC-G-N03` | e2e/api/nonfunc-perf-compat.spec.js | H5 兜底 | | `TC-G-N04` | 落地页 | 游客 | P0 | 安全 | `tests/test-cases/guest.md#TC-G-N04` | e2e/api/nonfunc-security.spec.js | 接口鉴权 | | `TC-G-N05` | 登录注册 | 游客 | P0 | 安全 | `tests/test-cases/guest.md#TC-G-N05` | — | 登录限流 | | `TC-HB-01` | 桥接宿主 | 系统 | P0 | 契约 | `tests/test-cases/health-datasource-bridge.md#TC-HB-01` | HealthDataSourceBridgeContractTest#bridgeHost_classExists | §3.2-1 | | `TC-HB-02` | 桥接宿主 | 系统 | P0 | 契约 | `tests/test-cases/health-datasource-bridge.md#TC-HB-02` | #bridgeHost_hasBridgeMethod | §3.2-1 | | `TC-HB-03` | 华为同步 | 家长 | P0 | 功能 | `tests/test-cases/health-datasource-bridge.md#TC-HB-03` | #bridge_huaweiStep_fieldMappingConformToSpec | §3.1 全字段 | | `TC-HB-04` | 小米同步 | 家长 | P0 | 功能 | `tests/test-cases/health-datasource-bridge.md#TC-HB-04` | #bridge_xiaomiStep_sameDeviceMapping | §3.1 + §2.2 | | `TC-HB-05` | 体重双维展开 | 家长 | P0 | 功能 | `tests/test-cases/health-datasource-bridge.md#TC-HB-05` | #bridge_bodyWeight_expandTwoDimensions | §3.1 dimension 切分 | | `TC-HB-06` | 未知维度丢弃 | 家长 | P1 | 异常 | `tests/test-cases/health-datasource-bridge.md#TC-HB-06` | #bridge_unknownDimensionCodes_dropped | §3.1「未知码丢弃」 | | `TC-HB-07` | 混合合法非法 | 家长 | P1 | 异常 | `tests/test-cases/health-datasource-bridge.md#TC-HB-07` | #bridge_mixedValidAndUnknown_writeOnlyValid | §3.1 | | `TC-HB-08` | percentile 可空 | 家长 | P1 | 边界 | `tests/test-cases/health-datasource-bridge.md#TC-HB-08` | #bridge_percentileNull_stillWrites | §3.1「percentile 可空」 | | `TC-HB-09` | 同日多源覆盖 | 家长 | P0 | 功能 | `tests/test-cases/health-datasource-bridge.md#TC-HB-09` | #bridge_sameDayMultipleRows_latestWins | §3.1 读最新覆盖 + §6 ④ 不加唯一索引 | | `TC-HB-10` | 不覆盖报告行 | 家长 | P0 | 回归 | `tests/test-cases/health-datasource-bridge.md#TC-HB-10` | #bridge_mustNotOverwriteExistingReportRow | §3.1 写入语义 | | `TC-HB-11` | 华为同步接线 | 家长 | P0 | 集成 | `tests/test-cases/health-datasource-bridge.md#TC-HB-11` | #huaweiSyncEngine_injectBridgeHook | §3.2-2 | | `TC-HB-12` | 小米同步接线 | 家长 | P0 | 集成 | `tests/test-cases/health-datasource-bridge.md#TC-HB-12` | #xiaomiSyncEngine_injectBridgeHook | §3.2-2 | | `TC-HB-13` | 死注入解除 | 系统 | P1 | 契约 | `tests/test-cases/health-datasource-bridge.md#TC-HB-13` | #dimensionScoreServiceImpl_deadInjectionResolved | §3.2-1 | | `TC-HB-14` | schema 枚举 | 系统 | P0 | 契约 | `tests/test-cases/health-datasource-bridge.md#TC-HB-14` | #schema_dimensionScores_dataSourceCommentContainsDevice | §4-1 + §6 ① | | `TC-HB-15` | 不加唯一索引 | 系统 | P0 | 契约 | `tests/test-cases/health-datasource-bridge.md#TC-HB-15` | #schema_dimensionScores_noUniqueIndex | §4-2 + §6 ④ | | `TC-HB-16` | 鉴权归口 | 系统 | P1 | 权限 | `tests/test-cases/health-datasource-bridge.md#TC-HB-16` | #permissionFlow_notApplicable` + `e2e-live/health-contract.spec.js | §3.4 | | `TC-HB-03-E` | 映射码全非法 | 家长 | P2 | 异常 | `tests/test-cases/health-datasource-bridge.md#TC-HB-03-E` | #bridge_unknownDimensionCodes_dropped | §3.1 | | `TC-HB-08-E` | 归一化缺失 | 家长 | P2 | 异常 | `tests/test-cases/health-datasource-bridge.md#TC-HB-08-E` | 未覆盖(缺口 G-115-1) | §3.1 | | `TC-HB-09-E` | 并发同秒写入 | 家长 | P2 | 并发 | `tests/test-cases/health-datasource-bridge.md#TC-HB-09-E` | 未覆盖(缺口 G-115-1) | §3.1 | | `TC-P-01` | 家庭 | 家长 | P0 | 功能 | `tests/test-cases/parent.md#TC-P-01` | e2e/roles/parent/family-management.spec.js | FamilyInviteController | | `TC-P-02` | 家庭/成员 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-02` | — | FamilyInviteController | | `TC-P-02-B` | 家庭加入准入校验 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-02-B` | FamilyJoinValidationRulesContractTest`/`FamilyJoinRequestServiceJoinRequiredInfoContractTest`/`FamilyJoinRequestServiceJoinValidationGateTest | FamilyJoinRequestService/FamilyInviteController(S-cfc-57/58/59,5bef71317) | | `TC-P-03` | 成员资料 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-03` | e2e/family-member-management.spec.js | FamilyMembersController | | `TC-P-04` | 关系图 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-04` | — | 关系类型 CRUD/前端选择器 | | `TC-P-05` | 任务 | 家长 | P0 | 功能 | `tests/test-cases/parent.md#TC-P-05` | e2e/roles/parent/../tasks | TaskController | | `TC-P-06` | 任务审核 | 家长 | P0 | 功能 | `tests/test-cases/parent.md#TC-P-06` | — | TaskController/PointsController | | `TC-P-07` | 心愿 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-07` | e2e/roles/parent/wish-management.spec.js | WishController/RewardController | | `TC-P-08` | 能量 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-08` | e2e/roles/parent/energy-dashboard.spec.js | EnergyController | | `TC-P-09` | 测评订单 | 家长 | P0 | 功能 | `tests/test-cases/parent.md#TC-P-09` | e2e/assessment-order-flow.spec.js | AssessmentAppointmentController | | `TC-P-10` | 健康报告 | 家长 | P0 | 功能 | `tests/test-cases/parent.md#TC-P-10` | e2e/dan-report-flow.spec.js | 健康报告上传解析 | | `TC-P-11` | 报告查看 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-11` | — | 报告解析 | | `TC-P-12` | 饮食推荐 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-12` | — | 饮食推荐系统 | | `TC-P-13` | AI 方案 | 家长 | P0 | 功能 | `tests/test-cases/parent.md#TC-P-13` | e2e/ai-plan-task-flow.spec.js | AI 统一走 LangGraph;AiGateway | | `TC-P-14` | 方案提交 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-14` | — | 方案状态机 | | `TC-P-15` | 双角色 | 家长 | P0 | 权限 | `tests/test-cases/parent.md#TC-P-15` | e2e/roles/parent/family-management.spec.js | POST /api/family/member/switch(替代废弃 switch-mode);双角色铁律 | | `TC-P-16` | 会员 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-16` | e2e/roles/parent/../membership | MembershipController/ProductOrderController | | `TC-P-17` | 积分/成长 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-17` | e2e/roles/parent/points.spec.js | PointsController/GrowthController | | `TC-P-18` | AI 对话 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-18` | — | AIChatController;LangGraph RAG | | `TC-P-19` | 能量配置 | 家长 | P2 | 功能 | `tests/test-cases/parent.md#TC-P-19` | — | 维度配置 | | `TC-P-20` | 健康报告 | 家长 | P0 | 功能 | `tests/test-cases/parent.md#TC-P-20` | e2e/dan-report-flow.spec.js | 报告解析中台/POST /api/media/upload | | `TC-P-21` | 报告解析 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-21` | — | /api/admin/report-parser/types | | `TC-P-22` | 报告预览 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-22` | — | 解析中台 | | `TC-P-23` | 报告入库 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-23` | — | 解析中台 | | `TC-P-24` | 报告管理 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-24` | — | 报告管理 | | `TC-P-25` | 报告趋势 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-25` | — | 成长/报告 | | `TC-P-26` | 饮食推荐 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-26` | — | 饮食推荐系统 | | `TC-P-26-A` | 饮食推荐·健康问卷个性化调整 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-26-A` | tests/e2e/diet-recommendation-health-adjust.spec.js`(已入库,执行受登录态/问卷数据预置门控) | FoodRecommendService.getCurrentFoods/HealthFilterService/recommendation.vue(B1-B3) | | `TC-P-27` | 家庭食谱 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-27` | — | 饮食推荐/家庭食谱 | | `TC-P-28` | 食谱筛选 | 家长 | P2 | 功能 | `tests/test-cases/parent.md#TC-P-28` | — | 饮食推荐 | | `TC-P-29` | 食谱收藏 | 家长 | P2 | 功能 | `tests/test-cases/parent.md#TC-P-29` | — | 饮食推荐 | | `TC-P-30` | 食谱营养 | 家长 | P2 | 功能 | `tests/test-cases/parent.md#TC-P-30` | — | 饮食推荐 | | `TC-P-31` | 测评类型 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-31` | — | DanAssessmentController | | `TC-P-32` | 测评规划师 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-32` | — | 测评订单 | | `TC-P-33` | 测评下单 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-33` | e2e/assessment-order-flow.spec.js | AssessmentOrder | | `TC-P-34` | 测评支付 | 家长 | P1 | 接口 | `tests/test-cases/parent.md#TC-P-34` | — | 支付/AssessmentQuota | | `TC-P-35` | 测评额度 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-35` | — | AssessmentQuota | | `TC-P-36` | 测评预约 | 家长 | P0 | 接口 | `tests/test-cases/parent.md#TC-P-36` | e2e/assessment-order-flow.spec.js | AssessmentAppointmentController | | `TC-P-37` | 预约状态 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-37` | — | AssessmentAppointmentController | | `TC-P-38` | 预约取消 | 家长 | P0 | 权限 | `tests/test-cases/parent.md#TC-P-38` | — | AssessmentAppointmentController | | `TC-P-39` | DAN报告 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-39` | — | DanAssessmentResultDTO | | `TC-P-40` | AI方案 | 家长 | P0 | 功能 | `tests/test-cases/parent.md#TC-P-40` | e2e/ai-plan-task-flow.spec.js | AIChatController/AiGateway | | `TC-P-41` | 方案迭代 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-41` | — | AIChatController | | `TC-P-42` | 方案编辑 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-42` | — | 方案管理 | | `TC-P-43` | 方案查看 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-43` | — | 方案管理 | | `TC-P-44` | 方案确认 | 家长 | P0 | 功能 | `tests/test-cases/parent.md#TC-P-44` | — | 方案状态机 | | `TC-P-45` | 方案发布 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-45` | — | 方案管理 | | `TC-P-46` | 方案激活 | 家长 | P0 | 功能 | `tests/test-cases/parent.md#TC-P-46` | e2e/ai-plan-task-flow.spec.js | 方案激活任务分解 | | `TC-P-47` | 方案任务 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-47` | — | GrowthPlanController | | `TC-P-48` | 方案版本 | 家长 | P2 | 功能 | `tests/test-cases/parent.md#TC-P-48` | — | 方案管理 | | `TC-P-49` | AI对话 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-49` | — | AIChatController | | `TC-P-50` | 成长记录 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-50` | — | GrowthController | | `TC-P-51` | 成长里程碑 | 家长 | P2 | 功能 | `tests/test-cases/parent.md#TC-P-51` | — | GrowthController | | `TC-P-52` | 商城浏览 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-52` | e2e/product-purchase.spec.js | MallController/danshop | | `TC-P-53` | 商品详情 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-53` | — | MallController | | `TC-P-54` | 商城下单 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-54` | — | MallController | | `TC-P-55` | 订单支付 | 家长 | P1 | 接口 | `tests/test-cases/parent.md#TC-P-55` | — | 支付 | | `TC-P-56` | 订单退款 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-56` | — | 订单服务 | | `TC-P-57` | 优惠券 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-57` | — | 优惠券 | | `TC-P-58` | 会员购买 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-58` | e2e/../membership | MemberController | | `TC-P-59` | 会员权益 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-59` | — | MemberController | | `TC-P-60` | 会员续费 | 家长 | P2 | 功能 | `tests/test-cases/parent.md#TC-P-60` | — | MemberController | | `TC-P-61` | 联系人 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-61` | — | ContactCard/contact-detail | | `TC-P-62` | 联系人导入 | 家长 | P2 | 功能 | `tests/test-cases/parent.md#TC-P-62` | — | ContactImport | | `TC-P-63` | 联系人权限 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-63` | — | ContactCard | | `TC-P-64` | 个人资料 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-64` | — | AuthController | | `TC-P-65` | 通知设置 | 家长 | P2 | 功能 | `tests/test-cases/parent.md#TC-P-65` | — | 消息服务 | | `TC-P-66` | 隐私设置 | 家长 | P2 | 功能 | `tests/test-cases/parent.md#TC-P-66` | — | 隐私设置 | | `TC-P-67` | 报告代传/report-proxy | 家长 | P0 | 功能 | `tests/test-cases/parent.md#TC-P-67` | — | 报告代传/report-proxy | | `TC-P-68` | 家庭天盘 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-68` | — | 家庭天盘 | | `TC-P-69` | 精准营养 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-69` | — | 精准营养 | | `TC-P-70` | 舌诊情绪识别 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-70` | — | 舌诊情绪识别 | | `TC-P-71` | AuthController | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-71` | — | AuthController | | `TC-P-72` | 数据导出(GDPR) | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-72` | — | 数据导出(GDPR) | | `TC-P-73` | 家庭/成员 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-73` | — | 家庭/成员 | | `TC-P-74` | 规划师绑定 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-74` | — | 规划师绑定 | | `TC-P-75` | 优惠券 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-75` | — | 优惠券 | | `TC-P-76` | 活动管理 | 家长 | P0 | 功能 | `tests/test-cases/parent.md#TC-P-76` | — | 活动管理 | | `TC-P-77` | 活动 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-77` | — | 活动 | | `TC-P-78` | 消息服务 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-78` | — | 消息服务 | | `TC-P-79` | 消息服务 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-79` | — | 消息服务 | | `TC-P-80` | 会员/订单 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-80` | — | 会员/订单 | | `TC-P-81` | 方案/任务 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-81` | — | 方案/任务 | | `TC-P-82` | 搜索 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-82` | — | 搜索 | | `TC-P-83` | 客服 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-83` | — | 客服 | | `TC-P-84` | 分享 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-84` | — | 分享 | | `TC-P-85` | AuthController | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-85` | — | AuthController | | `TC-P-86` | 勋章/排行 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-86` | — | 勋章/排行 | | `TC-P-01-E` | 家庭 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-01-E` | — | FamilyInviteController | | `TC-P-02-E` | 家庭/成员 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-02-E` | — | FamilyInviteController | | `TC-P-03-E` | 成员资料 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-03-E` | — | FamilyMembersController | | `TC-P-04-E` | 关系图 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-04-E` | — | 关系类型 CRUD/前端选择器 | | `TC-P-05-E` | 任务 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-05-E` | — | TaskController | | `TC-P-06-E` | 任务审核 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-06-E` | — | TaskController/PointsController | | `TC-P-07-E` | 心愿 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-07-E` | — | WishController/RewardController | | `TC-P-08-E` | 能量 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-08-E` | — | EnergyController | | `TC-P-09-E` | 测评订单 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-09-E` | — | AssessmentAppointmentController | | `TC-P-10-E` | 健康报告 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-10-E` | — | 健康报告上传解析 | | `TC-P-11-E` | 报告查看 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-11-E` | — | 报告解析 | | `TC-P-12-E` | 饮食推荐 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-12-E` | — | 饮食推荐系统 | | `TC-P-13-E` | AI 方案 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-13-E` | — | AI 统一走 LangGraph;AiGateway | | `TC-P-14-E` | 方案提交 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-14-E` | — | 方案状态机 | | `TC-P-15-E` | 双角色 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-15-E` | — | POST /api/family/member/switch(替代废弃 switch-mode);双角色铁律 | | `TC-P-16-E` | 会员 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-16-E` | — | MembershipController/ProductOrderController | | `TC-P-17-E` | 积分/成长 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-17-E` | — | PointsController/GrowthController | | `TC-P-18-E` | AI 对话 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-18-E` | — | AIChatController;LangGraph RAG | | `TC-P-19-E` | 能量配置 | 家长 | P3 | 异常 | `tests/test-cases/parent.md#TC-P-19-E` | — | 维度配置 | | `TC-P-20-E` | 健康报告 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-20-E` | — | 报告解析中台/POST /api/media/upload | | `TC-P-21-E` | 报告解析 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-21-E` | — | /api/admin/report-parser/types | | `TC-P-22-E` | 报告预览 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-22-E` | — | 解析中台 | | `TC-P-23-E` | 报告入库 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-23-E` | — | 解析中台 | | `TC-P-24-E` | 报告管理 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-24-E` | — | 报告管理 | | `TC-P-25-E` | 报告趋势 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-25-E` | — | 成长/报告 | | `TC-P-26-E` | 饮食推荐 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-26-E` | — | 饮食推荐系统 | | `TC-P-26-A-E` | 饮食推荐·个性化调整异常 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-26-A-E` | tests/e2e/diet-recommendation-health-adjust.spec.js:62`(B1 契约) | HealthFilterService.loadProfile/FoodRecommendService.getCurrentFoods | | `TC-P-27-E` | 家庭食谱 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-27-E` | — | 饮食推荐/家庭食谱 | | `TC-P-28-E` | 食谱筛选 | 家长 | P3 | 异常 | `tests/test-cases/parent.md#TC-P-28-E` | — | 饮食推荐 | | `TC-P-29-E` | 食谱收藏 | 家长 | P3 | 异常 | `tests/test-cases/parent.md#TC-P-29-E` | — | 饮食推荐 | | `TC-P-30-E` | 食谱营养 | 家长 | P3 | 异常 | `tests/test-cases/parent.md#TC-P-30-E` | — | 饮食推荐 | | `TC-P-31-E` | 测评类型 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-31-E` | — | DanAssessmentController | | `TC-P-32-E` | 测评规划师 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-32-E` | — | 测评订单 | | `TC-P-33-E` | 测评下单 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-33-E` | — | AssessmentOrder | | `TC-P-34-E` | 测评支付 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-34-E` | — | 支付/AssessmentQuota | | `TC-P-35-E` | 测评额度 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-35-E` | — | AssessmentQuota | | `TC-P-36-E` | 测评预约 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-36-E` | — | AssessmentAppointmentController | | `TC-P-37-E` | 预约状态 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-37-E` | — | AssessmentAppointmentController | | `TC-P-38-E` | 预约取消 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-38-E` | — | AssessmentAppointmentController | | `TC-P-39-E` | DAN报告 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-39-E` | — | DanAssessmentResultDTO | | `TC-P-40-E` | AI方案 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-40-E` | — | AIChatController/AiGateway | | `TC-P-41-E` | 方案迭代 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-41-E` | — | AIChatController | | `TC-P-42-E` | 方案编辑 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-42-E` | — | 方案管理 | | `TC-P-43-E` | 方案查看 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-43-E` | — | 方案管理 | | `TC-P-44-E` | 方案确认 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-44-E` | — | 方案状态机 | | `TC-P-45-E` | 方案发布 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-45-E` | — | 方案管理 | | `TC-P-46-E` | 方案激活 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-46-E` | — | 方案激活任务分解 | | `TC-P-47-E` | 方案任务 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-47-E` | — | GrowthPlanController | | `TC-P-48-E` | 方案版本 | 家长 | P3 | 异常 | `tests/test-cases/parent.md#TC-P-48-E` | — | 方案管理 | | `TC-P-49-E` | AI对话 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-49-E` | — | AIChatController | | `TC-P-50-E` | 成长记录 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-50-E` | — | GrowthController | | `TC-P-51-E` | 成长里程碑 | 家长 | P3 | 异常 | `tests/test-cases/parent.md#TC-P-51-E` | — | GrowthController | | `TC-P-52-E` | 商城浏览 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-52-E` | — | MallController/danshop | | `TC-P-53-E` | 商品详情 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-53-E` | — | MallController | | `TC-P-54-E` | 商城下单 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-54-E` | — | MallController | | `TC-P-55-E` | 订单支付 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-55-E` | — | 支付 | | `TC-P-56-E` | 订单退款 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-56-E` | — | 订单服务 | | `TC-P-57-E` | 优惠券 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-57-E` | — | 优惠券 | | `TC-P-58-E` | 会员购买 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-58-E` | — | MemberController | | `TC-P-59-E` | 会员权益 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-59-E` | — | MemberController | | `TC-P-60-E` | 会员续费 | 家长 | P3 | 异常 | `tests/test-cases/parent.md#TC-P-60-E` | — | MemberController | | `TC-P-61-E` | 联系人 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-61-E` | — | ContactCard/contact-detail | | `TC-P-62-E` | 联系人导入 | 家长 | P3 | 异常 | `tests/test-cases/parent.md#TC-P-62-E` | — | ContactImport | | `TC-P-63-E` | 联系人权限 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-63-E` | — | ContactCard | | `TC-P-64-E` | 个人资料 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-64-E` | — | AuthController | | `TC-P-65-E` | 通知设置 | 家长 | P3 | 异常 | `tests/test-cases/parent.md#TC-P-65-E` | — | 消息服务 | | `TC-P-66-E` | 隐私设置 | 家长 | P3 | 异常 | `tests/test-cases/parent.md#TC-P-66-E` | — | 隐私设置 | | `TC-P-67-E` | 报告代传/report-proxy | 家长 | P1 | 异常 | `tests/test-cases/parent.md#TC-P-67-E` | — | 报告代传/report-proxy | | `TC-P-68-E` | 家庭天盘 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-68-E` | — | 家庭天盘 | | `TC-P-69-E` | 精准营养 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-69-E` | — | 精准营养 | | `TC-P-70-E` | 舌诊情绪识别 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-70-E` | — | 舌诊情绪识别 | | `TC-P-71-E` | AuthController | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-71-E` | — | AuthController | | `TC-P-72-E` | 数据导出(GDPR) | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-72-E` | — | 数据导出(GDPR) | | `TC-P-73-E` | 家庭/成员 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-73-E` | — | 家庭/成员 | | `TC-P-74-E` | 规划师绑定 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-74-E` | — | 规划师绑定 | | `TC-P-75-E` | 优惠券 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-75-E` | — | 优惠券 | | `TC-P-76-E` | 活动管理 | 家长 | P1 | 异常 | `tests/test-cases/parent.md#TC-P-76-E` | — | 活动管理 | | `TC-P-77-E` | 活动 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-77-E` | — | 活动 | | `TC-P-78-E` | 消息服务 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-78-E` | — | 消息服务 | | `TC-P-79-E` | 消息服务 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-79-E` | — | 消息服务 | | `TC-P-80-E` | 会员/订单 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-80-E` | — | 会员/订单 | | `TC-P-81-E` | 方案/任务 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-81-E` | — | 方案/任务 | | `TC-P-82-E` | 搜索 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-82-E` | — | 搜索 | | `TC-P-83-E` | 客服 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-83-E` | — | 客服 | | `TC-P-84-E` | 分享 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-84-E` | — | 分享 | | `TC-P-85-E` | AuthController | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-85-E` | — | AuthController | | `TC-P-86-E` | 勋章/排行 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-86-E` | — | 勋章/排行 | | `TC-P-01-P` | 家庭 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-01-P` | — | FamilyInviteController | | `TC-P-02-P` | 家庭/成员 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-02-P` | — | FamilyInviteController | | `TC-P-03-P` | 成员资料 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-03-P` | — | FamilyMembersController | | `TC-P-04-P` | 关系图 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-04-P` | — | 关系类型 CRUD/前端选择器 | | `TC-P-05-P` | 任务 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-05-P` | — | TaskController | | `TC-P-06-P` | 任务审核 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-06-P` | — | TaskController/PointsController | | `TC-P-07-P` | 心愿 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-07-P` | — | WishController/RewardController | | `TC-P-08-P` | 能量 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-08-P` | — | EnergyController | | `TC-P-09-P` | 测评订单 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-09-P` | — | AssessmentAppointmentController | | `TC-P-10-P` | 健康报告 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-10-P` | — | 健康报告上传解析 | | `TC-P-11-P` | 报告查看 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-11-P` | — | 报告解析 | | `TC-P-12-P` | 饮食推荐 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-12-P` | — | 饮食推荐系统 | | `TC-P-13-P` | AI 方案 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-13-P` | — | AI 统一走 LangGraph;AiGateway | | `TC-P-14-P` | 方案提交 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-14-P` | — | 方案状态机 | | `TC-P-15-P` | 双角色 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-15-P` | — | POST /api/family/member/switch(替代废弃 switch-mode);双角色铁律 | | `TC-P-16-P` | 会员 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-16-P` | — | MembershipController/ProductOrderController | | `TC-P-17-P` | 积分/成长 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-17-P` | — | PointsController/GrowthController | | `TC-P-18-P` | AI 对话 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-18-P` | — | AIChatController;LangGraph RAG | | `TC-P-19-P` | 能量配置 | 家长 | P2 | 权限 | `tests/test-cases/parent.md#TC-P-19-P` | — | 维度配置 | | `TC-P-20-P` | 健康报告 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-20-P` | — | 报告解析中台/POST /api/media/upload | | `TC-P-21-P` | 报告解析 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-21-P` | — | /api/admin/report-parser/types | | `TC-P-22-P` | 报告预览 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-22-P` | — | 解析中台 | | `TC-P-23-P` | 报告入库 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-23-P` | — | 解析中台 | | `TC-P-24-P` | 报告管理 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-24-P` | — | 报告管理 | | `TC-P-25-P` | 报告趋势 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-25-P` | — | 成长/报告 | | `TC-P-26-P` | 饮食推荐 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-26-P` | — | 饮食推荐系统 | | `TC-P-27-P` | 家庭食谱 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-27-P` | — | 饮食推荐/家庭食谱 | | `TC-P-28-P` | 食谱筛选 | 家长 | P2 | 权限 | `tests/test-cases/parent.md#TC-P-28-P` | — | 饮食推荐 | | `TC-P-29-P` | 食谱收藏 | 家长 | P2 | 权限 | `tests/test-cases/parent.md#TC-P-29-P` | — | 饮食推荐 | | `TC-P-30-P` | 食谱营养 | 家长 | P2 | 权限 | `tests/test-cases/parent.md#TC-P-30-P` | — | 饮食推荐 | | `TC-P-31-P` | 测评类型 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-31-P` | — | DanAssessmentController | | `TC-P-32-P` | 测评规划师 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-32-P` | — | 测评订单 | | `TC-P-33-P` | 测评下单 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-33-P` | — | AssessmentOrder | | `TC-P-34-P` | 测评支付 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-34-P` | — | 支付/AssessmentQuota | | `TC-P-35-P` | 测评额度 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-35-P` | — | AssessmentQuota | | `TC-P-36-P` | 测评预约 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-36-P` | — | AssessmentAppointmentController | | `TC-P-37-P` | 预约状态 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-37-P` | — | AssessmentAppointmentController | | `TC-P-38-P` | 预约取消 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-38-P` | — | AssessmentAppointmentController | | `TC-P-39-P` | DAN报告 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-39-P` | — | DanAssessmentResultDTO | | `TC-P-40-P` | AI方案 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-40-P` | — | AIChatController/AiGateway | | `TC-P-41-P` | 方案迭代 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-41-P` | — | AIChatController | | `TC-P-42-P` | 方案编辑 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-42-P` | — | 方案管理 | | `TC-P-43-P` | 方案查看 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-43-P` | — | 方案管理 | | `TC-P-44-P` | 方案确认 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-44-P` | — | 方案状态机 | | `TC-P-45-P` | 方案发布 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-45-P` | — | 方案管理 | | `TC-P-46-P` | 方案激活 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-46-P` | — | 方案激活任务分解 | | `TC-P-47-P` | 方案任务 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-47-P` | — | GrowthPlanController | | `TC-P-48-P` | 方案版本 | 家长 | P2 | 权限 | `tests/test-cases/parent.md#TC-P-48-P` | — | 方案管理 | | `TC-P-49-P` | AI对话 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-49-P` | — | AIChatController | | `TC-P-50-P` | 成长记录 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-50-P` | — | GrowthController | | `TC-P-51-P` | 成长里程碑 | 家长 | P2 | 权限 | `tests/test-cases/parent.md#TC-P-51-P` | — | GrowthController | | `TC-P-52-P` | 商城浏览 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-52-P` | — | MallController/danshop | | `TC-P-53-P` | 商品详情 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-53-P` | — | MallController | | `TC-P-54-P` | 商城下单 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-54-P` | — | MallController | | `TC-P-55-P` | 订单支付 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-55-P` | — | 支付 | | `TC-P-56-P` | 订单退款 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-56-P` | — | 订单服务 | | `TC-P-57-P` | 优惠券 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-57-P` | — | 优惠券 | | `TC-P-58-P` | 会员购买 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-58-P` | — | MemberController | | `TC-P-59-P` | 会员权益 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-59-P` | — | MemberController | | `TC-P-60-P` | 会员续费 | 家长 | P2 | 权限 | `tests/test-cases/parent.md#TC-P-60-P` | — | MemberController | | `TC-P-61-P` | 联系人 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-61-P` | — | ContactCard/contact-detail | | `TC-P-62-P` | 联系人导入 | 家长 | P2 | 权限 | `tests/test-cases/parent.md#TC-P-62-P` | — | ContactImport | | `TC-P-63-P` | 联系人权限 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-63-P` | — | ContactCard | | `TC-P-64-P` | 个人资料 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-64-P` | — | AuthController | | `TC-P-65-P` | 通知设置 | 家长 | P2 | 权限 | `tests/test-cases/parent.md#TC-P-65-P` | — | 消息服务 | | `TC-P-66-P` | 隐私设置 | 家长 | P2 | 权限 | `tests/test-cases/parent.md#TC-P-66-P` | — | 隐私设置 | | `TC-P-67-P` | 报告代传/report-proxy | 家长 | P0 | 权限 | `tests/test-cases/parent.md#TC-P-67-P` | — | 报告代传/report-proxy | | `TC-P-68-P` | 家庭天盘 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-68-P` | — | 家庭天盘 | | `TC-P-69-P` | 精准营养 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-69-P` | — | 精准营养 | | `TC-P-70-P` | 舌诊情绪识别 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-70-P` | — | 舌诊情绪识别 | | `TC-P-71-P` | AuthController | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-71-P` | — | AuthController | | `TC-P-72-P` | 数据导出(GDPR) | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-72-P` | — | 数据导出(GDPR) | | `TC-P-73-P` | 家庭/成员 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-73-P` | — | 家庭/成员 | | `TC-P-74-P` | 规划师绑定 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-74-P` | — | 规划师绑定 | | `TC-P-75-P` | 优惠券 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-75-P` | — | 优惠券 | | `TC-P-76-P` | 活动管理 | 家长 | P0 | 权限 | `tests/test-cases/parent.md#TC-P-76-P` | — | 活动管理 | | `TC-P-77-P` | 活动 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-77-P` | — | 活动 | | `TC-P-78-P` | 消息服务 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-78-P` | — | 消息服务 | | `TC-P-79-P` | 消息服务 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-79-P` | — | 消息服务 | | `TC-P-80-P` | 会员/订单 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-80-P` | — | 会员/订单 | | `TC-P-81-P` | 方案/任务 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-81-P` | — | 方案/任务 | | `TC-P-82-P` | 搜索 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-82-P` | — | 搜索 | | `TC-P-83-P` | 客服 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-83-P` | — | 客服 | | `TC-P-84-P` | 分享 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-84-P` | — | 分享 | | `TC-P-85-P` | AuthController | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-85-P` | — | AuthController | | `TC-P-86-P` | 勋章/排行 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-86-P` | — | 勋章/排行 | | `TC-P-87` | 能量/任务 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-87` | tests/e2e/energy-system.spec.js | EnergyRuleEngine/TaskController | | `TC-P-88` | 能量/心愿 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-88` | — | EnergyController/RewardController | | `TC-P-89` | 能量/手动 | 家长 | P2 | 功能 | `tests/test-cases/parent.md#TC-P-89` | — | EnergyController | | `TC-P-90` | 能量/日上限 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-90` | — | DimensionDailyLimit | | `TC-P-91` | 能量/健康报告 | 家长 | P0 | 功能 | `tests/test-cases/parent.md#TC-P-91` | tests/e2e/flora-microbiome-flow.spec.js | HealthReportController | | `TC-P-92` | 能量/配置 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-92` | tests/e2e/energy-rules-config.spec.js | EnergyController/维度配置 | | `TC-P-93` | 能量/文章·活动 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-93` | — | ArticleService/ActivityService | | `TC-P-87-E` | 能量/任务 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-87-E` | — | EnergyRuleEngine | | `TC-P-88-E` | 能量/心愿 | 家长 | P1 | 异常 | `tests/test-cases/parent.md#TC-P-88-E` | — | EnergyController/RewardController | | `TC-P-89-E` | 能量/手动 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-89-E` | — | EnergyController | | `TC-P-90-E` | 能量/日上限 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-90-E` | — | DimensionDailyLimit | | `TC-P-91-E` | 能量/健康报告 | 家长 | P1 | 异常 | `tests/test-cases/parent.md#TC-P-91-E` | — | HealthReportController | | `TC-P-92-E` | 能量/配置 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-92-E` | — | EnergyController/维度配置 | | `TC-P-93-E` | 能量/文章·活动 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-93-E` | — | ArticleService/ActivityService | | `TC-P-87-P` | 能量/任务 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-87-P` | — | JwtInterceptor+role | | `TC-P-88-P` | 能量/心愿 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-88-P` | — | EnergyController | | `TC-P-89-P` | 能量/手动 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-89-P` | — | JwtInterceptor+role | | `TC-P-90-P` | 能量/日上限 | 家长 | P2 | 权限 | `tests/test-cases/parent.md#TC-P-90-P` | — | DimensionDailyLimit | | `TC-P-91-P` | 能量/健康报告 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-91-P` | — | HealthReportController | | `TC-P-92-P` | 能量/配置 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-92-P` | — | EnergyController | | `TC-P-93-P` | 能量/文章·活动 | 家长 | P2 | 权限 | `tests/test-cases/parent.md#TC-P-93-P` | — | ArticleService/ActivityService | | `TC-P-94` | 成就/历史完成任务 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-94` | — | 变更A / TaskController.getTaskHistory(/api/tasks/history) + utils/api.js:getTaskHistory | | `TC-P-95` | 成就/成长历史记录 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-95` | — | 变更B / HealthCheckinController /api/health/checkin/list + GrowthController /api/growth/record/list(合并口径需核实) | | `TC-P-96` | 成就/布局 | 家长 | P1 | 功能 | `tests/test-cases/parent.md#TC-P-96` | — | 变更D / profile.vue「我的成就」区块独立网格类(.ach-item{width:25%} → 20%) | | `TC-P-94-E` | 成就/历史完成任务 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-94-E` | — | 变更A 验收口径 / TaskController.getTaskHistory 分页参数校验 | | `TC-P-95-E` | 成就/成长历史记录 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-95-E` | — | 变更B 风险项(聚合口径需实现方回链)/ 两接口降级契约 | | `TC-P-96-E` | 成就/布局 | 家长 | P2 | 异常 | `tests/test-cases/parent.md#TC-P-96-E` | — | 变更D 隔离要求(不得改 .achievement-grid 全局) | | `TC-P-94-P` | 成就/历史完成任务 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-94-P` | — | JwtInterceptor + 家庭归属校验(TaskController.getTaskHistory) | | `TC-P-95-P` | 成就/成长历史记录 | 家长 | P1 | 权限 | `tests/test-cases/parent.md#TC-P-95-P` | — | HealthCheckinController / GrowthController + 家庭归属校验 | | `TC-P-96-P` | 成就/布局 | 家长 | P2 | 权限 | `tests/test-cases/parent.md#TC-P-96-P` | — | 变更D 隔离要求 + profile.vue 成就统计取值归属(接口名需核实) | | `TC-P-N01` | 健康报告 | 家长 | P1 | 性能 | `tests/test-cases/parent.md#TC-P-N01` | — | 健康报告上传解析 | | `TC-P-N02` | AI 方案 | 家长 | P1 | 性能 | `tests/test-cases/parent.md#TC-P-N02` | e2e/ai-plan-task-flow | AiGateway/LangGraph | | `TC-P-N03` | 任务 | 家长 | P2 | 性能 | `tests/test-cases/parent.md#TC-P-N03` | — | TaskController | | `TC-P-N04` | 全局搜索 | 家长 | P2 | 性能 | `tests/test-cases/parent.md#TC-P-N04` | — | 搜索接口 | | `TC-P-N05` | 报告查看 | 家长 | P2 | 性能 | `tests/test-cases/parent.md#TC-P-N05` | — | 报告解析 | | `TC-P-N06` | 双角色 | 家长 | P1 | 兼容 | `tests/test-cases/parent.md#TC-P-N06` | e2e/family-management | 双角色铁律 | | `TC-P-N07` | 饮食推荐 | 家长 | P2 | 兼容 | `tests/test-cases/parent.md#TC-P-N07` | — | 饮食推荐 | | `TC-P-N08` | 设置 | 家长 | P2 | 兼容 | `tests/test-cases/parent.md#TC-P-N08` | — | 前端适配 | | `TC-P-N09` | 报告闭环 | 家长 | P0 | 安全 | `tests/test-cases/parent.md#TC-P-N09` | e2e/api/nonfunc-security.spec.js | 报告鉴权 | | `TC-P-N10` | AI 对话 | 家长 | P1 | 安全 | `tests/test-cases/parent.md#TC-P-N10` | e2e/api/nonfunc-security.spec.js | AIChatController | | `TC-P-N11` | 健康报告 | 家长 | P0 | 安全 | `tests/test-cases/parent.md#TC-P-N11` | e2e/api/nonfunc-security.spec.js | 上传校验 | | `TC-P-N12` | 双角色 | 家长 | P1 | 安全 | `tests/test-cases/parent.md#TC-P-N12` | — | switch 接口鉴权 | | `TC-P-N13` | 设置 | 家长 | P1 | 安全 | `tests/test-cases/parent.md#TC-P-N13` | — | 数据安全 | | `TC-SIG2D-01` | 签名·去横屏化 | 家长/孩子 | P0 | 功能 | `tests/test-cases/signature.md#TC-SIG2D-01` | — | S4-1 删除横屏方法 | | `TC-SIG2D-01b` | 签名·去横屏化 | 家长/孩子 | P0 | 功能 | `tests/test-cases/signature.md#TC-SIG2D-01b` | — | S4-1 删除降级提示 | | `TC-SIG2D-01c` | 签名·去横屏化 | 家长/孩子 | P0 | 功能 | `tests/test-cases/signature.md#TC-SIG2D-01c` | — | S4-1 去横屏依赖 | | `TC-SIG2D-02` | 签名·竖屏布局 | 家长/孩子 | P0 | 兼容 | `tests/test-cases/signature.md#TC-SIG2D-02` | — | S4-1 保留 computeCanvasHeight | | `TC-SIG2D-03` | 签名·canvas 2d | 家长/孩子 | P0 | 功能 | `tests/test-cases/signature.md#TC-SIG2D-03` | — | S4-2 模板 2d 化 | | `TC-SIG2D-03b` | 签名·canvas 2d | 家长/孩子 | P0 | 功能 | `tests/test-cases/signature.md#TC-SIG2D-03b` | 0)` 多实例唯一;`_canvasNode: null`(导出用 2d 节点) | - | | `TC-SIG2D-04` | 签名·canvas 2d | 家长/孩子 | P0 | 功能 | `tests/test-cases/signature.md#TC-SIG2D-04` | — | S4-2 初始化 | | `TC-SIG2D-05` | 签名·坐标修复 | 家长/孩子 | P0 | 功能 | `tests/test-cases/signature.md#TC-SIG2D-05` | — | S4-2 触摸坐标 | | `TC-SIG2D-06` | 签名·笔迹可见 | 家长/孩子 | P0 | 功能 | `tests/test-cases/signature.md#TC-SIG2D-06` | — | S4-2 同步绘制 | | `TC-SIG2D-07` | 签名·导出/清空 | 家长/孩子 | P0 | 功能 | `tests/test-cases/signature.md#TC-SIG2D-07` | — | S4-2 导出/清空 | | `TC-SIG2D-08` | 签名·契约不回归 | 家长/孩子 | P1 | 回归 | `tests/test-cases/signature.md#TC-SIG2D-08` | — | S4-3 不回归 | | `TC-SIG2D-01-E` | 签名·2d 初始化失败 | 家长/孩子 | P2 | 异常 | `tests/test-cases/signature.md#TC-SIG2D-01-E` | — | S4-2 初始化防御 | | `TC-SIG2D-02-E` | 签名·导出降级 | 家长/孩子 | P2 | 异常 | `tests/test-cases/signature.md#TC-SIG2D-02-E` | — | S4-2 导出保持既有链路 | | `TC-SIG2D-N01` | 签名·多端兼容 | 家长/孩子 | P1 | 兼容 | `tests/test-cases/signature.md#TC-SIG2D-N01` | — | S4-1/S4-2 | | `TC-SIG2D-N02` | 签名·既有 2d 组件不回归 | 家长/孩子 | P1 | 回归 | `tests/test-cases/signature.md#TC-SIG2D-N02` | — | S4-3 不回归 | | `TC-T-01` | 认证/双角色 | 规划师 | P0 | 权限 | `tests/test-cases/teacher.md#TC-T-01` | e2e/roles/teacher/login.spec.js | AuthController;规划师可切回家长 | | `TC-T-02` | 家庭绑定 | 规划师 | P1 | 功能 | `tests/test-cases/teacher.md#TC-T-02` | e2e/roles/teacher/family-binding.spec.js | FamilyInviteController | | `TC-T-03` | 健康报告 | 规划师 | P0 | 功能 | `tests/test-cases/teacher.md#TC-T-03` | e2e/roles/teacher/dan-report-flow.spec.js | 报告上传解析;规划师代传 | | `TC-T-04` | 报告审核 | 规划师 | P1 | 功能 | `tests/test-cases/teacher.md#TC-T-04` | — | 报告审核 | | `TC-T-05` | 方案管理 | 规划师 | P0 | 功能 | `tests/test-cases/teacher.md#TC-T-05` | e2e/admin-panel.spec.js`(参考) | 方案管理;黑盒回归项 | | `TC-T-06` | 方案审核 | 规划师 | P0 | 功能 | `tests/test-cases/teacher.md#TC-T-06` | — | 方案状态机 | | `TC-T-07` | 方案激活 | 规划师 | P0 | 功能 | `tests/test-cases/teacher.md#TC-T-07` | e2e/ai-plan-task-flow.spec.js | 激活拆任务 | | `TC-T-08` | 方案激活·幂等 | 规划师 | P0 | 异常 | `tests/test-cases/teacher.md#TC-T-08` | — | 幂等约束(黑盒回归) | | `TC-T-09` | 任务审核 | 规划师 | P1 | 功能 | `tests/test-cases/teacher.md#TC-T-09` | — | TaskController | | `TC-T-10` | 测评录入 | 规划师 | P0 | 功能 | `tests/test-cases/teacher.md#TC-T-10` | e2e/assessment-order-flow.spec.js | AssessmentAppointmentController/DanAssessmentController | | `TC-T-11` | 成长计划 | 规划师 | P1 | 功能 | `tests/test-cases/teacher.md#TC-T-11` | e2e/guide-family-list.spec.js`(参考) | GrowthPlanController;黑盒回归 | | `TC-T-12` | 套餐 | 规划师 | P1 | 功能 | `tests/test-cases/teacher.md#TC-T-12` | — | GuidePackageController | | `TC-T-13` | 数据隔离 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-13` | — | 控制器内 role 检查 | | `TC-T-14` | 方案编辑 | 规划师 | P1 | 功能 | `tests/test-cases/teacher.md#TC-T-14` | — | 方案管理 | | `TC-T-15` | 套餐任务 | 规划师 | P1 | 功能 | `tests/test-cases/teacher.md#TC-T-15` | — | GuidePackageController | | `TC-T-16` | 健康总览 | 规划师 | P1 | 功能 | `tests/test-cases/teacher.md#TC-T-16` | — | 仪表板 | | `TC-T-17` | 计划进度 | 规划师 | P1 | 功能 | `tests/test-cases/teacher.md#TC-T-17` | — | GrowthPlanController | | `TC-T-18` | 批量任务 | 规划师 | P1 | 功能 | `tests/test-cases/teacher.md#TC-T-18` | — | TaskController | | `TC-T-19` | 消息推送 | 规划师 | P1 | 功能 | `tests/test-cases/teacher.md#TC-T-19` | — | 消息服务 | | `TC-T-20` | 退出/切换 | 规划师 | P1 | 功能 | `tests/test-cases/teacher.md#TC-T-20` | — | AuthController | | `TC-T-21` | 报告对比 | 规划师 | P1 | 功能 | `tests/test-cases/teacher.md#TC-T-21` | — | 报告管理 | | `TC-T-22` | 方案归档 | 规划师 | P2 | 功能 | `tests/test-cases/teacher.md#TC-T-22` | — | 方案管理 | | `TC-T-23` | 报告代传/report-proxy | 规划师 | P1 | 功能 | `tests/test-cases/teacher.md#TC-T-23` | — | 报告代传/report-proxy | | `TC-T-24` | 规划师绑定 | 规划师 | P1 | 功能 | `tests/test-cases/teacher.md#TC-T-24` | — | 规划师绑定 | | `TC-T-25` | 舌诊情绪识别 | 规划师 | P1 | 功能 | `tests/test-cases/teacher.md#TC-T-25` | — | 舌诊情绪识别 | | `TC-T-26` | 精准营养 | 规划师 | P1 | 功能 | `tests/test-cases/teacher.md#TC-T-26` | — | 精准营养 | | `TC-T-27` | 家庭天盘 | 规划师 | P1 | 功能 | `tests/test-cases/teacher.md#TC-T-27` | — | 家庭天盘 | | `TC-T-28` | 内容安全 | 规划师 | P1 | 功能 | `tests/test-cases/teacher.md#TC-T-28` | — | 内容安全 | | `TC-T-29` | 数据导出(GDPR) | 规划师 | P1 | 功能 | `tests/test-cases/teacher.md#TC-T-29` | — | 数据导出(GDPR) | | `TC-T-01-E` | 认证/双角色 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-01-E` | — | AuthController;规划师可切回家长 | | `TC-T-02-E` | 家庭绑定 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-02-E` | — | FamilyInviteController | | `TC-T-03-E` | 健康报告 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-03-E` | — | 报告上传解析;规划师代传 | | `TC-T-04-E` | 报告审核 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-04-E` | — | 报告审核 | | `TC-T-05-E` | 方案管理 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-05-E` | — | 方案管理;黑盒回归项 | | `TC-T-06-E` | 方案审核 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-06-E` | — | 方案状态机 | | `TC-T-07-E` | 方案激活 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-07-E` | — | 激活拆任务 | | `TC-T-08-E` | 方案激活·幂等 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-08-E` | — | 幂等约束(黑盒回归) | | `TC-T-09-E` | 任务审核 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-09-E` | — | TaskController | | `TC-T-10-E` | 测评录入 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-10-E` | — | AssessmentAppointmentController/DanAssessmentController | | `TC-T-11-E` | 成长计划 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-11-E` | — | GrowthPlanController;黑盒回归 | | `TC-T-12-E` | 套餐 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-12-E` | — | GuidePackageController | | `TC-T-13-E` | 数据隔离 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-13-E` | — | 控制器内 role 检查 | | `TC-T-14-E` | 方案编辑 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-14-E` | — | 方案管理 | | `TC-T-15-E` | 套餐任务 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-15-E` | — | GuidePackageController | | `TC-T-16-E` | 健康总览 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-16-E` | — | 仪表板 | | `TC-T-17-E` | 计划进度 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-17-E` | — | GrowthPlanController | | `TC-T-18-E` | 批量任务 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-18-E` | — | TaskController | | `TC-T-19-E` | 消息推送 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-19-E` | — | 消息服务 | | `TC-T-20-E` | 退出/切换 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-20-E` | — | AuthController | | `TC-T-21-E` | 报告对比 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-21-E` | — | 报告管理 | | `TC-T-22-E` | 方案归档 | 规划师 | P3 | 异常 | `tests/test-cases/teacher.md#TC-T-22-E` | — | 方案管理 | | `TC-T-23-E` | 报告代传/report-proxy | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-23-E` | — | 报告代传/report-proxy | | `TC-T-24-E` | 规划师绑定 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-24-E` | — | 规划师绑定 | | `TC-T-25-E` | 舌诊情绪识别 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-25-E` | — | 舌诊情绪识别 | | `TC-T-26-E` | 精准营养 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-26-E` | — | 精准营养 | | `TC-T-27-E` | 家庭天盘 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-27-E` | — | 家庭天盘 | | `TC-T-28-E` | 内容安全 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-28-E` | — | 内容安全 | | `TC-T-29-E` | 数据导出(GDPR) | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-29-E` | — | 数据导出(GDPR) | | `TC-T-01-P` | 认证/双角色 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-01-P` | — | AuthController;规划师可切回家长 | | `TC-T-02-P` | 家庭绑定 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-02-P` | — | FamilyInviteController | | `TC-T-03-P` | 健康报告 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-03-P` | — | 报告上传解析;规划师代传 | | `TC-T-04-P` | 报告审核 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-04-P` | — | 报告审核 | | `TC-T-05-P` | 方案管理 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-05-P` | — | 方案管理;黑盒回归项 | | `TC-T-06-P` | 方案审核 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-06-P` | — | 方案状态机 | | `TC-T-07-P` | 方案激活 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-07-P` | — | 激活拆任务 | | `TC-T-08-P` | 方案激活·幂等 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-08-P` | — | 幂等约束(黑盒回归) | | `TC-T-09-P` | 任务审核 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-09-P` | — | TaskController | | `TC-T-10-P` | 测评录入 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-10-P` | — | AssessmentAppointmentController/DanAssessmentController | | `TC-T-11-P` | 成长计划 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-11-P` | — | GrowthPlanController;黑盒回归 | | `TC-T-12-P` | 套餐 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-12-P` | — | GuidePackageController | | `TC-T-13-P` | 数据隔离 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-13-P` | — | 控制器内 role 检查 | | `TC-T-14-P` | 方案编辑 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-14-P` | — | 方案管理 | | `TC-T-15-P` | 套餐任务 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-15-P` | — | GuidePackageController | | `TC-T-16-P` | 健康总览 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-16-P` | — | 仪表板 | | `TC-T-17-P` | 计划进度 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-17-P` | — | GrowthPlanController | | `TC-T-18-P` | 批量任务 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-18-P` | — | TaskController | | `TC-T-19-P` | 消息推送 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-19-P` | — | 消息服务 | | `TC-T-20-P` | 退出/切换 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-20-P` | — | AuthController | | `TC-T-21-P` | 报告对比 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-21-P` | — | 报告管理 | | `TC-T-22-P` | 方案归档 | 规划师 | P2 | 权限 | `tests/test-cases/teacher.md#TC-T-22-P` | — | 方案管理 | | `TC-T-23-P` | 报告代传/report-proxy | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-23-P` | — | 报告代传/report-proxy | | `TC-T-24-P` | 规划师绑定 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-24-P` | — | 规划师绑定 | | `TC-T-25-P` | 舌诊情绪识别 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-25-P` | — | 舌诊情绪识别 | | `TC-T-26-P` | 精准营养 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-26-P` | — | 精准营养 | | `TC-T-27-P` | 家庭天盘 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-27-P` | — | 家庭天盘 | | `TC-T-28-P` | 内容安全 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-28-P` | — | 内容安全 | | `TC-T-29-P` | 数据导出(GDPR) | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-29-P` | — | 数据导出(GDPR) | | `TC-T-30` | 测评/五维 | 规划师 | P1 | 功能 | `tests/test-cases/teacher.md#TC-T-30` | tests/e2e/dan-report-flow.spec.js | AssessmentAppointmentService | | `TC-T-31` | 维度/手动 | 规划师 | P1 | 功能 | `tests/test-cases/teacher.md#TC-T-31` | — | ManualDimensionScoreController | | `TC-T-32` | 五维/自评 | 规划师 | P2 | 功能 | `tests/test-cases/teacher.md#TC-T-32` | — | FiveDimensionSelfCheckController | | `TC-T-30-E` | 测评/五维 | 规划师 | P1 | 异常 | `tests/test-cases/teacher.md#TC-T-30-E` | — | AssessmentAppointmentService | | `TC-T-31-E` | 维度/手动 | 规划师 | P2 | 异常 | `tests/test-cases/teacher.md#TC-T-31-E` | — | ManualDimensionScoreController | | `TC-T-32-E` | 五维/自评 | 规划师 | P3 | 异常 | `tests/test-cases/teacher.md#TC-T-32-E` | — | FiveDimensionSelfCheckController | | `TC-T-30-P` | 测评/五维 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-30-P` | — | AssessmentAppointmentService | | `TC-T-31-P` | 维度/手动 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-31-P` | — | ManualDimensionScoreController | | `TC-T-32-P` | 五维/自评 | 规划师 | P1 | 权限 | `tests/test-cases/teacher.md#TC-T-32-P` | — | FiveDimensionSelfCheckController | | `TC-T-N01` | 健康报告 | 规划师 | P1 | 性能 | `tests/test-cases/teacher.md#TC-T-N01` | — | 报告解析中台 | | `TC-T-N02` | 方案审核 | 规划师 | P1 | 性能 | `tests/test-cases/teacher.md#TC-T-N02` | — | 方案状态机 | | `TC-T-N03` | 绑定家庭 | 规划师 | P2 | 性能 | `tests/test-cases/teacher.md#TC-T-N03` | — | 绑定家庭 | | `TC-T-N04` | 报告代传 | 规划师 | P1 | 兼容 | `tests/test-cases/teacher.md#TC-T-N04` | — | 代传入口 | | `TC-T-N05` | 健康报告 | 规划师 | P0 | 安全 | `tests/test-cases/teacher.md#TC-T-N05` | — | 规划师鉴权 | | `TC-T-N06` | 方案审核 | 规划师 | P0 | 安全 | `tests/test-cases/teacher.md#TC-T-N06` | — | 方案鉴权 | | `TC-T-N07` | 舌诊录入 | 规划师 | P1 | 安全 | `tests/test-cases/teacher.md#TC-T-N07` | — | 上传校验 | | `TC-T-N08` | 精准营养 | 规划师 | P1 | 安全 | `tests/test-cases/teacher.md#TC-T-N08` | — | 方案内容安全 | | `TC-S-01` | 入驻 | 服务商 | P1 | 功能 | `tests/test-cases/vendor.md#TC-S-01` | e2e/roles/admin/vendor/management.spec.js | ServiceRoleApplicationController/AdminEcomSupplierController | | `TC-S-02` | 商品 | 服务商 | P0 | 接口 | `tests/test-cases/vendor.md#TC-S-02` | e2e/product-purchase.spec.js | ProductController/AdminProductController | | `TC-S-03` | 订单 | 服务商 | P0 | 功能 | `tests/test-cases/vendor.md#TC-S-03` | — | ProductOrderController | | `TC-S-04` | 订单核销 | 服务商 | P0 | 功能 | `tests/test-cases/vendor.md#TC-S-04` | — | 订单服务 | | `TC-S-05` | 库存 | 服务商 | P1 | 功能 | `tests/test-cases/vendor.md#TC-S-05` | — | 库存服务 | | `TC-S-06` | 售后 | 服务商 | P1 | 功能 | `tests/test-cases/vendor.md#TC-S-06` | — | 售后 | | `TC-S-07` | 活动报名 | 服务商 | P2 | 功能 | `tests/test-cases/vendor.md#TC-S-07` | — | 活动管理 | | `TC-S-08` | 对账 | 服务商 | P1 | 功能 | `tests/test-cases/vendor.md#TC-S-08` | — | 结算 | | `TC-S-09` | 服务商集成/解析中台 | 服务商 | P1 | 功能 | `tests/test-cases/vendor.md#TC-S-09` | — | 服务商集成/解析中台 | | `TC-S-10` | 食谱库 | 服务商 | P1 | 功能 | `tests/test-cases/vendor.md#TC-S-10` | — | 食谱库 | | `TC-S-11` | 合规 | 服务商 | P1 | 功能 | `tests/test-cases/vendor.md#TC-S-11` | — | 合规 | | `TC-S-01-E` | 入驻 | 服务商 | P2 | 异常 | `tests/test-cases/vendor.md#TC-S-01-E` | — | ServiceRoleApplicationController/AdminEcomSupplierController | | `TC-S-02-E` | 商品 | 服务商 | P2 | 异常 | `tests/test-cases/vendor.md#TC-S-02-E` | — | ProductController/AdminProductController | | `TC-S-03-E` | 订单 | 服务商 | P2 | 异常 | `tests/test-cases/vendor.md#TC-S-03-E` | — | ProductOrderController | | `TC-S-04-E` | 订单核销 | 服务商 | P2 | 异常 | `tests/test-cases/vendor.md#TC-S-04-E` | — | 订单服务 | | `TC-S-05-E` | 库存 | 服务商 | P2 | 异常 | `tests/test-cases/vendor.md#TC-S-05-E` | — | 库存服务 | | `TC-S-06-E` | 售后 | 服务商 | P2 | 异常 | `tests/test-cases/vendor.md#TC-S-06-E` | — | 售后 | | `TC-S-07-E` | 活动报名 | 服务商 | P3 | 异常 | `tests/test-cases/vendor.md#TC-S-07-E` | — | 活动管理 | | `TC-S-08-E` | 对账 | 服务商 | P2 | 异常 | `tests/test-cases/vendor.md#TC-S-08-E` | — | 结算 | | `TC-S-09-E` | 服务商集成/解析中台 | 服务商 | P2 | 异常 | `tests/test-cases/vendor.md#TC-S-09-E` | — | 服务商集成/解析中台 | | `TC-S-10-E` | 食谱库 | 服务商 | P2 | 异常 | `tests/test-cases/vendor.md#TC-S-10-E` | — | 食谱库 | | `TC-S-11-E` | 合规 | 服务商 | P2 | 异常 | `tests/test-cases/vendor.md#TC-S-11-E` | — | 合规 | | `TC-S-01-P` | 入驻 | 服务商 | P1 | 权限 | `tests/test-cases/vendor.md#TC-S-01-P` | — | ServiceRoleApplicationController/AdminEcomSupplierController | | `TC-S-02-P` | 商品 | 服务商 | P1 | 权限 | `tests/test-cases/vendor.md#TC-S-02-P` | — | ProductController/AdminProductController | | `TC-S-03-P` | 订单 | 服务商 | P1 | 权限 | `tests/test-cases/vendor.md#TC-S-03-P` | — | ProductOrderController | | `TC-S-04-P` | 订单核销 | 服务商 | P1 | 权限 | `tests/test-cases/vendor.md#TC-S-04-P` | — | 订单服务 | | `TC-S-05-P` | 库存 | 服务商 | P1 | 权限 | `tests/test-cases/vendor.md#TC-S-05-P` | — | 库存服务 | | `TC-S-06-P` | 售后 | 服务商 | P1 | 权限 | `tests/test-cases/vendor.md#TC-S-06-P` | — | 售后 | | `TC-S-07-P` | 活动报名 | 服务商 | P2 | 权限 | `tests/test-cases/vendor.md#TC-S-07-P` | — | 活动管理 | | `TC-S-08-P` | 对账 | 服务商 | P1 | 权限 | `tests/test-cases/vendor.md#TC-S-08-P` | — | 结算 | | `TC-S-09-P` | 服务商集成/解析中台 | 服务商 | P1 | 权限 | `tests/test-cases/vendor.md#TC-S-09-P` | — | 服务商集成/解析中台 | | `TC-S-10-P` | 食谱库 | 服务商 | P1 | 权限 | `tests/test-cases/vendor.md#TC-S-10-P` | — | 食谱库 | | `TC-S-11-P` | 合规 | 服务商 | P1 | 权限 | `tests/test-cases/vendor.md#TC-S-11-P` | — | 合规 | | `TC-S-N01` | 商品 | 服务商 | P2 | 性能 | `tests/test-cases/vendor.md#TC-S-N01` | — | 商品管理 | | `TC-S-N02` | 订单履约 | 服务商 | P1 | 性能 | `tests/test-cases/vendor.md#TC-S-N02` | — | 订单服务 | | `TC-S-N03` | 入驻 | 服务商 | P2 | 兼容 | `tests/test-cases/vendor.md#TC-S-N03` | — | 服务商后台 | | `TC-S-N04` | 订单履约 | 服务商 | P0 | 安全 | `tests/test-cases/vendor.md#TC-S-N04` | — | 商户隔离 | | `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/*.md`) > 来源锚点 = `文件#用例标题`。用例标题列于 JSON(`inventory.json`)便于回写。 | 文件 | 用例数 | 来源 | | --- | --- | --- | | `tests/e2e-live/admin-live.spec.js` | 5 | `tests/e2e-live/admin-live.spec.js` | | `tests/e2e-live/dx-health-bridge-auth.spec.js` | 0 | `tests/e2e-live/dx-health-bridge-auth.spec.js` | | `tests/e2e-live/frontend-live.spec.js` | 6 | `tests/e2e-live/frontend-live.spec.js` | | `tests/e2e-live/health-contract.spec.js` | 0 | `tests/e2e-live/health-contract.spec.js` | | `tests/e2e-live/shop-sort-api.spec.js` | 4 | `tests/e2e-live/shop-sort-api.spec.js` | | `tests/e2e/_smoke_browser.spec.js` | 2 | `tests/e2e/_smoke_browser.spec.js` | | `tests/e2e/activity-registration.spec.js` | 5 | `tests/e2e/activity-registration.spec.js` | | `tests/e2e/admin-activity-review.spec.js` | 2 | `tests/e2e/admin-activity-review.spec.js` | | `tests/e2e/admin-butler-review.spec.js` | 6 | `tests/e2e/admin-butler-review.spec.js` | | `tests/e2e/admin-commission-config.spec.js` | 4 | `tests/e2e/admin-commission-config.spec.js` | | `tests/e2e/admin-ecom-supplier.spec.js` | 3 | `tests/e2e/admin-ecom-supplier.spec.js` | | `tests/e2e/admin-menu-survey.spec.js` | 2 | `tests/e2e/admin-menu-survey.spec.js` | | `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/report-closedloop-contract.spec.js` | 25 | `tests/e2e/api/report-closedloop-contract.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/traceability-p94-p95-c26.spec.js` | 6 | `tests/e2e/api/traceability-p94-p95-c26.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` | | `tests/e2e/dan-assessment-vendor-flow.spec.js` | 10 | `tests/e2e/dan-assessment-vendor-flow.spec.js` | | `tests/e2e/dan-report-flow.spec.js` | 9 | `tests/e2e/dan-report-flow.spec.js` | | `tests/e2e/debug-admin-spa.spec.js` | 1 | `tests/e2e/debug-admin-spa.spec.js` | | `tests/e2e/debug-control.spec.js` | 1 | `tests/e2e/debug-control.spec.js` | | `tests/e2e/debug-full-instrument.spec.js` | 1 | `tests/e2e/debug-full-instrument.spec.js` | | `tests/e2e/diet-recommendation-health-adjust.spec.js` | 3 | `tests/e2e/diet-recommendation-health-adjust.spec.js` | | `tests/e2e/energy-rules-config.spec.js` | 4 | `tests/e2e/energy-rules-config.spec.js` | | `tests/e2e/energy-system.spec.js` | 8 | `tests/e2e/energy-system.spec.js` | | `tests/e2e/family-earnings-flow.spec.js` | 6 | `tests/e2e/family-earnings-flow.spec.js` | | `tests/e2e/family-member-management.spec.js` | 10 | `tests/e2e/family-member-management.spec.js` | | `tests/e2e/flora-microbiome-flow.spec.js` | 9 | `tests/e2e/flora-microbiome-flow.spec.js` | | `tests/e2e/growth-record-sync.spec.js` | 8 | `tests/e2e/growth-record-sync.spec.js` | | `tests/e2e/guide-family-list.spec.js` | 7 | `tests/e2e/guide-family-list.spec.js` | | `tests/e2e/health-knowledge-base.spec.js` | 4 | `tests/e2e/health-knowledge-base.spec.js` | | `tests/e2e/health-report-audit.spec.js` | 8 | `tests/e2e/health-report-audit.spec.js` | | `tests/e2e/mass-create-users.spec.js` | 1 | `tests/e2e/mass-create-users.spec.js` | | `tests/e2e/membership-system.spec.js` | 3 | `tests/e2e/membership-system.spec.js` | | `tests/e2e/mini-games-full.spec.js` | 5 | `tests/e2e/mini-games-full.spec.js` | | `tests/e2e/mini-games-playwright.spec.js` | 12 | `tests/e2e/mini-games-playwright.spec.js` | | `tests/e2e/mini-games.spec.js` | 14 | `tests/e2e/mini-games.spec.js` | | `tests/e2e/nutritionist-apply.spec.js` | 3 | `tests/e2e/nutritionist-apply.spec.js` | | `tests/e2e/nutritionist-flow.spec.js` | 10 | `tests/e2e/nutritionist-flow.spec.js` | | `tests/e2e/planner-bind-invite.spec.js` | 9 | `tests/e2e/planner-bind-invite.spec.js` | | `tests/e2e/points-system.spec.js` | 4 | `tests/e2e/points-system.spec.js` | | `tests/e2e/product-purchase.spec.js` | 9 | `tests/e2e/product-purchase.spec.js` | | `tests/e2e/publish-dimension-articles.spec.js` | 1 | `tests/e2e/publish-dimension-articles.spec.js` | | `tests/e2e/roles/admin/article/workflow.spec.js` | 4 | `tests/e2e/roles/admin/article/workflow.spec.js` | | `tests/e2e/roles/admin/login.spec.js` | 2 | `tests/e2e/roles/admin/login.spec.js` | | `tests/e2e/roles/admin/vendor/management.spec.js` | 2 | `tests/e2e/roles/admin/vendor/management.spec.js` | | `tests/e2e/roles/child/daily-checkin.spec.js` | 3 | `tests/e2e/roles/child/daily-checkin.spec.js` | | `tests/e2e/roles/child/login.spec.js` | 2 | `tests/e2e/roles/child/login.spec.js` | | `tests/e2e/roles/child/mini-games.spec.js` | 3 | `tests/e2e/roles/child/mini-games.spec.js` | | `tests/e2e/roles/parent/assessment-order.spec.js` | 6 | `tests/e2e/roles/parent/assessment-order.spec.js` | | `tests/e2e/roles/parent/energy-dashboard.spec.js` | 5 | `tests/e2e/roles/parent/energy-dashboard.spec.js` | | `tests/e2e/roles/parent/family-management.spec.js` | 8 | `tests/e2e/roles/parent/family-management.spec.js` | | `tests/e2e/roles/parent/points.spec.js` | 6 | `tests/e2e/roles/parent/points.spec.js` | | `tests/e2e/roles/parent/wish-management.spec.js` | 5 | `tests/e2e/roles/parent/wish-management.spec.js` | | `tests/e2e/roles/teacher/family-binding.spec.js` | 4 | `tests/e2e/roles/teacher/family-binding.spec.js` | | `tests/e2e/roles/teacher/login.spec.js` | 2 | `tests/e2e/roles/teacher/login.spec.js` | | `tests/e2e/teacher-dashboard.spec.js` | 10 | `tests/e2e/teacher-dashboard.spec.js` | | `tests/e2e/unified-audit-center.spec.js` | 8 | `tests/e2e/unified-audit-center.spec.js` | | `tests/e2e/vendor-onboarding.spec.js` | 3 | `tests/e2e/vendor-onboarding.spec.js` | | `tests/e2e/vendor-product-manage.spec.js` | 8 | `tests/e2e/vendor-product-manage.spec.js` | | `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` | ## 四、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_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_memory.py` | 4 | `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` | | `cfc-langgraph/tests/test_tongue.py` | 1 | `cfc-langgraph/tests/test_tongue.py` | ## 五、Java 后端测试(`cfc-backend/src/test/java`) > 方法级覆盖矩阵(控制器 handler 命中情况)见 `discovery.md`。此处文件级编目,来源锚点 = 原 java 路径。 | 测试文件 | 类型 | @Test数 | 目标类 | 来源 | | --- | --- | --- | --- | --- | | `cfc-backend/src/test/java/com/etotem/cfc/common/AdminRolesTest.java` | cfc-backend | 9 | AdminRoles | `cfc-backend/src/test/java/com/etotem/cfc/common/AdminRolesTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/common/ResultCodeFactoryTest.java` | cfc-backend | 11 | ResultCodeFactory | `cfc-backend/src/test/java/com/etotem/cfc/common/ResultCodeFactoryTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/common/TestRoles.java` | cfc-backend | 0 | TestRoles.java | `cfc-backend/src/test/java/com/etotem/cfc/common/TestRoles.java` | | `cfc-backend/src/test/java/com/etotem/cfc/config/AttributionStage1FoundationTest.java` | cfc-backend | 7 | AttributionStage1Foundation | `cfc-backend/src/test/java/com/etotem/cfc/config/AttributionStage1FoundationTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/config/DatabaseInitializerSeedTest.java` | cfc-backend | 6 | DatabaseInitializerSeed | `cfc-backend/src/test/java/com/etotem/cfc/config/DatabaseInitializerSeedTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/config/FamilyAccessInterceptorTest.java` | cfc-backend | 11 | FamilyAccessInterceptor | `cfc-backend/src/test/java/com/etotem/cfc/config/FamilyAccessInterceptorTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/config/GrowthPublicEndpointMappingTest.java` | cfc-backend | 5 | GrowthPublicEndpointMapping | `cfc-backend/src/test/java/com/etotem/cfc/config/GrowthPublicEndpointMappingTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/config/JwtInterceptorContractEdgeTest.java` | cfc-backend | 10 | JwtInterceptorContractEdge | `cfc-backend/src/test/java/com/etotem/cfc/config/JwtInterceptorContractEdgeTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/config/JwtInterceptorGrowthPolicyTest.java` | cfc-backend | 5 | JwtInterceptorGrowthPolicy | `cfc-backend/src/test/java/com/etotem/cfc/config/JwtInterceptorGrowthPolicyTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/config/JwtInterceptorLoginRequiredPathTest.java` | cfc-backend | 3 | JwtInterceptorLoginRequiredPath | `cfc-backend/src/test/java/com/etotem/cfc/config/JwtInterceptorLoginRequiredPathTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/config/JwtInterceptorLoginRequiredTest.java` | cfc-backend | 5 | JwtInterceptorLoginRequired | `cfc-backend/src/test/java/com/etotem/cfc/config/JwtInterceptorLoginRequiredTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/config/JwtInterceptorWechatLoginTest.java` | cfc-backend | 4 | JwtInterceptorWechatLogin | `cfc-backend/src/test/java/com/etotem/cfc/config/JwtInterceptorWechatLoginTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/config/ScG06JwtGuardTest.java` | cfc-backend | 19 | ScG06JwtGuard | `cfc-backend/src/test/java/com/etotem/cfc/config/ScG06JwtGuardTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/config/WebConfigGrowthExcludeRemovedTest.java` | cfc-backend | 2 | WebConfigGrowthExcludeRemoved | `cfc-backend/src/test/java/com/etotem/cfc/config/WebConfigGrowthExcludeRemovedTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/AttributionControllerTest.java` | cfc-backend | 1 | AttributionController | `cfc-backend/src/test/java/com/etotem/cfc/controller/AttributionControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/AttributionSurveyRoutingTest.java` | cfc-backend | 3 | AttributionSurveyRouting | `cfc-backend/src/test/java/com/etotem/cfc/controller/AttributionSurveyRoutingTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/AuthWechatLoginContractTest.java` | cfc-backend | 10 | AuthWechatLoginContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/AuthWechatLoginContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/BadgeControllerGetMemberBadgesTest.java` | cfc-backend | 9 | BadgeControllerGetMemberBadges | `cfc-backend/src/test/java/com/etotem/cfc/controller/BadgeControllerGetMemberBadgesTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/DanAssessmentControllerGetActiveMaterialTest.java` | cfc-backend | 3 | DanAssessmentControllerGetActiveMaterial | `cfc-backend/src/test/java/com/etotem/cfc/controller/DanAssessmentControllerGetActiveMaterialTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/EnergyControllerGrantEnergyTest.java` | cfc-backend | 3 | EnergyControllerGrantEnergy | `cfc-backend/src/test/java/com/etotem/cfc/controller/EnergyControllerGrantEnergyTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/FamilyEarningsAdminRoleGateTest.java` | cfc-backend | 8 | FamilyEarningsAdminRoleGate | `cfc-backend/src/test/java/com/etotem/cfc/controller/FamilyEarningsAdminRoleGateTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/HealthCheckinCfEarnCallSiteTest.java` | cfc-backend | 6 | HealthCheckinCfEarnCallSite | `cfc-backend/src/test/java/com/etotem/cfc/controller/HealthCheckinCfEarnCallSiteTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/HealthDimensionControllerUploadContractTest.java` | cfc-backend | 21 | HealthDimensionControllerUploadContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/HealthDimensionControllerUploadContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/HealthPlanDeleteControllerTest.java` | cfc-backend | 6 | HealthPlanDeleteController | `cfc-backend/src/test/java/com/etotem/cfc/controller/HealthPlanDeleteControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/HealthPlanProductSelectionContractTest.java` | cfc-backend | 14 | HealthPlanProductSelectionContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/HealthPlanProductSelectionContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/HealthReportControllerCreateReportTest.java` | cfc-backend | 5 | HealthReportControllerCreateReport | `cfc-backend/src/test/java/com/etotem/cfc/controller/HealthReportControllerCreateReportTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/HealthReportControllerListPaginationTest.java` | cfc-backend | 4 | HealthReportControllerListPagination | `cfc-backend/src/test/java/com/etotem/cfc/controller/HealthReportControllerListPaginationTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/HealthReportControllerProxyParseBindingTest.java` | cfc-backend | 6 | HealthReportControllerProxyParseBinding | `cfc-backend/src/test/java/com/etotem/cfc/controller/HealthReportControllerProxyParseBindingTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/HealthReportControllerUploadTest.java` | cfc-backend | 16 | HealthReportControllerUpload | `cfc-backend/src/test/java/com/etotem/cfc/controller/HealthReportControllerUploadTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/HealthSleepControllerContractTest.java` | cfc-backend | 12 | HealthSleepControllerContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/HealthSleepControllerContractTest.java` | | `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/SurveyHealthReviewContractTest.java` | cfc-backend | 9 | SurveyHealthReviewContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/SurveyHealthReviewContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/TeamInvitationCreateContractTest.java` | cfc-backend | 7 | TeamInvitationCreateContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/TeamInvitationCreateContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminArticleAuditContractTest.java` | cfc-backend | 12 | AdminArticleAuditContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminArticleAuditContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminArticleCreateContractTest.java` | cfc-backend | 6 | AdminArticleCreateContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminArticleCreateContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminArticleListContractTest.java` | cfc-backend | 6 | AdminArticleListContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminArticleListContractTest.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/AdminFamilyStatsContractTest.java` | cfc-backend | 9 | AdminFamilyStatsContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminFamilyStatsContractTest.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/AdminReferralContractTest.java` | cfc-backend | 16 | AdminReferralContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/admin/AdminReferralContractTest.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/FamilyInviteApproveRequestTest.java` | cfc-backend | 7 | FamilyInviteApproveRequest | `cfc-backend/src/test/java/com/etotem/cfc/controller/family/FamilyInviteApproveRequestTest.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` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/family/FamilyMembersControllerRenameFamilyTest.java` | cfc-backend | 2 | FamilyMembersControllerRenameFamily | `cfc-backend/src/test/java/com/etotem/cfc/controller/family/FamilyMembersControllerRenameFamilyTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/growth/GrowthAuthContractTest.java` | cfc-backend | 2 | GrowthAuthContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/growth/GrowthAuthContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/growth/GrowthHistoryViewContractTest.java` | cfc-backend | 9 | GrowthHistoryViewContract | `cfc-backend/src/test/java/com/etotem/cfc/controller/growth/GrowthHistoryViewContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/guide/TeacherMessageControllerMyTest.java` | cfc-backend | 1 | TeacherMessageControllerMy | `cfc-backend/src/test/java/com/etotem/cfc/controller/guide/TeacherMessageControllerMyTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/guide/TrainingPlanControllerGetPlanDetailTest.java` | cfc-backend | 8 | TrainingPlanControllerGetPlanDetail | `cfc-backend/src/test/java/com/etotem/cfc/controller/guide/TrainingPlanControllerGetPlanDetailTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/guide/TrainingPlanControllerGetPlanListTest.java` | cfc-backend | 10 | TrainingPlanControllerGetPlanList | `cfc-backend/src/test/java/com/etotem/cfc/controller/guide/TrainingPlanControllerGetPlanListTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/reward/RewardEstimateControllerEstimateTest.java` | cfc-backend | 11 | RewardEstimateControllerEstimate | `cfc-backend/src/test/java/com/etotem/cfc/controller/reward/RewardEstimateControllerEstimateTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/reward/RewardEstimateControllerTest.java` | cfc-backend | 17 | RewardEstimateController | `cfc-backend/src/test/java/com/etotem/cfc/controller/reward/RewardEstimateControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/task/TaskControllerCreateTaskTest.java` | cfc-backend | 7 | TaskControllerCreateTask | `cfc-backend/src/test/java/com/etotem/cfc/controller/task/TaskControllerCreateTaskTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/task/TaskControllerGetTaskHistoryTest.java` | cfc-backend | 7 | TaskControllerGetTaskHistory | `cfc-backend/src/test/java/com/etotem/cfc/controller/task/TaskControllerGetTaskHistoryTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/controller/task/TaskControllerReviewTest.java` | cfc-backend | 17 | TaskControllerReview | `cfc-backend/src/test/java/com/etotem/cfc/controller/task/TaskControllerReviewTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/dto/ActivityDTOTest.java` | cfc-backend | 3 | ActivityDTO | `cfc-backend/src/test/java/com/etotem/cfc/dto/ActivityDTOTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/ArticleTagFilterContractTest.java` | cfc-backend | 10 | ArticleTagFilterContract | `cfc-backend/src/test/java/com/etotem/cfc/integration/ArticleTagFilterContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/DailyCheckinStreakFlowTest.java` | cfc-backend | 6 | DailyCheckinStreakFlow | `cfc-backend/src/test/java/com/etotem/cfc/integration/DailyCheckinStreakFlowTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/EnergySystemFlowTest.java` | cfc-backend | 7 | EnergySystemFlow | `cfc-backend/src/test/java/com/etotem/cfc/integration/EnergySystemFlowTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/GrowthRecordSyncFlowTest.java` | cfc-backend | 10 | GrowthRecordSyncFlow | `cfc-backend/src/test/java/com/etotem/cfc/integration/GrowthRecordSyncFlowTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/GuideModuleIntegrationTest.java` | cfc-backend | 4 | GuideModule | `cfc-backend/src/test/java/com/etotem/cfc/integration/GuideModuleIntegrationTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/PlannerBindInviteFlowTest.java` | cfc-backend | 9 | PlannerBindInviteFlow | `cfc-backend/src/test/java/com/etotem/cfc/integration/PlannerBindInviteFlowTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/AIChatControllerTest.java` | cfc-backend | 17 | AIChatController | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/AIChatControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/ActivityControllerTest.java` | cfc-backend | 16 | ActivityController | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/ActivityControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/AdminFamilyOverviewControllerTest.java` | cfc-backend | 3 | AdminFamilyOverviewController | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/AdminFamilyOverviewControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/AdminSpecialPriceControllerTest.java` | cfc-backend | 8 | AdminSpecialPriceController | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/AdminSpecialPriceControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/ArticleCategoryControllerTest.java` | cfc-backend | 3 | ArticleCategoryController | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/ArticleCategoryControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/ArticleControllerTest.java` | cfc-backend | 11 | ArticleController | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/ArticleControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/ArticleTagsContractTest.java` | cfc-backend | 2 | ArticleTagsContract | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/ArticleTagsContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/AuthControllerTest.java` | cfc-backend | 39 | AuthController | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/AuthControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/DailyTaskControllerTest.java` | cfc-backend | 2 | DailyTaskController | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/DailyTaskControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/DimensionAdminControllerTest.java` | cfc-backend | 13 | DimensionAdminController | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/DimensionAdminControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/DimensionRegistryMapContractTest.java` | cfc-backend | 7 | DimensionRegistryMapContract | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/DimensionRegistryMapContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/DimensionRegistryTreeTest.java` | cfc-backend | 9 | DimensionRegistryTree | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/DimensionRegistryTreeTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/FamilyControllerTest.java` | cfc-backend | 8 | FamilyController | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/FamilyControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/GuideFamilyTaskControllerTest.java` | cfc-backend | 20 | GuideFamilyTaskController | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/GuideFamilyTaskControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/GuideOrderControllerTest.java` | cfc-backend | 8 | GuideOrderController | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/GuideOrderControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/GuideRolePermissionTest.java` | cfc-backend | 21 | GuideRolePermission | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/GuideRolePermissionTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/GuideTeamControllerTest.java` | cfc-backend | 9 | GuideTeamController | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/GuideTeamControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/HealthDimensionControllerTest.java` | cfc-backend | 15 | HealthDimensionController | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/HealthDimensionControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/PaymentControllerTest.java` | cfc-backend | 12 | PaymentController | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/PaymentControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/ProductControllerTest.java` | cfc-backend | 16 | ProductController | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/ProductControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/ProductOrderControllerTest.java` | cfc-backend | 20 | ProductOrderController | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/ProductOrderControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/SpecialPriceControllerTest.java` | cfc-backend | 3 | SpecialPriceController | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/SpecialPriceControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/StatsControllerTest.java` | cfc-backend | 6 | StatsController | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/StatsControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/WishControllerTest.java` | cfc-backend | 29 | WishController | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/WishControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/mind/MindFortuneControllerTest.java` | cfc-backend | 1 | MindFortuneController | `cfc-backend/src/test/java/com/etotem/cfc/integration/controller/mind/MindFortuneControllerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/ActivityAdminServiceTest.java` | cfc-backend | 10 | ActivityAdminService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/ActivityAdminServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/ActivityServicePublishTest.java` | cfc-backend | 6 | ActivityServicePublish | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/ActivityServicePublishTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/ArticleWorkflowTest.java` | cfc-backend | 14 | ArticleWorkflow | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/ArticleWorkflowTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/ChallengeScoreServiceTest.java` | cfc-backend | 4 | ChallengeScoreService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/ChallengeScoreServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/DailyOverviewServiceTest.java` | cfc-backend | 1 | DailyOverviewService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/DailyOverviewServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/DanReportParseServiceTest.java` | cfc-backend | 38 | DanReportParseService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/DanReportParseServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/DataMigrationServiceTest.java` | cfc-backend | 11 | DataMigrationService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/DataMigrationServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/DimensionEnergySyncServiceTest.java` | cfc-backend | 5 | DimensionEnergySyncService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/DimensionEnergySyncServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/DimensionScoreServiceTest.java` | cfc-backend | 21 | DimensionScoreService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/DimensionScoreServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/FamilyFoodOverviewServiceTest.java` | cfc-backend | 15 | FamilyFoodOverviewService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/FamilyFoodOverviewServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/FiveDimensionSelfCheckServiceTest.java` | cfc-backend | 2 | FiveDimensionSelfCheckService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/FiveDimensionSelfCheckServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/FoodRecommendServiceTest.java` | cfc-backend | 21 | FoodRecommendService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/FoodRecommendServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/FoodServiceTest.java` | cfc-backend | 12 | FoodService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/FoodServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/FortuneServiceTest.java` | cfc-backend | 4 | FortuneService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/FortuneServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/GuideApplicationServiceTest.java` | cfc-backend | 8 | GuideApplicationService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/GuideApplicationServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/GuideFamilyServiceTest.java` | cfc-backend | 7 | GuideFamilyService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/GuideFamilyServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/GuideHierarchyServiceTest.java` | cfc-backend | 10 | GuideHierarchyService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/GuideHierarchyServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/GuidePackageServiceTest.java` | cfc-backend | 13 | GuidePackageService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/GuidePackageServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/GuidePackageTemplateServiceTest.java` | cfc-backend | 6 | GuidePackageTemplateService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/GuidePackageTemplateServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/MiniGameServiceTest.java` | cfc-backend | 5 | MiniGameService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/MiniGameServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/NutritionDeficiencyServiceTest.java` | cfc-backend | 14 | NutritionDeficiencyService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/NutritionDeficiencyServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/PdfParseServiceTest.java` | cfc-backend | 11 | PdfParseService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/PdfParseServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/RelationshipQuestionnaireServiceTest.java` | cfc-backend | 5 | RelationshipQuestionnaireService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/RelationshipQuestionnaireServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/ReportBlockAssemblerTest.java` | cfc-backend | 6 | ReportBlockAssembler | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/ReportBlockAssemblerTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/ServiceContentServiceTest.java` | cfc-backend | 6 | ServiceContentService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/ServiceContentServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/ServiceTypeServiceTest.java` | cfc-backend | 4 | ServiceTypeService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/ServiceTypeServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/SupplySystemServiceTest.java` | cfc-backend | 18 | SupplySystemService | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/SupplySystemServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/TaskServiceMinigameTest.java` | cfc-backend | 5 | TaskServiceMinigame | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/TaskServiceMinigameTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/TeacherLoginTest.java` | cfc-backend | 4 | TeacherLogin | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/TeacherLoginTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/impl/DimensionScoreServiceImplTest.java` | cfc-backend | 6 | DimensionScoreServiceImpl | `cfc-backend/src/test/java/com/etotem/cfc/integration/service/impl/DimensionScoreServiceImplTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/orchestration/OrchestrationEngineTest.java` | cfc-backend | 8 | OrchestrationEngine | `cfc-backend/src/test/java/com/etotem/cfc/orchestration/OrchestrationEngineTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/orchestration/OrchestrationIntegrationTest.java` | cfc-backend | 7 | Orchestration | `cfc-backend/src/test/java/com/etotem/cfc/orchestration/OrchestrationIntegrationTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/ActivityOrderServiceTest.java` | cfc-backend | 15 | ActivityOrderService | `cfc-backend/src/test/java/com/etotem/cfc/service/ActivityOrderServiceTest.java` | | `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/ArticleAudioServiceAutoGenTest.java` | cfc-backend | 3 | ArticleAudioServiceAutoGen | `cfc-backend/src/test/java/com/etotem/cfc/service/ArticleAudioServiceAutoGenTest.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/ArticleServiceAudioInvalidationTest.java` | cfc-backend | 8 | ArticleServiceAudioInvalidation | `cfc-backend/src/test/java/com/etotem/cfc/service/ArticleServiceAudioInvalidationTest.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` | | `cfc-backend/src/test/java/com/etotem/cfc/service/CfEarnDispatchServiceTest.java` | cfc-backend | 8 | CfEarnDispatchService | `cfc-backend/src/test/java/com/etotem/cfc/service/CfEarnDispatchServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/CfGrowthPathwayEarnServiceTest.java` | cfc-backend | 16 | CfGrowthPathwayEarnService | `cfc-backend/src/test/java/com/etotem/cfc/service/CfGrowthPathwayEarnServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/CfLegacyLedgerMigrationServiceTest.java` | cfc-backend | 3 | CfLegacyLedgerMigrationService | `cfc-backend/src/test/java/com/etotem/cfc/service/CfLegacyLedgerMigrationServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/CfLegacyLedgerWiringTest.java` | cfc-backend | 5 | CfLegacyLedgerWiring | `cfc-backend/src/test/java/com/etotem/cfc/service/CfLegacyLedgerWiringTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/CfPathwayEarnServiceTest.java` | cfc-backend | 32 | CfPathwayEarnService | `cfc-backend/src/test/java/com/etotem/cfc/service/CfPathwayEarnServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/CfReferralServiceSalesTierTest.java` | cfc-backend | 11 | CfReferralServiceSalesTier | `cfc-backend/src/test/java/com/etotem/cfc/service/CfReferralServiceSalesTierTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/CfSpendDispatchServiceTest.java` | cfc-backend | 11 | CfSpendDispatchService | `cfc-backend/src/test/java/com/etotem/cfc/service/CfSpendDispatchServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/CfTransferServiceTest.java` | cfc-backend | 6 | CfTransferService | `cfc-backend/src/test/java/com/etotem/cfc/service/CfTransferServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/CommissionDistService410Test.java` | cfc-backend | 4 | CommissionDistService410 | `cfc-backend/src/test/java/com/etotem/cfc/service/CommissionDistService410Test.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/CommissionServiceReferralF24Test.java` | cfc-backend | 5 | CommissionServiceReferralF24 | `cfc-backend/src/test/java/com/etotem/cfc/service/CommissionServiceReferralF24Test.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/ConsigneeServiceBackfillTest.java` | cfc-backend | 2 | ConsigneeServiceBackfill | `cfc-backend/src/test/java/com/etotem/cfc/service/ConsigneeServiceBackfillTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/ContractReflect.java` | cfc-backend | 0 | ContractReflect.java | `cfc-backend/src/test/java/com/etotem/cfc/service/ContractReflect.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/EnergyServiceFamilyTest.java` | cfc-backend | 2 | EnergyServiceFamily | `cfc-backend/src/test/java/com/etotem/cfc/service/EnergyServiceFamilyTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/EnergyServiceGrantEnergyTest.java` | cfc-backend | 2 | EnergyServiceGrantEnergy | `cfc-backend/src/test/java/com/etotem/cfc/service/EnergyServiceGrantEnergyTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/EnergyServiceWealthIncomeTest.java` | cfc-backend | 4 | EnergyServiceWealthIncome | `cfc-backend/src/test/java/com/etotem/cfc/service/EnergyServiceWealthIncomeTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/FamilyAdminOverviewServiceTest.java` | cfc-backend | 3 | FamilyAdminOverviewService | `cfc-backend/src/test/java/com/etotem/cfc/service/FamilyAdminOverviewServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/FamilyJoinRequestServiceJoinRequiredInfoContractTest.java` | cfc-backend | 10 | FamilyJoinRequestServiceJoinRequiredInfoContract | `cfc-backend/src/test/java/com/etotem/cfc/service/FamilyJoinRequestServiceJoinRequiredInfoContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/FamilyJoinRequestServiceJoinValidationGateTest.java` | cfc-backend | 12 | FamilyJoinRequestServiceJoinValidationGate | `cfc-backend/src/test/java/com/etotem/cfc/service/FamilyJoinRequestServiceJoinValidationGateTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/FamilyJoinRequestServiceReferrerBindTest.java` | cfc-backend | 5 | FamilyJoinRequestServiceReferrerBind | `cfc-backend/src/test/java/com/etotem/cfc/service/FamilyJoinRequestServiceReferrerBindTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/FamilyMemberServiceIsChildTest.java` | cfc-backend | 5 | FamilyMemberServiceIsChild | `cfc-backend/src/test/java/com/etotem/cfc/service/FamilyMemberServiceIsChildTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/FamilyPlatformPointsServiceCouponTest.java` | cfc-backend | 5 | FamilyPlatformPointsServiceCoupon | `cfc-backend/src/test/java/com/etotem/cfc/service/FamilyPlatformPointsServiceCouponTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/FoodRecommendMemberViewResolutionTest.java` | cfc-backend | 6 | FoodRecommendMemberViewResolution | `cfc-backend/src/test/java/com/etotem/cfc/service/FoodRecommendMemberViewResolutionTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/GuideConfigServiceTest.java` | cfc-backend | 11 | GuideConfigService | `cfc-backend/src/test/java/com/etotem/cfc/service/GuideConfigServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/HealthReportServiceAuditConfirmTest.java` | cfc-backend | 8 | HealthReportServiceAuditConfirm | `cfc-backend/src/test/java/com/etotem/cfc/service/HealthReportServiceAuditConfirmTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/HealthReportServiceBackfillResilienceTest.java` | cfc-backend | 5 | HealthReportServiceBackfillResilience | `cfc-backend/src/test/java/com/etotem/cfc/service/HealthReportServiceBackfillResilienceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/HealthReportServiceIndicatorsTest.java` | cfc-backend | 3 | HealthReportServiceIndicators | `cfc-backend/src/test/java/com/etotem/cfc/service/HealthReportServiceIndicatorsTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/HealthReportServiceTest.java` | cfc-backend | 8 | HealthReportService | `cfc-backend/src/test/java/com/etotem/cfc/service/HealthReportServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/IndicatorChangeServiceSemanticTest.java` | cfc-backend | 20 | IndicatorChangeServiceSemantic | `cfc-backend/src/test/java/com/etotem/cfc/service/IndicatorChangeServiceSemanticTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/IndicatorChangeServiceTest.java` | cfc-backend | 23 | IndicatorChangeService | `cfc-backend/src/test/java/com/etotem/cfc/service/IndicatorChangeServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/IndicatorCorrelationServiceTest.java` | cfc-backend | 1 | IndicatorCorrelationService | `cfc-backend/src/test/java/com/etotem/cfc/service/IndicatorCorrelationServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/IndicatorFavoriteServiceTest.java` | cfc-backend | 6 | IndicatorFavoriteService | `cfc-backend/src/test/java/com/etotem/cfc/service/IndicatorFavoriteServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/IndicatorMappingServiceTest.java` | cfc-backend | 4 | IndicatorMappingService | `cfc-backend/src/test/java/com/etotem/cfc/service/IndicatorMappingServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/IndicatorTimelineServiceTest.java` | cfc-backend | 12 | IndicatorTimelineService | `cfc-backend/src/test/java/com/etotem/cfc/service/IndicatorTimelineServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/IndicatorTrendServiceTest.java` | cfc-backend | 9 | IndicatorTrendService | `cfc-backend/src/test/java/com/etotem/cfc/service/IndicatorTrendServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/IndicatorValueMapperTest.java` | cfc-backend | 1 | IndicatorValueMapper | `cfc-backend/src/test/java/com/etotem/cfc/service/IndicatorValueMapperTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/MembershipPaySwitchTest.java` | cfc-backend | 6 | MembershipPaySwitch | `cfc-backend/src/test/java/com/etotem/cfc/service/MembershipPaySwitchTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/MembershipServiceAiGateTest.java` | cfc-backend | 12 | MembershipServiceAiGate | `cfc-backend/src/test/java/com/etotem/cfc/service/MembershipServiceAiGateTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/MembershipServiceTest.java` | cfc-backend | 17 | MembershipService | `cfc-backend/src/test/java/com/etotem/cfc/service/MembershipServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/NormalizeIndicatorPipelineTest.java` | cfc-backend | 3 | NormalizeIndicatorPipeline | `cfc-backend/src/test/java/com/etotem/cfc/service/NormalizeIndicatorPipelineTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/NumSoulCalculatorTest.java` | cfc-backend | 5 | NumSoulCalculator | `cfc-backend/src/test/java/com/etotem/cfc/service/NumSoulCalculatorTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/OrderWebhookNotifyTest.java` | cfc-backend | 5 | OrderWebhookNotify | `cfc-backend/src/test/java/com/etotem/cfc/service/OrderWebhookNotifyTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/PaymentServiceORDRoutingTest.java` | cfc-backend | 3 | PaymentServiceORDRouting | `cfc-backend/src/test/java/com/etotem/cfc/service/PaymentServiceORDRoutingTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/PlatformPointsServiceTest.java` | cfc-backend | 9 | PlatformPointsService | `cfc-backend/src/test/java/com/etotem/cfc/service/PlatformPointsServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/PointsExchangeServiceTest.java` | cfc-backend | 4 | PointsExchangeService | `cfc-backend/src/test/java/com/etotem/cfc/service/PointsExchangeServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/ProductOrderServiceFulfillmentMultiModeTest.java` | cfc-backend | 6 | ProductOrderServiceFulfillmentMultiMode | `cfc-backend/src/test/java/com/etotem/cfc/service/ProductOrderServiceFulfillmentMultiModeTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/ProductOrderServiceSpecialDealTest.java` | cfc-backend | 8 | ProductOrderServiceSpecialDeal | `cfc-backend/src/test/java/com/etotem/cfc/service/ProductOrderServiceSpecialDealTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/ProductOrderServiceUpdateExpressFieldTest.java` | cfc-backend | 3 | ProductOrderServiceUpdateExpressField | `cfc-backend/src/test/java/com/etotem/cfc/service/ProductOrderServiceUpdateExpressFieldTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/ProfitPoolOrderContractRedTest.java` | cfc-backend | 4 | ProfitPoolOrderContractRed | `cfc-backend/src/test/java/com/etotem/cfc/service/ProfitPoolOrderContractRedTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/RealNameBackfillServiceTest.java` | cfc-backend | 8 | RealNameBackfillService | `cfc-backend/src/test/java/com/etotem/cfc/service/RealNameBackfillServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/ReportAnalyzeQuotaServiceTest.java` | cfc-backend | 6 | ReportAnalyzeQuotaService | `cfc-backend/src/test/java/com/etotem/cfc/service/ReportAnalyzeQuotaServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/ReportDateExtractorTest.java` | cfc-backend | 6 | ReportDateExtractor | `cfc-backend/src/test/java/com/etotem/cfc/service/ReportDateExtractorTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/ReportSummaryServiceCompletenessTest.java` | cfc-backend | 1 | ReportSummaryServiceCompleteness | `cfc-backend/src/test/java/com/etotem/cfc/service/ReportSummaryServiceCompletenessTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/RewardRuleServiceBatchEstimateTest.java` | cfc-backend | 9 | RewardRuleServiceBatchEstimate | `cfc-backend/src/test/java/com/etotem/cfc/service/RewardRuleServiceBatchEstimateTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/RewardRuleServiceEstimateTest.java` | cfc-backend | 21 | RewardRuleServiceEstimate | `cfc-backend/src/test/java/com/etotem/cfc/service/RewardRuleServiceEstimateTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/SpecialPriceServiceTest.java` | cfc-backend | 9 | SpecialPriceService | `cfc-backend/src/test/java/com/etotem/cfc/service/SpecialPriceServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/StarScoreCalculatorContractRedTest.java` | cfc-backend | 10 | StarScoreCalculatorContractRed | `cfc-backend/src/test/java/com/etotem/cfc/service/StarScoreCalculatorContractRedTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/TaskServiceCfEarnTest.java` | cfc-backend | 4 | TaskServiceCfEarn | `cfc-backend/src/test/java/com/etotem/cfc/service/TaskServiceCfEarnTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/TaskServiceReviewTest.java` | cfc-backend | 15 | TaskServiceReview | `cfc-backend/src/test/java/com/etotem/cfc/service/TaskServiceReviewTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/TeamAwardRecordContractRedTest.java` | cfc-backend | 6 | TeamAwardRecordContractRed | `cfc-backend/src/test/java/com/etotem/cfc/service/TeamAwardRecordContractRedTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/TeamProfitContract.java` | cfc-backend | 0 | TeamProfitContract.java | `cfc-backend/src/test/java/com/etotem/cfc/service/TeamProfitContract.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/TeamProfitSchemaContractRedTest.java` | cfc-backend | 6 | TeamProfitSchemaContractRed | `cfc-backend/src/test/java/com/etotem/cfc/service/TeamProfitSchemaContractRedTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/TeamShareRecordEightShareContractRedTest.java` | cfc-backend | 6 | TeamShareRecordEightShareContractRed | `cfc-backend/src/test/java/com/etotem/cfc/service/TeamShareRecordEightShareContractRedTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/TencentTtsServiceAuthorizationTest.java` | cfc-backend | 4 | TencentTtsServiceAuthorization | `cfc-backend/src/test/java/com/etotem/cfc/service/TencentTtsServiceAuthorizationTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/UserAddressServiceBackfillTest.java` | cfc-backend | 2 | UserAddressServiceBackfill | `cfc-backend/src/test/java/com/etotem/cfc/service/UserAddressServiceBackfillTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/UserServiceEffectiveFamilyIdsTest.java` | cfc-backend | 5 | UserServiceEffectiveFamilyIds | `cfc-backend/src/test/java/com/etotem/cfc/service/UserServiceEffectiveFamilyIdsTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/UserServiceFamilyNameLinkTest.java` | cfc-backend | 2 | UserServiceFamilyNameLink | `cfc-backend/src/test/java/com/etotem/cfc/service/UserServiceFamilyNameLinkTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/UserServiceWechatLoginContractTest.java` | cfc-backend | 6 | UserServiceWechatLoginContract | `cfc-backend/src/test/java/com/etotem/cfc/service/UserServiceWechatLoginContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/UserServiceWechatLoginTest.java` | cfc-backend | 5 | UserServiceWechatLogin | `cfc-backend/src/test/java/com/etotem/cfc/service/UserServiceWechatLoginTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/WishServiceTest.java` | cfc-backend | 4 | WishService | `cfc-backend/src/test/java/com/etotem/cfc/service/WishServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/WithdrawalServiceTest.java` | cfc-backend | 6 | WithdrawalService | `cfc-backend/src/test/java/com/etotem/cfc/service/WithdrawalServiceTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/impl/CfGrowthEarnCallSiteTest.java` | cfc-backend | 4 | CfGrowthEarnCallSite | `cfc-backend/src/test/java/com/etotem/cfc/service/impl/CfGrowthEarnCallSiteTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/service/impl/PurchaseServiceImplRenewalTest.java` | cfc-backend | 4 | PurchaseServiceImplRenewal | `cfc-backend/src/test/java/com/etotem/cfc/service/impl/PurchaseServiceImplRenewalTest.java` | | `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/AttributionComplianceGateTest.java` | cfc-backend | 11 | AttributionComplianceGate | `cfc-backend/src/test/java/com/etotem/cfc/unit/AttributionComplianceGateTest.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/BadgeServiceUnlockNoticeTest.java` | cfc-backend | 6 | BadgeServiceUnlockNotice | `cfc-backend/src/test/java/com/etotem/cfc/unit/BadgeServiceUnlockNoticeTest.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/ConditionalPathogenLowSideRuleTest.java` | cfc-backend | 10 | ConditionalPathogenLowSideRule | `cfc-backend/src/test/java/com/etotem/cfc/unit/ConditionalPathogenLowSideRuleTest.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/DanAssessmentRecordCreateContractTest.java` | cfc-backend | 6 | DanAssessmentRecordCreateContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/DanAssessmentRecordCreateContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/DanAssessmentResultRecordContractTest.java` | cfc-backend | 3 | DanAssessmentResultRecordContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/DanAssessmentResultRecordContractTest.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/DietFoodHealthAdjustContractTest.java` | cfc-backend | 10 | DietFoodHealthAdjustContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/DietFoodHealthAdjustContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/DietRecommendationBoundaryTest.java` | cfc-backend | 12 | DietRecommendationBoundary | `cfc-backend/src/test/java/com/etotem/cfc/unit/DietRecommendationBoundaryTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/DietRecommendationServiceTest.java` | cfc-backend | 17 | DietRecommendationService | `cfc-backend/src/test/java/com/etotem/cfc/unit/DietRecommendationServiceTest.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/FamilyJoinValidationRulesContractTest.java` | cfc-backend | 14 | FamilyJoinValidationRulesContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/FamilyJoinValidationRulesContractTest.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/FamilyMemberRelationshipLabelTest.java` | cfc-backend | 8 | FamilyMemberRelationshipLabel | `cfc-backend/src/test/java/com/etotem/cfc/unit/FamilyMemberRelationshipLabelTest.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/FamilyRelationshipServiceLabelTest.java` | cfc-backend | 6 | FamilyRelationshipServiceLabel | `cfc-backend/src/test/java/com/etotem/cfc/unit/FamilyRelationshipServiceLabelTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/FamilyRemoveMemberContractTest.java` | cfc-backend | 8 | FamilyRemoveMemberContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/FamilyRemoveMemberContractTest.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/GuheEvidenceIsolateContractTest.java` | cfc-backend | 12 | GuheEvidenceIsolateContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheEvidenceIsolateContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheGateLowSideRedlineContractTest.java` | cfc-backend | 12 | GuheGateLowSideRedlineContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheGateLowSideRedlineContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheGateStrainBlockContractTest.java` | cfc-backend | 6 | GuheGateStrainBlockContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheGateStrainBlockContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheKbFieldExposeContractTest.java` | cfc-backend | 6 | GuheKbFieldExposeContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheKbFieldExposeContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheKbQueryLowSidePatchContractTest.java` | cfc-backend | 8 | GuheKbQueryLowSidePatchContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheKbQueryLowSidePatchContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheKbVersionSenseContractTest.java` | cfc-backend | 11 | GuheKbVersionSenseContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheKbVersionSenseContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheLowSideAggregateContractTest.java` | cfc-backend | 6 | GuheLowSideAggregateContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheLowSideAggregateContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheLowSideNoSupplementContractTest.java` | cfc-backend | 6 | GuheLowSideNoSupplementContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheLowSideNoSupplementContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheLowSideRuleLoadContractTest.java` | cfc-backend | 10 | GuheLowSideRuleLoadContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheLowSideRuleLoadContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheNoPathMapContractTest.java` | cfc-backend | 10 | GuheNoPathMapContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheNoPathMapContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuhePageTailCleanContractTest.java` | cfc-backend | 6 | GuhePageTailCleanContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuhePageTailCleanContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheReportPersonalAssertContractTest.java` | cfc-backend | 9 | GuheReportPersonalAssertContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheReportPersonalAssertContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheShellGuardContractTest.java` | cfc-backend | 7 | GuheShellGuardContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheShellGuardContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheV2RouteContractTest.java` | cfc-backend | 8 | GuheV2RouteContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheV2RouteContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheVersionSplitContractTest.java` | cfc-backend | 5 | GuheVersionSplitContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuheVersionSplitContractTest.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 | 10 | 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` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuidePlanReviewControllerAuthTest.java` | cfc-backend | 6 | GuidePlanReviewControllerAuth | `cfc-backend/src/test/java/com/etotem/cfc/unit/GuidePlanReviewControllerAuthTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/HealthDataSourceBridgeContractTest.java` | cfc-backend | 16 | HealthDataSourceBridgeContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/HealthDataSourceBridgeContractTest.java` | | `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/HealthReportCreateContractTest.java` | cfc-backend | 10 | HealthReportCreateContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/HealthReportCreateContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/HealthReportDetailContractTest.java` | cfc-backend | 13 | HealthReportDetailContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/HealthReportDetailContractTest.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/LangGraphErrorPropagateContractTest.java` | cfc-backend | 5 | LangGraphErrorPropagateContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/LangGraphErrorPropagateContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/LangGraphExitHangContractTest.java` | cfc-backend | 4 | LangGraphExitHangContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/LangGraphExitHangContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/LegacyDimensionCallFilterTest.java` | cfc-backend | 6 | LegacyDimensionCallFilter | `cfc-backend/src/test/java/com/etotem/cfc/unit/LegacyDimensionCallFilterTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/LegacyDimensionCallLogServiceTest.java` | cfc-backend | 7 | LegacyDimensionCallLogService | `cfc-backend/src/test/java/com/etotem/cfc/unit/LegacyDimensionCallLogServiceTest.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/MembershipChatMemberGateContractTest.java` | cfc-backend | 6 | MembershipChatMemberGateContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/MembershipChatMemberGateContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/MembershipPlanPurchaseContractTest.java` | cfc-backend | 7 | MembershipPlanPurchaseContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/MembershipPlanPurchaseContractTest.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/PersonalLayerDualAssertionTest.java` | cfc-backend | 13 | PersonalLayerDualAssertion | `cfc-backend/src/test/java/com/etotem/cfc/unit/PersonalLayerDualAssertionTest.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 | 38 | 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/RolesUtilTest.java` | cfc-backend | 7 | RolesUtil | `cfc-backend/src/test/java/com/etotem/cfc/unit/RolesUtilTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/ServiceRoleApplyBindInviteContractTest.java` | cfc-backend | 6 | ServiceRoleApplyBindInviteContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/ServiceRoleApplyBindInviteContractTest.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/ShopCouponApplyContractTest.java` | cfc-backend | 20 | ShopCouponApplyContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/ShopCouponApplyContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/ShopOrderCreateSpecialDealContractTest.java` | cfc-backend | 10 | ShopOrderCreateSpecialDealContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/ShopOrderCreateSpecialDealContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/ShopOrderQueryRefundContractTest.java` | cfc-backend | 4 | ShopOrderQueryRefundContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/ShopOrderQueryRefundContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/SupplierOrderFulfillContractTest.java` | cfc-backend | 5 | SupplierOrderFulfillContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/SupplierOrderFulfillContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskCompleteScC02ContractTest.java` | cfc-backend | 11 | TaskCompleteScC02Contract | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskCompleteScC02ContractTest.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/TaskReviewScP11ContractTest.java` | cfc-backend | 8 | TaskReviewScP11Contract | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskReviewScP11ContractTest.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/TaskTaskCreateContractTest.java` | cfc-backend | 7 | TaskTaskCreateContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/TaskTaskCreateContractTest.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/TeamProfitAdminManageContractTest.java` | cfc-backend | 20 | TeamProfitAdminManageContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/TeamProfitAdminManageContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/TeamProfitCronContractTest.java` | cfc-backend | 22 | TeamProfitCronContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/TeamProfitCronContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/TeamProfitHookContractTest.java` | cfc-backend | 7 | TeamProfitHookContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/TeamProfitHookContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/TeamProfitPipelineContractTest.java` | cfc-backend | 8 | TeamProfitPipelineContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/TeamProfitPipelineContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/TeamStarDigestContractTest.java` | cfc-backend | 14 | TeamStarDigestContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/TeamStarDigestContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/TeamStarMultiplierContractTest.java` | cfc-backend | 13 | TeamStarMultiplierContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/TeamStarMultiplierContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/TeamStarMyViewContractTest.java` | cfc-backend | 24 | TeamStarMyViewContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/TeamStarMyViewContractTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/TeamUserPortalContractTest.java` | cfc-backend | 4 | TeamUserPortalContract | `cfc-backend/src/test/java/com/etotem/cfc/unit/TeamUserPortalContractTest.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/UnifiedKnowledgeBaseLowSidePatchTest.java` | cfc-backend | 4 | UnifiedKnowledgeBaseLowSidePatch | `cfc-backend/src/test/java/com/etotem/cfc/unit/UnifiedKnowledgeBaseLowSidePatchTest.java` | | `cfc-backend/src/test/java/com/etotem/cfc/unit/UserServiceMaskChildSensitiveFieldsTest.java` | cfc-backend | 5 | UserServiceMaskChildSensitiveFields | `cfc-backend/src/test/java/com/etotem/cfc/unit/UserServiceMaskChildSensitiveFieldsTest.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` | ## 六、用户场景(`tests/user-scenarios/*.md`,上游输入) | 文件 | 来源 | | --- | --- | | `tests/user-scenarios/01-guest.md` | `tests/user-scenarios/01-guest.md` | | `tests/user-scenarios/02-parent.md` | `tests/user-scenarios/02-parent.md` | | `tests/user-scenarios/03-child.md` | `tests/user-scenarios/03-child.md` | | `tests/user-scenarios/04-teacher.md` | `tests/user-scenarios/04-teacher.md` | | `tests/user-scenarios/05-admin.md` | `tests/user-scenarios/05-admin.md` | | `tests/user-scenarios/06-vendor.md` | `tests/user-scenarios/06-vendor.md` | | `tests/user-scenarios/07-five-dimension.md` | `tests/user-scenarios/07-five-dimension.md` | | `tests/user-scenarios/08-butler.md` | `tests/user-scenarios/08-butler.md` | | `tests/user-scenarios/09-human-butler.md` | `tests/user-scenarios/09-human-butler.md` | | `tests/user-scenarios/README.md` | `tests/user-scenarios/README.md` | | `tests/user-scenarios/应用场景总览.md` | `tests/user-scenarios/应用场景总览.md` | ## 七、回写进展机制(不破坏原项目结构) 进度**不写回** `tests/` 与 `cfc-backend/src/test/java` 下的原始测试文件,而是落在本地侧车: ```json // .tdd/test-progress.json(与 config.json 同目录,本地不推送) { "schema": "tdd-test-progress/v1", "sources": [ { "anchor", "source_type", "source_path", "local_id", ...meta }, ... ], "progress": { "": { "status": "pass|fail|executed|blocked|untracked", "at": ISO, "by": "", "note": "" } } } ``` - `anchor` = `source_path#local_id`(如 `tests/test-cases/admin.md#TC-A-01`)。 - 回写时仅更新 `progress[anchor]`;原始 `.md/.spec.js/.py` 一律不动,原项目结构零侵入。 - 用 `test_inventory.py --emit-progress` 可(重新)播种 anchors(保留已有 progress)。 - **共享自动化状态**:本脚本默认生成 `docs/tdd/test/automation-status.md`(团队共享),按 anchor 标注「自动化状态 + 执行状态」;本地侧车 `.tdd/test-progress.json` 不推送。