2026-07-12-wuxing-homepage-and-conversion-algorithm.md 20 KB

五维首页与能量转化算法设计:相生相克一体融合

日期: 2026-07-12 状态: 设计稿 v1 关联文档: 五克完整设计, 旧富维度计划


一、核心理念:「克」是信号,不是惩罚

理念梳理

"克"在系统中的含义不是惩罚或封路,而是校准和提醒

旧理解 新理解
克=制约/惩罚/扣分 克=平衡信号/引导/提醒
触发即扣分 先提醒,持续偏差才微调
单向负面 双向检查——克方太强或被克方太弱都要点
惩罚性文案 建设性文案,给出行动方向

克的核心表达

克 = 系统在看,在提醒的方向,不是系统在罚,在禁止的方向
克关系 核心提醒
行克身 行动要在身体允许范围内——"运动社交很好,但身体在报警了"
身克富 健康是创富的底盘——"身体是赚钱的本钱,先照看好再去追"
富克心 德要配位,财富跟心理承受力要匹配——"财富涨了,心也得跟上"
心克智 情绪稳,智力才能发挥——"心平才能静智"
智克行 聪明不等于会相处——"人际不是逻辑题"

生与克的关系

五维本质是一套制动与驱动系统

生 = 油门(驱动、滋养、赋能)
克 = 刹车(校准、平衡、警报)

两者缺一不可:
· 只生不克 → 维度膨胀,系统崩盘
· 只克不生 → 维度萎缩,没有成长动力
· 有生有克 → 动态平衡,持续发展

二、能量转化算法:生克一体

2.1 算法流程

第1轮:原始分计算(独立算每个维度,互不依赖)
  ↓
第2轮:克校准(检测5个克关系,只触发最痛一层)
  ↓
第3轮:生增益(检测5个生关系,上游好则下游小幅提升)
  ↓
最终分 = (原始分 × 克调整系数) + 生增益

关键原则:单轮通过,不迭代。

因为迭代意味着行→身→富→心→智→行 循环推导,第2轮行的变化触发第3轮,没有收敛终点。

2.2 克调整系数(校准信号)

克方向 触发条件 系数 信号强度
行克身 行>75 且 身<40 0.5~0.9 🔴透支——调整行动量
行>60 且 身<30 0.3~0.7 🔴严重透支
行>80 且 身<50 0.7~0.95 🟡轻度预警
身克富 身<40 且 富>60 0.5~0.9 🔴健康拖累财富
身<30 且 富>40 0.3~0.7 🔴严重
智克行 智<30 且 行>50 0.6~0.95 🟡盲目行动
智<20 且 行>60 0.4~0.8 🔴缺乏方向
富克心 富>70 且 情绪<40 0.4~0.8 🔴财富伤情
富>60 且 包容<40 不扣分只提示 🟡评判倾向
心克智 心>70 且 智<40 0.5~0.9 🔴过度保护
心<30 且 智>70 不扣分只提示 🟡理性冷漠

系数公式:

// penalty从0(完全封锁)到1(完全正常)
// 被克方越低 → penalty越低(问题越严重)
double penalty = 0.5 + 0.5 × (被克方分 / 100.0);

// 极端情况
// 被克方0分 → penalty = 0.5(最多打对折)
// 被克方100分 → penalty = 1.0(不打折)

2.3 生增益系数(滋养赋能)

生方向 触发条件 增益值 哲学含义
身生智 身>60 且 智<80 +2~8 精神好,思维清晰
智生富 智>60 且 富<80 +2~8 智慧创造财富
富生行 富>60 且 行<80 +2~8 有资源就更愿意社交
行生心 行>60 且 心<80 +2~8 人际关系滋养情绪
心生身 心>60 且 身<80 +2~8 心情好身体就好

增益公式:

// 上游越好 → 增益越大
double boost = (上游分 - 50) / 100.0 × 10;
// 上游60分 → +1分
// 上游80分 → +3分
// 上游100分 → +5分
// 但被克方不能超过80(给成长留空间)
boost = Math.min(boost, 80 - 被克方);

