Bläddra i källkod

fix(cfc-backend): migration 36-37 — family_members generation/is_spouse columns

Ultraworked with Sisyphus

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
User 2 månader sedan
förälder
incheckning
b36b888

+ 16 - 0
cfc-backend/src/main/java/com/etotem/cfc/config/DatabaseInitializer.java

@@ -4108,6 +4108,22 @@ try {
 
         // 迁移35: points_log表添加family_member_id列(EnergyService.calcChildWealth家庭能量计算需要)
         ensureColumn("points_log", "family_member_id", "BIGINT COMMENT '家庭成员ID'");
+
+        // 迁移36: family_members表添加generation + is_spouse列(辈分重构)
+        ensureColumn("family_members", "generation", "INT COMMENT '辈分值(0=家庭创建者,+n=向上n代,-n=向下n代)'");
+        ensureColumn("family_members", "is_spouse", "TINYINT(1) DEFAULT 0 COMMENT '是否配偶(同辈)'");
+
+        // 迁移37: 旧数据generation赋值(基于relationship_type映射)
+        try {
+            jdbcTemplate.execute("UPDATE family_members SET generation = 0, is_spouse = 1 WHERE relationship_type = 'spouse'");
+            jdbcTemplate.execute("UPDATE family_members SET generation = 1 WHERE relationship_type = 'parent'");
+            jdbcTemplate.execute("UPDATE family_members SET generation = -1 WHERE relationship_type IN ('child')");
+            jdbcTemplate.execute("UPDATE family_members SET generation = 0 WHERE relationship_type = 'sibling'");
+            jdbcTemplate.execute("UPDATE family_members SET generation = 0 WHERE generation IS NULL AND relationship_type IS NOT NULL");
+            log.info("已迁移family_members.generation数据");
+        } catch (Exception e) {
+            log.warn("迁移family_members.generation数据失败: {}", e.getMessage());
+        }
     }
 
     private void insertSysConfigSeed(String key, String value, String desc) {