|
|
@@ -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占位)
|