TEST-RESULTS-v13.md 7.3 KB

CFC 测试记录 v13

日期: 2026-07-08 分支: temp-push (origin/cfclub at f6b1282, ahead of b36b888) 同步范围: b36b888..f6b1282 + 远程分析 5 commits


一、同步内容摘要

1.1 远程变更分析(2026-07-08 同步)

Commit 模块 变更内容 测试影响
f6b1282 测试 单元测试 + API 测试 + E2E 更新 本次新增
b36b888 cfc-backend Migration 36-37: family_members 表添加 generation + is_spouse 列,旧数据迁移 ⚠️ schema.sql 未同步
65c6f55 docs 家庭成员辈分重构实施计划 (v2.0) + 关系视角转换设计 (v3.0) 无代码变更
5e7d9d9 cfc-web Admin 页面编辑器增强:ActivityEdit.vue 富文本编辑器,版本 1.0.8 ✅ E2E 场景已更新
538224b cfc-backend 辈分体系:AddFamilyMemberDTO 重构 (relativeMemberId+generationLevel+peerType),FamilyMember 新增 generation/isSpouse,FamilyMemberVO 新增 generation ❌ 编译失败
ae07ac4 cfc-backend PaymentService: testMode 支持 + 私钥加载重构 + createWechatPrepay 新增 openid 参数 ⚠️ 需新测试
8793fb1 cfc-frontend 修复 5 个小程序 UI bug 前端回归
0ed5b6d cfc-backend CORS: PrivateNetwork 头 + 显式 allowedOrigins 无测试影响
098f5d2 cfc-backend Migration 35: points_log 表添加 family_member_id 列 已覆盖

1.2 核心变更细节

1.2.1 Migration 36-37: family_members 辈分重构

  • DatabaseInitializer (第 4113-4126 行):

    ensureColumn("family_members", "generation", "INT COMMENT '辈分值'");
    ensureColumn("family_members", "is_spouse", "TINYINT(1) DEFAULT 0 COMMENT '是否配偶'");
    
  • 数据迁移: spouse→generation=0, is_spouse=1; parent→generation=1; child→generation=-1; sibling→generation=0

1.2.2 辈分体系 DTO 重构

  • AddFamilyMemberDTO (新 API):
    • relativeMemberId (Long, 必填) - 辈分参照成员
    • generationLevel (String, 必填) - great_grandparent/grandparent/parent/peer/child/grandchild/great_grandchild
    • peerType (String, 选填) - sibling/spouse (仅 peer 时)
    • ❌ relationshipType 已移除
  • FamilyMemberVO (新字段): generation 新增
  • FamilyMember (实体): generation + isSpouse 新增, isMale(), isFemale() 方法

1.2.3 PaymentService testMode

  • @Value("${wechat.test-mode:false}") - 配置属性
  • testMode=true: 跳过私钥加载 + 跳过微信 API 请求,返回 mock 数据
  • 私钥加载改为 getClassLoader().getResourceAsStream() (classpath 读取)

二、验证结果

2.1 编译验证: ❌ FAILED

mvn compile → BUILD FAILURE (7 errors)
# 文件 行号 错误 原因
1 FamilyMemberService.java 55:16 getRelationshipType() not found DTO字段已移除
2 FamilyMemberService.java 55:53 getRelationshipType() not found DTO字段已移除
3 FamilyMemberService.java 71:62 getRelationshipType() not found DTO字段已移除
4 FamilyMemberService.java 71:29 方法引用无效 getTypeKey() 级联错误
5 FamilyMemberService.java 72:29 方法引用无效 getEnabled() 级联错误
6 FamilyMemberService.java 74:65 getRelationshipType() not found DTO字段已移除
7 FamilyMemberService.java 92:39 getRelationshipType() not found DTO字段已移除

根本原因: AddFamilyMemberDTO 被重构为辈分参照模式,但 FamilyMemberService.addMember() 未同步更新。

2.2 API 测试: ⚠️ 阻塞

无法执行 API 测试 - 后端代码编译失败,服务器无法启动。

