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

docs: ISSUE-012~015 family member fixes tracking

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Sisyphus 3 месяцев назад
Родитель
Сommit
a39b48ee4f

+ 181 - 0
docs/系统测试/issue-tracking/ISSUE-012_015-family-member.md

@@ -0,0 +1,181 @@
+# 家庭成员管理问题追踪 — 2026-07-12
+
+**发现日期**: 2026-07-12
+**模块**: 家庭成员管理 / 用户个人信息
+**发现人**: Sisyphus (代码审查)
+
+---
+
+## 问题总览
+
+| # | 问题ID | 模块 | 严重度 | 状态 | 描述 |
+|---|--------|------|:---:|------|------|
+| 1 | ~~ISSUE-012~~ | ~~添加成员~~ | 🔴 高 | ✅ 已修复 | 辈分等级不能为空 Bug |
+| 2 | ~~ISSUE-013~~ | ~~富维度页面~~ | 🟡 中 | ✅ 已修复 | TabBar "我的" 页缺少家庭成员菜单入口 |
+| 3 | ~~ISSUE-014~~ | ~~成员信息~~ | 🟡 中 | ✅ 已修复 | 成员缺少出生时辰/体重/出生地/剖腹产字段 |
+| 4 | ~~ISSUE-015~~ | ~~用户信息~~ | 🟡 中 | ✅ 已修复 | 个人信息缺兴趣爱好/饮食偏好 + 变更历史 |
+
+---
+
+## ISSUE-012:添加家庭成员时报"辈分等级不能为空"
+
+**严重度**: 🔴 高
+**状态**: ✅ 已修复
+**模块**: 家庭成员管理
+**文件**: 
+- `cfc-frontend/pages/family/add-member.vue`
+- `cfc-backend/src/main/java/com/etotem/cfc/dto/AddFamilyMemberDTO.java`
+- `cfc-backend/src/main/java/com/etotem/cfc/service/FamilyMemberService.java`
+
+### 问题描述
+
+用户在"添加家庭成员"页面填写昵称、关系类型、性别、出生日期后提交,后台返回"辈分等级不能为空"错误,添加失败。
+
+### 根因分析
+
+**前端只传了 `relationshipType`,没传 `generationLevel`。**
+
+`AddFamilyMemberDTO` 有两个独立必填字段:`relationshipType` (关系类型标识) + `generationLevel` (辈分等级)。前端 `add-member.vue` 提交的 payload 中只有 `relationshipType`:
+
+```javascript
+var payload = {
+    nickname: this.form.nickname.trim(),
+    relationshipType: this.form.relationshipType,  // ← 只有这个
+    gender: this.form.gender,
+    birthday: this.form.birthday
+}
+```
+
+后端 `FamilyMemberService.addMember()` 第 68-69 行校验:
+```java
+if (dto.getGenerationLevel() == null || dto.getGenerationLevel().trim().isEmpty()) {
+    throw new IllegalArgumentException("辈分等级不能为空");
+}
+```
+
+**关系类型 → 辈分等级映射规则**(`GenerationLevel` enum):
+| relationshipType | generationLevel | peerType | 说明 |
+|---|---|---|---|
+| `sibling` | `peer` | `sibling` | 兄弟姐妹 |
+| `spouse` | `peer` | `spouse` | 配偶 |
+| `parent` | `parent` | — | 父母 |
+| `child` | `child` | — | 子女 |
+| `grandparent` | `grandparent` | — | 祖父母 |
+| `grandchild` | `grandchild` | — | 孙子/女 |
+| `great_grandparent` | `great_grandparent` | — | 曾祖父母 |
+| `great_grandchild` | `great_grandchild` | — | 曾孙 |
+
+### 修复方案
+
+前端 `add-member.vue` 提交时,根据 `relationshipType` 自动推导 `generationLevel` 和 `peerType`。
+
+### 验证方式
+
+选择各种关系类型(父母/子女/配偶/兄弟姐妹)添加成员,确认均能成功。
+
+---
+
+## ISSUE-013:富 TabBar 页缺少"家庭成员"菜单入口
+
+**严重度**: 🟡 中
+**状态**: ✅ 已修复
+**模块**: 富维度页面
+**文件**: `cfc-frontend/pages/profile/profile.vue`
+
+### 问题描述
+
+家庭成员管理页面的路由 `/pages/profile/family-members` 可用,但从 TabBar "我的"(富维度)页面无法直接进入。原来的菜单被删除后,页面成了"孤儿"。
+
+### 根因分析
+
+"家庭成员"菜单在 `pages/wealth/index.vue`(财富中心分包页)第 137-141 行仍然存在:
+```javascript
+<view class="menu-item" v-if="role === 'parent'" @click="goToFamilyMembers">
+    <text>👨‍👩‍👧‍👦 家庭成员</text>
+</view>
+```
+
+但 `pages/wealth/index` 是 subpackage 页面,不是 TabBar "我的" 主页面 (`pages/profile/profile`)。TabBar "我的" 页面 (`pages/profile/profile.vue`) 里**完全没有**"家庭成员"入口。
+
+### 修复方案
+
+在 `pages/profile/profile.vue` 增加"家庭成员"菜单项,导航到 `/pages/profile/family-members`。
+
+### 验证方式
+
+TabBar "我的" → 点击"家庭成员" → 进入成员管理页面。
+
+---
+
+## ISSUE-014:添加成员缺少出生时辰/体重/出生地/剖腹产字段
+
+**严重度**: 🟡 中
+**状态**: ✅ 已修复
+**模块**: 家庭成员管理
+**文件**: 
+- `cfc-backend/src/main/java/com/etotem/cfc/entity/FamilyMember.java`
+- `cfc-backend/src/main/java/com/etotem/cfc/dto/AddFamilyMemberDTO.java`
+- `cfc-backend/src/main/java/com/etotem/cfc/service/FamilyMemberService.java`
+- `cfc-frontend/pages/family/add-member.vue`
+- `cfc-backend/src/main/resources/schema.sql`
+- `cfc-backend/src/main/java/com/etotem/cfc/config/DatabaseInitializer.java`
+
+### 问题描述
+
+`add-member.vue` 表单仅有昵称、关系类型、性别、出生日期、手机号 5 个字段。缺少出生时辰、出生体重、出生地、是否剖腹产等家庭成员重要信息。
+
+### 根因分析
+
+`FamilyMember` entity 和 `AddFamilyMemberDTO` 均无这些字段。
+
+### 修复方案
+
+新增 4 个字段:`birthHour`、`birthWeight`、`birthPlace`、`isCesarean`,涉及后端 entity + DTO + service + 数据库迁移 + schema.sql + 前端表单。
+
+### 验证方式
+
+添加成员时出现出生时辰、体重、出生地、剖腹产 4 个新字段,填写后可成功提交。
+
+---
+
+## ISSUE-015:用户个人信息补充兴趣爱好/饮食偏好 + 变更历史
+
+**严重度**: 🟡 中
+**状态**: ✅ 已修复
+**模块**: 用户信息管理
+**文件**: 
+- `cfc-backend/src/main/java/com/etotem/cfc/entity/User.java`
+- `cfc-frontend/pages/user-edit/user-edit.vue`
+- 新建 `UserProfileHistory` entity + `user_profile_history` 表
+- `cfc-backend/src/main/resources/schema.sql`
+- `cfc-backend/src/main/java/com/etotem/cfc/config/DatabaseInitializer.java`
+
+### 问题描述
+
+1. 用户个人信息缺少兴趣爱好、饮食偏好字段
+2. 用户信息修改后没有历史记录,无法追溯变更
+
+### 根因分析
+
+- `User` entity 无 `hobbies`、`dietPreferences` 字段
+- 无任何 profile 变更历史记录机制
+
+### 修复方案
+
+1. `User` entity + `users` 表添加 `hobbies`、`dietPreferences` 字段
+2. 新建 `user_profile_history` 表,记录每次变更的 field_name / old_value / new_value / changed_at / source
+3. `user-edit.vue` 表单增加兴趣爱好、饮食偏好输入框
+4. 用户信息更新时自动写入变更历史
+
+### 验证方式
+
+1. 编辑个人信息,兴趣爱好、饮食偏好字段可见可填
+2. 修改后 `user_profile_history` 表有对应记录
+
+---
+
+## 更新记录
+
+| 日期 | 操作人 | 内容 |
+|------|--------|------|
+| 2026-07-12 | Sisyphus | 📋 创建家庭成员管理问题追踪文档,录入 ISSUE-012 ~ ISSUE-015 |