2.4 完整伪代码

public MemberEnergyDTO calculateFamilyMemberEnergy(User parent / FamilyMember child) {
    // === 第1轮:独立算分 ===
    int bodyRaw = calcBody(member);
    int mindRaw = calcMind(member);
    int wisdomRaw = calcWisdom(member);
    int actionRaw = calcAction(member);
    int wealthRaw = calcWealth(member);

    // === 第2轮:克校准 ===
    WuxingRestraintResult restraint = new WuxingRestraintResult();

    // 顺序:行→身→富→心→智→行(克环)
    int actionAfterKe = actionRaw;
    int bodyAfterKe = applyActionBodyRestraint(actionRaw, bodyRaw, restraint);
    int wealthAfterKe = applyBodyWealthRestraint(bodyAfterKe, wealthRaw, restraint);
    int heartTotal = computeHeartTotal(mindRaw, ...);  // 心的子维度加权
    int mindAfterKe = applyWealthHeartRestraint(wealthAfterKe, heartTotal, restraint);
    int wisdomAfterKe = applyMindWisdomRestraint(mindAfterKe, wisdomRaw, restraint);
    actionAfterKe = applyWisdomActionRestraint(wisdomAfterKe, actionRaw, restraint);

    // === 第3轮:生增益 ===
    int bodyFinal = applyMindBodyBoost(mindAfterKe, bodyAfterKe);  // 心生身
    int mindFinal = applyActionMindBoost(actionAfterKe, mindAfterKe); // 行生心
    int wisdomFinal = applyBodyWisdomBoost(bodyFinal, wisdomAfterKe); // 身生智
    int actionFinal = applyWealthActionBoost(wealthAfterKe, actionAfterKe); // 富生行
    int wealthFinal = applyWisdomWealthBoost(wisdomFinal, wealthAfterKe); // 智生富

    // === 最终 ===
    dto.setBodyScore(clamp(bodyFinal, 0, 100));
    dto.setMindScore(clamp(mindFinal, 0, 100));
    dto.setWisdomScore(clamp(wisdomFinal, 0, 100));
    dto.setActionScore(clamp(actionFinal, 0, 100));
    dto.setWealthScore(clamp(wealthFinal, 0, 100));
    dto.setOverallScore((bodyFinal + mindFinal + wisdomFinal + actionFinal + wealthFinal) / 5);

    // 携带克关系状态,供前端展示
    dto.mergeRestraintStatus(restraint);

    return dto;
}

三、首页设计(家长端登录后)

3.1 整体结构

从当前的"仪表盘+操作清单"改为"五维能量为先,数据为辅,操作为后"

┌─────────────────────────────────┐
│ [Banner: 家庭名称 + 综合能量值]   │  ← 顶部状态
├─────────────────────────────────┤
│ [五维行星盘 — 五行能量全景]        │  ← 核心视觉
│  · 五颗星 = 五个维度              │
│  · 星环半径=维度分值               │
│  · 连线=生克关系(实线=相生,虚线=克)│
│  · 点击维度 → 进入维度详情页        │
├─────────────────────────────────┤
│ [克关系状态条 — 最多显示1条]        │  ← 核心提醒
│  只显示最需要关注的克关系           │
│  "行动力很强,身体在报警"           │
├─────────────────────────────────┤
│ [相生指引 + 推荐动作]              │  ← 行动引导
│  基于克关系的行动建议               │
│  "建议增加休息类任务" → 一键添加    │
├─────────────────────────────────┤
│ [成员列表 — 家庭能量排行]           │  ← 社交对比
│  每个成员的五维小图                │
│  家长/孩子分开显示                 │
├─────────────────────────────────┤
│ [快捷数据]                        │  ← 次要信息
│  任务完成率 + 积分 + 待办          │
├─────────────────────────────────┤
│ [内容推荐]                        │  ← 发现内容
│  活动/商品/文章                   │
│  (与当前克关系推荐关联)            │
└─────────────────────────────────┘

