|
|
@@ -0,0 +1,166 @@
|
|
|
+# 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 行):
|
|
|
+ ```java
|
|
|
+ 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
|
|
|
+
|
|
|
+### 高优先级
|
|
|
+
|
|
|
+3. **ISSUE-006**: AdminArticleController 路由 `/submit-for-review` 未注册
|
|
|
+4. **ISSUE-008**: `/api/admin/foods/list` 500 (SQL 查询)
|
|
|
+5. **ISSUE-009**: `/api/admin/foods/detail` 返回字符串而非 JSON
|
|
|
+
|
|
|
+### 中优先级
|
|
|
+
|
|
|
+6. **ISSUE-011**: schema.sql family_members CREATE TABLE 缺少 generation/is_spouse 列
|
|
|
+7. **ISSUE-012**: FamilyMemberVO 缺少 isSpouse 字段 (仅 entity 有)
|
|
|
+8. 补充 PaymentService testMode 单元测试
|
|
|
+9. 部署前端,执行 E2E 测试
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+*本报告由 Sisyphus 自动生成,基于远程同步 + 代码分析 + mvn compile 验证*
|