Преглед изворни кода

docs: 添加富维度体系重设计划(子维度拆分+身克富杠杆+小程序富页)

asus пре 3 месеци
родитељ
комит
927bcfc99d
1 измењених фајлова са 203 додато и 0 уклоњено
  1. 203 0
      docs/superpowers/plans/2026-07-12-wealth-dimension-redesign.md

+ 203 - 0
docs/superpowers/plans/2026-07-12-wealth-dimension-redesign.md

@@ -0,0 +1,203 @@
+# 富维度体系重构:子维度拆分 + 身克富杠杆 + 小程序富页重设计
+
+**状态:** pending
+**日期:** 2026-07-12
+**分支:** cfclub
+
+---
+
+## 背景
+
+当前"富"维度的问题:
+
+1. **成人和孩子的"富"混为一谈**——成人=积分总量/500,孩子=积分获取效率,没有差异化的"富"定义
+2. **缺少身克富的系统体现**——相克关系只有文档,没有在能量计算和前端落地
+3. **小程序富页面是大杂烩**——显示的是"行动数据"(任务/购买/活动/课程)和"成长报告",与"富"无关,本质是"我的页面"
+
+---
+
+## 目标
+
+- P0: 重构 `EnergyService` 中 `calcChildWealth` / `calcParentWealth`,拆为子维度
+- P0: 实现身克富杠杆(健康风险扣减 + 透支预警标记)
+- P0: 重写 `pages/wealth/index.vue`,角色感知的富展示
+- P1: 新增后端 API `GET /api/energy/wealth-detail`
+- P1: 更新 DTO `MemberEnergyDTO` 增加子维度字段和身克富字段
+- P1: 更新设计文档(wuxing-philosophy.md 和 energy-design.md)
+
+---
+
+## 改动清单
+
+### 后端 (EnergyService.java + DTO)
+
+#### 1. DTO:MemberEnergyDTO.java
+
+新增子维度字段和身克富字段:
+
+```java
+// 富的子维度(parent)
+private Integer wealthIncome;       // 金钱/收入
+private Integer wealthAchievement;  // 社会成就
+private Integer wealthNetwork;      // 资源网络
+
+// 富的子维度(child)
+private Integer wealthEducation;    // 学业成绩
+private Integer wealthSocial;       // 社交筹码
+private Integer wealthPoints;       // 规则博弈(积分效率)
+
+// 身克富标记
+private String bodyWealthStatus;    // normal / overdraw / penalty
+private String bodyWealthMessage;   // 用户可见的消息
+```
+
+#### 2. 新增 API:EnergyController.java
+
+```java
+@PostMapping("/api/energy/wealth-detail")
+public Result<MemberEnergyDTO> getWealthDetail(@RequestParam Long memberId,
+                                                @RequestParam String memberType) {
+    // childId for child, userId for parent
+    // 返回包含子维度 + 身克富标记的 MemberEnergyDTO
+}
+```
+
+#### 3. EnergyService.java — calcChildWealth 重构
+
+`calcChildWealth(child, dto)` → 返回加权总分,同时填充 dto 的子分
+
+| 子方法 | 数据源 | 权重 |
+|:-------|--------|:----:|
+| `calcChildWealthEducation(child)` | DanAssessmentResult(最近3次测评综合分+进步趋势) | 30% |
+| `calcChildWealthSocial(child)` | 活动参与次数(活动系统) | 20%(占位,暂无数据回0) |
+| `calcChildWealthPoints(child)` | 现有积分获取效率逻辑 | 50% |
+
+评分公式:`total = edu*0.3 + social*0.2 + points*0.5`
+
+#### 4. EnergyService.java — calcParentWealth 重构
+
+`calcParentWealth(parent, dto)` → 返回加权总分,同时填充 dto 的子分
+
+| 子方法 | 数据源 | 权重 |
+|:-------|--------|:----:|
+| `calcParentWealthIncome(parent)` | 现有积分算法 | 50% |
+| `calcParentWealthAchievement(parent)` | User.achievements 扩展字段 JSON | 30%(第一阶段回0) |
+| `calcParentWealthNetwork(parent)` | 推荐团队人数 | 20%(第一阶段回0) |
+
+评分公式:`total = income*0.5 + achievement*0.3 + network*0.2`
+
+#### 5. EnergyService.java — 身克富杠杆
+
+新增通用方法 `applyBodyWealthRestraint(bodyScore, wealthScore, dto)`
+
+```
+if (身 < 40): -> penalty(健康稀释财富):wealth * (0.5 + 0.5*身/100)
+elif (身 < 50 && 富 > 身+20): -> overdraw(透支预警,不下调财富分)
+else: -> normal(正常,按身高质量时给正向消息)
+```
+
+在 `calcParentEnergy` / `calcChildEnergy` 末尾调用。
+
+---
+
+### 前端 (pages/wealth/index.vue)
+
+#### 页面结构重写
+
+当前页面:品牌头部 + 用户卡片 + 行动数据 + 财富数据 + 成就徽章 + 成长报告 + 菜单列表
+
+新页面:
+
+```
+[PageBanner] "利他创富 · 价值共享"
+[身克富状态条]  身体底盘 + 财富能量 + 消息行
+[三子维度卡片]  根据 role 显示成人/孩子子维度
+[增值服务入口]  记账打卡 / 保单管理 / 创客中心 / 成就系统 / 成长报告
+[底部菜单]      精简后的操作入口
+```
+
+#### 身克富状态条
+
+两个进度条+一条消息的卡片:
+
+```html
+<view class="body-wealth-bar" :class="'status-' + bodyWealthStatus">
+  <view class="bar-row">
+    <text class="bar-label">身体分解</text>
+    <view class="bar-track"><view class="bar-fill body-bar" :style="'width:'+bodyScore+'%'"></view></view>
+    <text class="bar-value">{{ bodyScore }}分</text>
+  </view>
+  <view class="bar-row">
+    <text class="bar-label">财力素养</text>
+    <view class="bar-track"><view class="bar-fill wealth-bar" :style="'width:'+wealthScore+'%'"></view></view>
+    <text class="bar-value">{{ wealthScore }}分</text>
+  </view>
+  <view v-if="bodyWealthMessage" class="bw-message">{{ bodyWealthMessage }}</view>
+</view>
+```
+
+三种状态视觉:`normal` 灰色/ `overdraw` 琥珀色底色+警告 / `penalty` 红色底色+箭头
+
+#### 三子维度卡片
+
+成人版:
+
+```html
+<view class="sub-dim-grid" v-if="role === 'parent'">
+  <view class="sub-dim-card" @click="goToIncome">
+    <text class="sub-dim-score">{{ wealthIncome || '-' }}</text>
+    <text class="sub-dim-label">金钱/收入</text>
+    <text class="sub-dim-desc">累计佣金</text>
+  </view>
+  <view class="sub-dim-card" @click="goToAchievements">
+    <text class="sub-dim-score">{{ wealthAchievement || '-' }}</text>
+    <text class="sub-dim-label">个人成就</text>
+    <text class="sub-dim-desc">认证成就</text>
+  </view>
+  <view class="sub-dim-card" @click="goToNetwork">
+    <text class="sub-dim-score">{{ wealthNetwork || '-' }}</text>
+    <text class="sub-dim-label">资源网络</text>
+    <text class="sub-dim-desc">推荐关系</text>
+  </view>
+</view>
+```
+
+孩子版类似,改为成绩/社交/积分。
+
+#### API 调用
+
+新增 `loadWealthDetail()` 替代原有的 `loadEnergyData()`,调用 `POST /api/energy/wealth-detail`
+
+---
+
+### 验证
+
+```bash
+# 后端编译
+cd cfc-backend && mvn clean compile
+
+# 前端
+cd cfc-frontend && npm run build:mp-weixin
+```
+
+---
+
+## 文件修改清单
+
+| # | 文件路径 | 操作 | 说明 |
+|:-:|:---------|:----:|------|
+| 1 | `cfc-backend/.../dto/MemberEnergyDTO.java` | 修改 | 新增8个子维度+身克富字段 |
+| 2 | `cfc-backend/.../service/EnergyService.java` | 修改 | calcChildWealth/calcParentWealth重构 + 新增7个方法 + 身克富杠杆 |
+| 3 | `cfc-backend/.../controller/EnergyController.java` | 修改 | 新增 wealth-detail API |
+| 4 | `cfc-frontend/pages/wealth/index.vue` | 重写 | 完整页面重设计 |
+| 5 | `cfc-frontend/utils/api.js` | 修改 | 新增 getWealthDetail 方法 |
+| 6 | `docs/superpowers/specs/2026-06-08-five-dimension-wuxing-philosophy.md` | 修改 | 身克富解读、富子维度说明 |
+| 7 | `docs/superpowers/specs/2026-06-05-five-dimension-energy-design.md` | 修改 | 富维度算法更新 |
+
+## 不做的事
+
+- 不改 schema.sql(不新建表)
+- 不改 DatabaseInitializer(不需要迁移)
+- 不改 EnergySandboxDTO(家庭聚合值不受影响)
+- 不改任何 Mapper
+- 第一阶段不实现成就/网络录入接口(返回0占位)