2.3 单元测试: ⚠️ 阻塞

因主代码编译失败,所有 JUnit 测试无法运行。


三、现有测试用例状态

3.1 后端单元测试 (Java)

测试文件 方法数 是否编译 状态
SupplySystemServiceTest.java 14 ⚠️ 主代码阻塞 待编译修复
FoodRecommendServiceTest.java 10 ⚠️ 主代码阻塞 待编译修复
ArticleWorkflowTest.java 12 ⚠️ 主代码阻塞 待编译修复
ActivityServicePublishTest.java 6 ⚠️ 主代码阻塞 待编译修复
ProductServiceTest.java 10+ ⚠️ 主代码阻塞 待编译修复
DimensionScoreServiceTest.java 15+ ⚠️ 主代码阻塞 待编译修复

3.2 API 集成测试 (v11_test.js)

测试套件 用例数 上次结果 当前状态
REG (回归) 16 16 PASS ⚠️ 阻塞
FOOD-01~06 (食材) 6 2 PASS / 4 FAIL ⚠️ 阻塞
SUPPLY-01~07 (供应商) 7 0 EXECUTED ⚠️ 阻塞
FOOD-REC-01~02 (推荐指数) 2 2 PASS ⚠️ 阻塞
ARTICLE-WF-00~03 (工作流) 3+ 1 PASS / 1 FAIL ⚠️ 阻塞
ISSUE-001 (vendor login) 1 1 PASS ⚠️ 阻塞

注意: 所有 API 测试因后端编译失败无法执行。

3.3 E2E 测试

文件 场景数 状态
article-management.spec.js 5 ✅ 已更新 (需前端环境)
activity-registration.spec.js 5 ✅ 已更新 (需前端环境)

四、测试覆盖分析

4.1 本次新增功能覆盖率

新功能模块 单元测试 API 测试 E2E 测试 覆盖率评级
供应商分销体系 14 tests 7 tests - ✅ 良好
食材推荐指数 10 tests 2 tests - ✅ 良好
文章工作流 12 tests 4 tests 2 场景 ✅ 良好
Migration 36-37 (generation/isSpouse) 0 tests 0 tests - ❌ 无覆盖
PaymentService testMode 0 tests 0 tests - ❌ 无覆盖
ActivityEdit 富文本 - - 0 ❌ 无覆盖

4.2 测试缺口

缺口 影响 建议
FamilyMemberService 编译失败 阻塞所有测试 修复 ISSUE-010
schema.sql 未同步 部署后 DDL 不一致 修复 ISSUE-011
无 generation/isSpouse 单元测试 新字段未验证 添加 FamilyMemberServiceTest
无 PaymentService testMode 测试 测试模式未验证 添加 PaymentServiceTest
API 测试缺少新迁移验证 后端未部署 部署后重新执行

五、建议后续工作

阻塞项 (必须先修复)

  1. ️ ISSUE-010: FamilyMemberService.addMember() 未同步新的 AddFamilyMemberDTO

    • 位置: FamilyMemberService.java 第 55, 71, 74, 92 行
    • 修复: 将 dto.getRelationshipType() 改为基于 relativeMemberId + generationLevel 的辈分计算
    • 阻塞: 所有 Maven 编译 + 测试
  2. ️ ISSUE-007: SupplySystem API 500 (表不存在)

    • 确认 supply_system 等表已创建,或执行迁移 33

高优先级

  1. ISSUE-006: AdminArticleController 路由 /submit-for-review 未注册
  2. ISSUE-008: /api/admin/foods/list 500 (SQL 查询)
  3. ISSUE-009: /api/admin/foods/detail 返回字符串而非 JSON

中优先级

  1. ISSUE-011: schema.sql family_members CREATE TABLE 缺少 generation/is_spouse 列
  2. ISSUE-012: FamilyMemberVO 缺少 isSpouse 字段 (仅 entity 有)
  3. 补充 PaymentService testMode 单元测试
  4. 部署前端,执行 E2E 测试

本报告由 Sisyphus 自动生成,基于远程同步 + 代码分析 + mvn compile 验证