2026-07-12-wealth-dimension-redesign.md 7.0 KB

富维度体系重构:子维度拆分 + 身克富杠杆 + 小程序富页重设计

状态: pending 日期: 2026-07-12 分支: cfclub


背景

当前"富"维度的问题:

  1. 成人和孩子的"富"混为一谈——成人=积分总量/500,孩子=积分获取效率,没有差异化的"富"定义
  2. 缺少身克富的系统体现——相克关系只有文档,没有在能量计算和前端落地
  3. 小程序富页面是大杂烩——显示的是"行动数据"(任务/购买/活动/课程)和"成长报告",与"富"无关,本质是"我的页面"

目标

  • P0: 重构 EnergyServicecalcChildWealth / 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

新增子维度字段和身克富字段:

// 富的子维度(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

@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 显示成人/孩子子维度
[增值服务入口]  记账打卡 / 保单管理 / 创客中心 / 成就系统 / 成长报告
[底部菜单]      精简后的操作入口

身克富状态条

两个进度条+一条消息的卡片:

<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 红色底色+箭头

三子维度卡片

成人版:

<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


验证

# 后端编译
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占位)