3.2 五维行星盘(核心视觉)

保留现有的 WuxingSandbox 整体框架,但新增:

克关系视觉化:

身高分——→富(虚线+⚠️ 当身克富激活时)
身低分——→富(实线 正常相生)

激活的克关系在行星盘上用红色虚线 + 闪烁小箭头表示
未激活的克关系用灰色半透明虚线
相生用金色实线 + 流向箭头

相生流向动画增强:

在原有粒子流基础上,增加第二层粒子流:
· 金色粒子 = 相生(沿身→智→富→行→心→身顺时针)
· 红色粒子 = 相克(沿行→身→富→心→智→行逆时针)

两种粒子流密度反映当前生/克强度
所有维度分值均衡时 → 金色粒子占主导
某个克关系激活时 → 对应臂的红色粒子增多

中心太极调整:

阳面(白)=家庭综合能量值
阴面(黑)=最低维度分值("短板"提醒)

点击 → 切换家庭/成员视图(保持现有功能)

3.3 克关系状态条(核心提醒)

出现在行星盘下方,每次只显示1条最关键的提醒

优先级排序(从高到低):
1. 透支型克(行克身、身克富、富克心)→ 红色 + 行动建议
2. 预警型克(智克行、心克智)→ 橙色 + 意识引导
3. 平衡态 → 绿色 + 肯定
4. 无触发 → 不显示

状态条模板:

<view class="ke-bar" :class="'ke-' + keStatus" v-if="keMessage">
  <view class="ke-bar-icon">
    <text>{{ keIcon }}</text>
  </view>
  <view class="ke-bar-content">
    <text class="ke-bar-title">{{ keTitle }}</text>
    <text class="ke-bar-desc">{{ keMessage }}</text>
    <view class="ke-bar-action" @click="onKeAction(keAction)">
      <text>{{ keActionText }}</text>
    </view>
  </view>
</view>

各状态的图标和色彩:

类型 status 图标 背景色 例子
透支 overdraw ⚠️ 红橙渐变 行克身·透支
预警 cautious 💡 暖黄渐变 富克心·预判
平衡 balanced 🌟 绿渐变 行身平衡
沉默 normal 不显示

3.4 相生指引 + 推荐动作

根据克关系状态,生成对应的行动建议:

克状态 推荐动作 一键链接
行克身·透支 "建议增加休息类任务" 跳转到创建休息任务
身克富·稀释 "先做一次健康测评" 跳转到健康测评
身克富·透支 "建议减少加班任务" 跳转任务调整
智克行·盲目 "先做一次认知测评再行动" 跳转到DAN测评
智克行·孤独 "建议参加一次亲子活动" 跳转活动列表
富克心·判断 "试试情绪打卡,记录感受" 跳转情绪打卡
心克智·保护 "给孩子一个独立任务" 跳转创建独立任务
平衡态 "保持现状,坚持打卡" 跳转打卡

3.5 成员列表(家庭能量排行)

┌─ 家庭成员 ──────────────────────┐
│  👨 爸爸    80 79 65 72 88      │
│  👩 妈妈    82 85 70 68 90      │
│  👦 小明    75 70 88 85 ...     │
│  👧 小红    65 60 70 75 ...     │
│  📊 家庭平均 78 75 72 75 ...    │
└─────────────────────────────────┘

每个行显示成员名称 + 五维简短数字。点击进入该成员的五维详情。

3.6 与现有关联

现有组件保持:

  • PageBanner(顶部Banner)
  • WuxingSandbox(五维行星盘,增强克/生视觉)
  • AIFloatingAvatar(AI助手)
  • DimensionActivities(活动推荐,相关推荐过滤)
  • DimensionProducts(商品推荐)

需要新增的组件:

  • KeStatusBar — 克关系状态条组件
  • KeActionCard — 相生指引+推荐动作卡片