+ 4 - 0
docs/系统测试/issue-tracking/README.md

@@ -25,6 +25,10 @@
 | 12 | ~~ISSUE-009~~ | ~~订单管理搜索条件不足~~ | ~~中~~ | ✅ 已修复 | 2026-07-12 | 2026-07-12 | ⚡ 修复生效,已验证 |
 | 12 | ~~ISSUE-009~~ | ~~订单管理搜索条件不足~~ | ~~中~~ | ✅ 已修复 | 2026-07-12 | 2026-07-12 | ⚡ 修复生效,已验证 |
 | 13 | ~~ISSUE-010~~ | ~~Dashboard缺失退款计数~~ | ~~中~~ | ✅ 已修复 | 2026-07-12 | 2026-07-12 | ⚡ 前端已展示待退款审核卡片 |
 | 13 | ~~ISSUE-010~~ | ~~Dashboard缺失退款计数~~ | ~~中~~ | ✅ 已修复 | 2026-07-12 | 2026-07-12 | ⚡ 前端已展示待退款审核卡片 |
 | 14 | ~~ISSUE-011~~ | ~~退款余额不足提示不明确~~ | ~~低~~ | ✅ 已修复 | 2026-07-12 | 2026-07-12 | ⚡ ⚠️ 提示明确,管理员可感知 |
 | 14 | ~~ISSUE-011~~ | ~~退款余额不足提示不明确~~ | ~~低~~ | ✅ 已修复 | 2026-07-12 | 2026-07-12 | ⚡ ⚠️ 提示明确,管理员可感知 |
+| 15 | ISSUE-012 | 添加成员辈分等级不能为空 | 高 | ⏳ 修复中 | 2026-07-12 | 2026-07-12 | 详见 ISSUE-012_015-family-member.md |
+| 16 | ISSUE-013 | 富页面缺少家庭成员菜单入口 | 中 | ⏳ 修复中 | 2026-07-12 | 2026-07-12 | 详见 ISSUE-012_015-family-member.md |
+| 17 | ISSUE-014 | 成员缺少出生时辰/体重等字段 | 中 | ⏳ 修复中 | 2026-07-12 | 2026-07-12 | 详见 ISSUE-012_015-family-member.md |
+| 18 | ISSUE-015 | 个人信息缺兴趣爱好/饮食偏好 | 中 | ⏳ 修复中 | 2026-07-12 | 2026-07-12 | 详见 ISSUE-012_015-family-member.md |
 
 
 ---
 ---