Parcourir la source

test: v13 test records + issue tracking (ISSUE-010~012)

Sisyphus Agent il y a 2 mois
Parent
commit
9d47124fed
2 fichiers modifiés avec 207 ajouts et 1 suppressions
  1. 41 1
      tests/ISSUE-TRACKING.md
  2. 166 0
      tests/TEST-RESULTS-v13.md

+ 41 - 1
tests/ISSUE-TRACKING.md

@@ -1,7 +1,45 @@
 # 问题跟踪 — CFC API 测试
 # 问题跟踪 — CFC API 测试
 
 
+## 阻塞项 (必须修复才能编译/测试)
+
+### ISSUE-010: FamilyMemberService 未同步 AddFamilyMemberDTO 辈分重构
+
+| 属性 | 值 |
+|------|-----|
+| **状态** | 🔴 阻塞 |
+| **首次发现** | v13 (2026/7/8) |
+| **严重级别** | **阻塞** |
+| **现象** | `FamilyMemberService.java` 编译失败 (7 errors),全部 DTO 方法引用错误 |
+| **根因** | AddFamilyMemberDTO 已拆分为 `relativeMemberId` + `generationLevel` + `peerType` 三个新字段,移除了 `relationshipType` 字段。但 FamilyMemberService.addMember() 仍使用 `dto.getRelationshipType()`。同时也影响到 `listMembers()` 和 `toFamilyMemberVO()` 方法 |
+| **受影响行** | 第 55, 71, 74, 92 行 (`dto.getRelationshipType()`) |
+| **影响** | ❌ 整个后端无法编译,所有 JUnit 测试和 API 测试阻塞 |
+| **建议** | 1. 用 `relativeMemberId` 查参照成员的 generation <br>2. 根据 `generationLevel` 计算新成员的 generation <br>3. 根据 `peerType` 设置 isSpouse <br>4. 更新 `listMembers()` 使用 generation 替代 relationshipType 映射 |
+
 ## 待解决问题
 ## 待解决问题
 
 
+### ISSUE-011: schema.sql 未同步 migration 36-37 (generation/is_spouse)
+
+| 属性 | 值 |
+|------|-----|
+| **状态** | 🟡 待修复 |
+| **首次发现** | v13 (2026/7/8) |
+| **严重级别** | 低 |
+| **现象** | `schema.sql` 中 `family_members` 的 CREATE TABLE 语句缺少 `generation` 和 `is_spouse` 列定义 |
+| **根因** | Migration 36-37 通过 `ensureColumn` 添加了列,但未按 AGENTS.md 规定同步更新 schema.sql |
+| **影响** | ⚠️ 重新建库时会导致列缺失(迁移可重复执行所以生产无影响) |
+| **建议** | 在 `family_members` CREATE TABLE 中添加 `generation INT COMMENT '辈分值'` 和 `is_spouse TINYINT(1) DEFAULT 0 COMMENT '是否配偶'` |
+
+### ISSUE-012: FamilyMemberVO 缺少 isSpouse 字段
+
+| 属性 | 值 |
+|------|-----|
+| **状态** | 🔵 待确认 |
+| **首次发现** | v13 (2026/7/8) |
+| **严重级别** | 低 |
+| **现象** | `FamilyMember` 实体有 `generation` + `isSpouse` 字段,但 `FamilyMemberVO` 只有 `generation` 字段 |
+| **可能原因** | 前端可能通过 `generation=0 && relationshipType=spouse` 推断配偶关系,或 `isSpouse` 尚未在前端使用 |
+| **建议** | 确认前端是否需要单独的 `isSpouse` 布尔字段;若需则在 VO 中添加 |
+
 ### ISSUE-007: SupplySystem 创建返回 500
 ### ISSUE-007: SupplySystem 创建返回 500
 
 
 | 属性 | 值 |
 | 属性 | 值 |
@@ -51,6 +89,8 @@
 | ID | 问题 | 状态 | 备注 |
 | ID | 问题 | 状态 | 备注 |
 |----|------|------|------|
 |----|------|------|------|
 | AUTO-TAG-02 | Tags 字段在 article detail 返回 null | ℹ️ 前端计算 | 不是 bug,只是 API 不返回该字段 |
 | AUTO-TAG-02 | Tags 字段在 article detail 返回 null | ℹ️ 前端计算 | 不是 bug,只是 API 不返回该字段 |
+| ISSUE-011 | schema.sql 未同步 migration 36-37 | 🟡 待修复 | DDL 一致性 |
+| ISSUE-012 | FamilyMemberVO 缺少 isSpouse | 🔵 待确认 | 需确认前端需求 |
 
 
 ## 已关闭问题
 ## 已关闭问题
 
 
@@ -69,4 +109,4 @@
 
 
 ---
 ---
 
 
-*最后更新: 2026-07-07 (v12)*
+*最后更新: 2026-07-08 (v13)*

+ 166 - 0
tests/TEST-RESULTS-v13.md

@@ -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 验证*