需要修改的组件:

  • WuxingSandbox — 增加克关系粒子流、状态传递
  • parent-index.vue — 整体重新编排,以五维为核心

四、首页设计(孩子端登录后)

4.1 孩子端原则

  • 更简单、更视觉化 — 孩子不懂文字太多
  • 即时反馈 — 像玩游戏一样看到能量变化
  • 克关系不直接暴露 — 转化为"怪兽"或"挑战"提示

4.2 孩子端首页结构

┌─────────────────────────────────┐
│ [我的能量星球]                    │  ← 简化版五维星盘
│  五个小星球+轨道,分值=星球大小    │
│  转动动画                        │
├─────────────────────────────────┤
│ [今日能量]                        │  ← 大数字
│  🌟 综合能量 78%                  │
├─────────────────────────────────┤
│ [需要关注!] — 最多1条             │  ← 克提醒(儿童版)
│  "你的行动力太强了,身体需要休息!"  │
│  [添加休息任务]                    │
├─────────────────────────────────┤
│ [成长数据]                        │
│  连续打卡 15天 🔥                  │
│  积分 2350 ⭐                     │
├─────────────────────────────────┤
│ [我的任务]                        │  ← 待办事项
│  □ 晨跑30分钟                     │
│  □ 阅读20分钟                     │
├─────────────────────────────────┤
│ [本周排行]                        │
│  家人们的能量排名                  │
└─────────────────────────────────┘

孩子端的"克"提醒翻译:

克状态 孩子端文案
行克身 "你的运动超能力需要充电啦!"
身克富 "身体健康才能赚更多星星✨"
富克心 不直接展示(家长端显示)
心克智 "心情好,学习才会好!"
智克行 不直接展示(家长端显示)

五、能量转化算法细节

5.1 克的系数表(完整)

行克身:
  行 > 75, 身 < 40:   penalty = 0.5 + 0.5 × (身/100),  起点0.5, 身100=1.0
  行 > 60, 身 < 30:   penalty = 0.3 + 0.7 × (身/100),  起点0.3, 身100=1.0

身克富:
  身 < 40, 富 > 60:   penalty = 0.5 + 0.5 × (身/100),  起点0.5, 身100=1.0
  身 < 50, 富 > 身+20: 不扣分,只提醒

智克行:
  智 < 30, 行 > 50:   penalty = 0.6 + 0.4 × (智/100),  起点0.6, 智100=1.0
  智 > 80, 行 < 40:   不扣分,只提醒

富克心:
  富 > 70, 情绪 < 40: penalty = 0.4 + 0.6 × (情绪/100), 起点0.4, 情绪100=1.0
  富 > 60, 包容 < 40: 不扣分,只提醒
  富 > 60, 传承 < 20: 不扣分,只提醒

心克智:
  心 > 70, 智 < 40:   penalty = 0.5 + 0.5 × (智/100),  起点0.5, 智100=1.0
  智 > 70, 心 < 40:   不扣分,只提醒

5.2 生的增益表(完整)

心生身(心→身):
  心 > 60 且 身 < 80:  boost = (心 - 50) / 100 × 10, 上限 = 80 - 身

身生智(身→智):
  身 > 60 且 智 < 80:  boost = (身 - 50) / 100 × 10, 上限 = 80 - 智

智生富(智→富):
  智 > 60 且 富 < 80:  boost = (智 - 50) / 100 × 10, 上限 = 80 - 富

富生行(富→行):
  富 > 60 且 行 < 80:  boost = (富 - 50) / 100 × 10, 上限 = 80 - 行

行生心(行→心):
  行 > 60 且 心 < 80:  boost = (行 - 50) / 100 × 10, 上限 = 80 - 心

5.3 单轮通过的理由

为什么只做一轮不做迭代?

第2轮输出 = 克效(原始) + 生效(克效)
第3轮输出 = 克效(第2轮) + 生效(第2轮)
...

