日期: 2026-07-12 状态: 设计稿 v1 关联文档: 五克完整设计, 旧富维度计划
"克"在系统中的含义不是惩罚或封路,而是校准和提醒:
| 旧理解 | 新理解 |
|---|---|
| 克=制约/惩罚/扣分 | 克=平衡信号/引导/提醒 |
| 触发即扣分 | 先提醒,持续偏差才微调 |
| 单向负面 | 双向检查——克方太强或被克方太弱都要点 |
| 惩罚性文案 | 建设性文案,给出行动方向 |
克 = 系统在看,在提醒的方向,不是系统在罚,在禁止的方向
| 克关系 | 核心提醒 |
|---|---|
| 行克身 | 行动要在身体允许范围内——"运动社交很好,但身体在报警了" |
| 身克富 | 健康是创富的底盘——"身体是赚钱的本钱,先照看好再去追" |
| 富克心 | 德要配位,财富跟心理承受力要匹配——"财富涨了,心也得跟上" |
| 心克智 | 情绪稳,智力才能发挥——"心平才能静智" |
| 智克行 | 聪明不等于会相处——"人际不是逻辑题" |
五维本质是一套制动与驱动系统:
生 = 油门(驱动、滋养、赋能)
克 = 刹车(校准、平衡、警报)
两者缺一不可:
· 只生不克 → 维度膨胀,系统崩盘
· 只克不生 → 维度萎缩,没有成长动力
· 有生有克 → 动态平衡,持续发展
第1轮:原始分计算(独立算每个维度,互不依赖)
↓
第2轮:克校准(检测5个克关系,只触发最痛一层)
↓
第3轮:生增益(检测5个生关系,上游好则下游小幅提升)
↓
最终分 = (原始分 × 克调整系数) + 生增益
关键原则:单轮通过,不迭代。
因为迭代意味着行→身→富→心→智→行 循环推导,第2轮行的变化触发第3轮,没有收敛终点。
| 克方向 | 触发条件 | 系数 | 信号强度 |
|---|---|---|---|
| 行克身 | 行>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(不打折)
| 生方向 | 触发条件 | 增益值 | 哲学含义 |
|---|---|---|---|
| 身生智 | 身>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 - 被克方);
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;
}
从当前的"仪表盘+操作清单"改为"五维能量为先,数据为辅,操作为后":
┌─────────────────────────────────┐
│ [Banner: 家庭名称 + 综合能量值] │ ← 顶部状态
├─────────────────────────────────┤
│ [五维行星盘 — 五行能量全景] │ ← 核心视觉
│ · 五颗星 = 五个维度 │
│ · 星环半径=维度分值 │
│ · 连线=生克关系(实线=相生,虚线=克)│
│ · 点击维度 → 进入维度详情页 │
├─────────────────────────────────┤
│ [克关系状态条 — 最多显示1条] │ ← 核心提醒
│ 只显示最需要关注的克关系 │
│ "行动力很强,身体在报警" │
├─────────────────────────────────┤
│ [相生指引 + 推荐动作] │ ← 行动引导
│ 基于克关系的行动建议 │
│ "建议增加休息类任务" → 一键添加 │
├─────────────────────────────────┤
│ [成员列表 — 家庭能量排行] │ ← 社交对比
│ 每个成员的五维小图 │
│ 家长/孩子分开显示 │
├─────────────────────────────────┤
│ [快捷数据] │ ← 次要信息
│ 任务完成率 + 积分 + 待办 │
├─────────────────────────────────┤
│ [内容推荐] │ ← 发现内容
│ 活动/商品/文章 │
│ (与当前克关系推荐关联) │
└─────────────────────────────────┘
保留现有的 WuxingSandbox 整体框架,但新增:
克关系视觉化:
身高分——→富(虚线+⚠️ 当身克富激活时)
身低分——→富(实线 正常相生)
激活的克关系在行星盘上用红色虚线 + 闪烁小箭头表示
未激活的克关系用灰色半透明虚线
相生用金色实线 + 流向箭头
相生流向动画增强:
在原有粒子流基础上,增加第二层粒子流:
· 金色粒子 = 相生(沿身→智→富→行→心→身顺时针)
· 红色粒子 = 相克(沿行→身→富→心→智→行逆时针)
两种粒子流密度反映当前生/克强度
所有维度分值均衡时 → 金色粒子占主导
某个克关系激活时 → 对应臂的红色粒子增多
中心太极调整:
阳面(白)=家庭综合能量值
阴面(黑)=最低维度分值("短板"提醒)
点击 → 切换家庭/成员视图(保持现有功能)
出现在行星盘下方,每次只显示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 | — | 不显示 | — |
根据克关系状态,生成对应的行动建议:
| 克状态 | 推荐动作 | 一键链接 |
|---|---|---|
| 行克身·透支 | "建议增加休息类任务" | 跳转到创建休息任务 |
| 身克富·稀释 | "先做一次健康测评" | 跳转到健康测评 |
| 身克富·透支 | "建议减少加班任务" | 跳转任务调整 |
| 智克行·盲目 | "先做一次认知测评再行动" | 跳转到DAN测评 |
| 智克行·孤独 | "建议参加一次亲子活动" | 跳转活动列表 |
| 富克心·判断 | "试试情绪打卡,记录感受" | 跳转情绪打卡 |
| 心克智·保护 | "给孩子一个独立任务" | 跳转创建独立任务 |
| 平衡态 | "保持现状,坚持打卡" | 跳转打卡 |
┌─ 家庭成员 ──────────────────────┐
│ 👨 爸爸 80 79 65 72 88 │
│ 👩 妈妈 82 85 70 68 90 │
│ 👦 小明 75 70 88 85 ... │
│ 👧 小红 65 60 70 75 ... │
│ 📊 家庭平均 78 75 72 75 ... │
└─────────────────────────────────┘
每个行显示成员名称 + 五维简短数字。点击进入该成员的五维详情。
现有组件保持:
需要新增的组件:
KeStatusBar — 克关系状态条组件KeActionCard — 相生指引+推荐动作卡片需要修改的组件:
WuxingSandbox — 增加克关系粒子流、状态传递parent-index.vue — 整体重新编排,以五维为核心┌─────────────────────────────────┐
│ [我的能量星球] │ ← 简化版五维星盘
│ 五个小星球+轨道,分值=星球大小 │
│ 转动动画 │
├─────────────────────────────────┤
│ [今日能量] │ ← 大数字
│ 🌟 综合能量 78% │
├─────────────────────────────────┤
│ [需要关注!] — 最多1条 │ ← 克提醒(儿童版)
│ "你的行动力太强了,身体需要休息!" │
│ [添加休息任务] │
├─────────────────────────────────┤
│ [成长数据] │
│ 连续打卡 15天 🔥 │
│ 积分 2350 ⭐ │
├─────────────────────────────────┤
│ [我的任务] │ ← 待办事项
│ □ 晨跑30分钟 │
│ □ 阅读20分钟 │
├─────────────────────────────────┤
│ [本周排行] │
│ 家人们的能量排名 │
└─────────────────────────────────┘
孩子端的"克"提醒翻译:
| 克状态 | 孩子端文案 |
|---|---|
| 行克身 | "你的运动超能力需要充电啦!" |
| 身克富 | "身体健康才能赚更多星星✨" |
| 富克心 | 不直接展示(家长端显示) |
| 心克智 | "心情好,学习才会好!" |
| 智克行 | 不直接展示(家长端显示) |
行克身:
行 > 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: 不扣分,只提醒
心生身(心→身):
心 > 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 - 心
为什么只做一轮不做迭代?
第2轮输出 = 克效(原始) + 生效(克效)
第3轮输出 = 克效(第2轮) + 生效(第2轮)
...
假设第2轮行的分因智克行被调低
第3轮行生心 → 心因行被调低调
第4轮心克智 → 智又因心调低
...
每次迭代都在放大"生"和"克"的波动
多轮后可能导致所有维度收敛到50分(趋同)
或发散到极端(0分/100分)
单轮通过:
· 克只看原始分(最真实的状态反映)
· 生只看克调整后分(一次校准)
· 避免收敛/发散问题
· 结果稳定可预期
以"身"页面为例:
┌─ 身 · 维度详情 ──────────────────┐
│ │
│ 身 78分 │
│ 较上周 +3% │
│ │
│ ——— 相生关系 ——— │
│ ❤️ 心 → 🌏 身 (+2分) [心生身] │
│ │
│ ——— 相克关系 ——— │
│ 🌿 行 ⊖ 🌏 身 (行克身·预警) │
│ 🌏 身 ⊖ 💧 富 (身克富·正常) │
│ │
│ ——— 子维度权重 ——— │
│ · 体质状况 40% → 68分 │
│ · 运动任务 30% → 82分 │
│ · 先天体质 30% → 84分 │
└───────────────────────────────────┘
// 从后端返回的 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
}
| # | 文件 | 操作 | 内容 |
|---|---|---|---|
| 1 | MemberEnergyDTO.java |
修改 | 新增克状态字段、生增益字段、心子维度 |
| 2 | EnergyService.java |
修改 | 克环校准(5方法) + 生环增益(5方法) + 统一入口 |
| 3 | EnergyController.java |
检查 | 返回新DTO字段是否需要调整Controller |
| # | 文件 | 操作 | 内容 |
|---|---|---|---|
| 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 |
重构 | 孩子端简化版 |
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 简化