假设第2轮行的分因智克行被调低
第3轮行生心 → 心因行被调低调
第4轮心克智 → 智又因心调低
...

每次迭代都在放大"生"和"克"的波动
多轮后可能导致所有维度收敛到50分(趋同)
或发散到极端(0分/100分)

单轮通过:
· 克只看原始分(最真实的状态反映)
· 生只看克调整后分(一次校准)
· 避免收敛/发散问题
· 结果稳定可预期

六、生克合并后的前端展示逻辑

6.1 每个维度页面的关系图

以"身"页面为例:

┌─ 身 · 维度详情 ──────────────────┐
│                                   │
│  身 78分                          │
│  较上周 +3%                       │
│                                   │
│  ——— 相生关系 ———                  │
│  ❤️ 心 → 🌏 身 (+2分) [心生身]    │
│                                   │
│  ——— 相克关系 ———                  │
│  🌿 行  ⊖  🌏 身 (行克身·预警)    │
│  🌏 身  ⊖  💧 富 (身克富·正常)    │
│                                   │
│  ——— 子维度权重 ———                │
│  · 体质状况    40%  → 68分        │
│  · 运动任务    30%  → 82分        │
│  · 先天体质    30%  → 84分        │
└───────────────────────────────────┘

6.2 前端数据模型

// 从后端返回的 MemberEnergyDTO 扩展
{
  memberId: 1,
  memberType: 'parent',
  name: '爸爸',
  bodyScore: 78,
  mindScore: 75,
  wisdomScore: 65,
  actionScore: 45,
  wealthScore: 82,
  overallScore: 69,

  // 克关系状态(后端计算好)
  restraintStatuses: [
    {
      keType: 'action_body',    // 克类型
      status: 'overdraw',       // overdraw|penalty|cautious|balanced|normal
      title: '行克身·透支',      // 标题
      message: '行动力很强,但身体在报警。适度暂停,是另一种前进',
      action: '/pages/tasks/create-task?category=休息',
      actionText: '添加休息任务'
    }
  ],

  // 生增益明细
  boostDetails: [
    { from: 'mind', to: 'body', boost: 2, type: 'sheng' }
  ],

  // 心的子维度
  heartEmotionStable: 65,
  heartUnderstanding: 70,
  heartLegacy: 0
}

七、修改计划

7.1 后端

# 文件 操作 内容
1 MemberEnergyDTO.java 修改 新增克状态字段、生增益字段、心子维度
2 EnergyService.java 修改 克环校准(5方法) + 生环增益(5方法) + 统一入口
3 EnergyController.java 检查 返回新DTO字段是否需要调整Controller

7.2 前端

# 文件 操作 内容
1 components/KeStatusBar.vue 新建 克关系状态条组件
2 components/KeActionCard.vue 新建 相生指引+推荐动作卡片
3 components/wuxing-sandbox-helpers/render.js 修改 增加克粒子流、相生金色粒子
4 components/wuxing-sandbox.vue 修改 传递克状态、增加克视觉、生+克粒子层
5 pages/index/parent-index.vue 重构 以五维为核心重新编排
6 pages/index/child-index.vue 重构 孩子端简化版

7.3 不做的事

  • 不新建数据库表(克状态和生增益在内存计算)
  • 不改schema.sql和DatabaseInitializer
  • 不改Mapper
  • 不改前端pages.json和路由
  • 不删现有功能(只重新编排和增加)

八、实施顺序

Phase 1(文档+后端算法):
  1. 完善DTO扩展
  2. 实现克环5方法 + 生环5方法
  3. 实现统一入口(第1轮+第2轮+第3轮)
  4. 编译验证

Phase 2(前端组件):
  5. KeStatusBar 组件开发
  6. KeActionCard 组件开发
  7. WuxingSandbox 克/生视觉增强

Phase 3(页面重构):
  8. parent-index.vue 重构
  9. child-index.vue 简化