2026-07-12-wuxing-ke-full-design.md 25 KB

五维相克关系完整设计:三个角度 × 五个克 × 系统实现

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


概述

本文档统一定义五维五行相克关系的三层解读框架,以及每个克关系在能量算法、前端展示、产品推荐上的系统体现。

这是对 2026-06-08-five-dimension-wuxing-philosophy.md 的补充和落地方案。该文档定义了五行哲学框架,本文档定义每个克关系的产品化解读和系统实现。


核心框架:克关系的三层解读

每个"克"关系都包含四个角度,而不是单一的"谁制约谁":

层 含义 作用
角度① 被克方透支 克方过度膨胀,被克方被压制 预警触发——最痛的问题,系统需要警示
角度② 克方不足 克方太弱,被克方盲目发展 引导触发——不扣分但提示方向
角度③ 克方替代被克方 克方本质与被克方冲突,有取代性的行为但没有本质替代 检测触发——检测行为层面的偏斜
角度④ 平衡态 克方与被克方相互制衡,共生 正向标记——理想状态,鼓励维持

克环

五行相克循环:

行(木) ──克──→ 身(土) ──克──→ 富(水) ──克──→ 心(火) ──克──→ 智(金) ──克──→ 行(木)

维度体系总览

五个维度的完整定义

维度 五行 核心 方向
身 土 主动健康——体质、精力、睡眠 内化·生存
智 金 赋能未来——认知能力、逻辑、知识 内化·思辨
富 水 利他创富——金钱、成就、资源 外化·调动
行 木 人际和谐——陪伴在场、关系密度、利他 外化·连接
心 火 大爱相随——情绪稳定、理解包容、传承 内化·情感

维度数据的多角色差异

子维度 成人 孩子
身·体质 任务完成率、健康报告 健康报告overallScore、运动任务完成率
智·认知 学习/培训任务完成率 DAN COG六子分加权
富·金钱/收入 积分总量折算 积分获取效率
富·成就/地位 职称、奖项(待补) 学业成绩(Dan AssessmentResult overallScore)
富·资源网络 推荐团队规模(待补) 活动参与度(待补)
行·陪伴在场 与家人互动任务完成率(待补) 家庭共同任务参与率
行·关系密度 社交活跃度(待补) 活动参与次数(待补)
行·利他行为 推荐/分享行为 分享学习用品、帮助他人(待补)
心·情绪稳定 (暂无数据,回0) 情绪打卡trend + DAN EMI 情绪管理三子分
心·理解包容 (暂无数据,回0) DAN EMI 同理心+社会适应 + 家庭天盘相性
心·传承传递 (暂无数据,回0) (待补:家训阅读、给孩子的信)

克①:行克身(木克土)

本质

行动对身体的制约——运动、户外活动过度会损耗身体(运动损伤、过度疲劳)。

行的本质是"关系、社交、行动";身的本质是"健康、体质、精力"。行克身指:过度社交/活动/行动会透支身体机能。

四层角度

角度 场景 用户画象
①透支型 行高身低:活动狂、社交达人,结果是慢性疲劳、运动损伤 "社交达人"、"深夜下班还去聚会"
②谨慎型 行低身高:宅、不社交,但身体保养得很好 "养生专家"、"宅家'">"但缺少社会连接
③替代型 用"健康管理"替代实际行动——养生焦虑>实际出门活动 "一天测5次血压的手机养生族"
④平衡型 行养身:适度运动、规律社交、身心兼修 "每周运动3次+见2个朋友"的理想状态

系统实现

杠杆

private int applyActionBodyRestraint(int actionScore, int bodyScore, MemberEnergyDTO dto) {
    if (actionScore > 75 && bodyScore < 40) {
        double penalty = 0.5 + 0.5 * (bodyScore / 100.0);
        int adjusted = (int) Math.round(bodyScore * penalty);
        dto.setActionBodyStatus("overdraw");
        dto.setActionBodyMessage("行动力很强,但身体在报警。适度暂停,是另一种前进");
        return Math.min(adjusted, bodyScore);
    }
    if (actionScore > 60 && bodyScore > 60) {
        dto.setActionBodyStatus("balanced");
        dto.setActionBodyMessage("身心兼修,动态平衡");
        return bodyScore;
    }
    if (bodyScore > 70 && actionScore < 30) {
        dto.setActionBodyStatus("cautious");
        dto.setActionBodyMessage("身体底子好,但缺少行动。出门走走,也是养生的一部分");
        return bodyScore;
    }
    dto.setActionBodyStatus("normal");
    return bodyScore;
}

前端展示

身页面顶部状态条:

┌─ 行身关系 ───────────────────────┐
│  🌿 行 78分  |  🌏 身 35分        │
│  ⚠️ 行动力很强,但身体在报警       │
│  适度暂停,是另一种前进            │
└──────────────────────────────────┘

克②:身克富(土克水)

本质

健康对财富的制约——身体是"参赛资格",不是财富的"生产者"(身生智→智生富)。身体出问题,直接消耗财富(医疗开支、收入中断)并削弱创富能力(没有精力追逐机会)。

四层角度

角度 场景 用户画像
①透支型 富高身低:用健康换钱,身体换来的钱迟早还给医院 "996打工人"、"创业过劳"
②稀释型 身高低富:健康正在消耗财富存量 "老病号"、"慢性病患者"
③替代型 用"我在养生"代替"我在赚钱"——养生焦虑过度消费 "保健品囤积狂"、"过度医疗焦虑"
④平衡型 健康是创富底盘:身体好+财富好,双优状态 "精力充沛的创业者"

系统实现

杠杆

private int applyBodyWealthRestraint(int bodyScore, int wealthScore, MemberEnergyDTO dto) {
    if (bodyScore == 0 && wealthScore == 0) {
        dto.setBodyWealthStatus("normal");
        dto.setBodyWealthMessage("");
        return wealthScore;
    }

    // 角度①:透支型——身低但富高,预警不下调
    if (bodyScore < 50 && wealthScore > bodyScore + 20) {
        dto.setBodyWealthStatus("overdraw");
        dto.setBodyWealthMessage("您的健康分较低,当前财富增长可能以健康为代价");
        return wealthScore;
    }

    // 角度②:稀释型——身严重偏低,直接打折
    if (bodyScore < 40) {
        double penalty = 0.5 + 0.5 * (bodyScore / 100.0);
        int adjusted = (int) Math.round(wealthScore * penalty);
        dto.setBodyWealthStatus("penalty");
        dto.setBodyWealthMessage("健康正在拖累您的财富创造力,建议优先改善身体状况");
        return Math.min(adjusted, wealthScore);
    }

    // 角度③:替代型检测——养生行为>>创富行为(待补数据源)

    // 角度④:平衡态
    dto.setBodyWealthStatus("normal");
    if (bodyScore >= 70 && wealthScore >= 60) {
        dto.setBodyWealthMessage("身体是财富的底盘,您处于双优状态");
    } else if (bodyScore >= 70 && wealthScore < 40) {
        dto.setBodyWealthMessage("您的健康基础很好,是启动创富的好时机");
    } else {
        dto.setBodyWealthMessage("");
    }
    return wealthScore;
}

克③:智克行(金克木)

本质

认知对关系的制约——"智"是内化的个人认知能力,"行"是外化的人际连接能力。两者本质冲突:用分析代替共情,用评判代替陪伴,用思考代替行动。

行的核心重新定义为三个子维度:陪伴在场、关系密度、利他行为,"智"与"行"的冲突本质是"分析逻辑"与"同理心人际"之间的天然矛盾。

四层角度

角度 场景 用户画像
①认知孤独型 智高行低:成绩好被孤立,用逻辑与人交往=把朋友当问题解决 "独来独往的学霸"、"太聪明没朋友"
②盲目社交型 行高智低:人缘好但缺方向,容易被带偏 "受同伴影响大的孩子"、"社交但不上进"
③替代型 用"我在思考/分析"代替"我去行动/处关系"——智成了行动的借口 "我在调研竟品所以不拜访客户"
④平衡型 智行并进:有深度认知,也有社交温度 "班干部+成绩好"、"既能独立工作又融入团队"

系统实现

杠杆

private int applyWisdomActionRestraint(int wisdomScore, int actionScore, MemberEnergyDTO dto) {
    // 角度②:盲目社交型——智低行高,行动效率打折
    if (wisdomScore < 30 && actionScore > 50) {
        double penalty = 0.6 + 0.4 * (wisdomScore / 100.0);
        int adjusted = (int) Math.round(actionScore * penalty);
        dto.setWisdomActionStatus("blind");
        dto.setWisdomActionMessage("行动力很强,但有方向会让努力更有效。建议先做一次测评");
        return Math.min(adjusted, actionScore);
    }

    // 角度①:认知孤独型——智高行低,不下调只预警
    if (wisdomScore > 80 && actionScore < 40) {
        dto.setWisdomActionStatus("paralysis");
        dto.setWisdomActionMessage("聪明不等于会相处。朋友不是用逻辑交来的");
        return actionScore;
    }

    // 角度④:平衡型
    dto.setWisdomActionStatus("balanced");
    if (wisdomScore >= 60 && actionScore >= 60) {
        dto.setWisdomActionMessage("知行合一状态,继续保持");
    } else if (actionScore >= 60 && wisdomScore < 50) {
        dto.setWisdomActionMessage("行动力很好,建议增加测评了解方向");
    } else {
        dto.setWisdomActionMessage("");
    }
    return actionScore;
}

克④:富克心(水克火)

本质

财富对"心"三个层面的侵蚀。

"心"的核心是三个独特的内在维度:

维度 含义 方向
心·情绪稳定 遇事不慌、自我调节、不情绪化 内向·稳自己
心·理解包容 理解他人、接纳不同、不轻易评判 内向·懂他人
心·传承传递 家族价值观、生命意义的精神留传 内向·留精神

陪伴在场归"行"(行·陪伴在场),不属于"心"——陪伴是"在不在",心是"在不在状态"。

四层角度

角度 场景 用户画像
①情绪爆发型 富高心低(情绪层):钱壮胆,在外克制回家发泄,家人成出气筒 "外面是好好先生,回家就发脾气"
②评判型 富高心低(包容层):站在财富成就的高度评判他人"不够努力" "成功创业者看不起职场员工"
③替代型 用钱替代情感投入:送礼/报班代替陪伴、红包代替探望 "给孩子一堆课但没时间一起玩"
④平衡型 富养心:用资源换回陪伴时间,财富服务于情感建设 "财务自由用来陪家人旅行"

心的子维度算法

// 心·情绪稳定 = 情绪打卡趋势×50% + DAN EMI情绪管理三子分×50%
private int calcHeartEmotionStable(Long childId, DanAssessmentResult dan) {
    EmotionTrendVO trend = emotionCheckinService.getTrend(childId, "month");
    int checkinScore = safeScore(trend.getAverageMoodScore());

    int danEmotion = 50;
    if (dan != null) {
        int ems = safeScore(dan.getEmotionManagementScore());
        int resilience = safeScore(dan.getResilienceScore());
        int stress = safeScore(dan.getStressCopingScore());
        danEmotion = (ems + resilience + stress) / 3;
    }

    return clamp((int) Math.round(checkinScore * 0.5 + danEmotion * 0.5), 0, 100);
}

// 心·理解包容 = DAN EMI 同理心+社会适应×70% + 家庭天盘相性×30%
private int calcHeartUnderstanding(Long childId, DanAssessmentResult dan, Long familyId) {
    if (dan == null) return 50;
    int empathy = safeScore(dan.getEmpathyScore());
    int social = safeScore(dan.getSocialAdaptabilityScore());
    int danScore = (empathy + social) / 2;

    // 家庭天盘相性(待补数据对接)
    // int tianpanScore = getFamilyCompatibilityAverage(familyId);
    // return clamp((int) Math.round(danScore * 0.7 + tianpanScore * 0.3), 0, 100);

    return clamp(danScore, 0, 100);
}

// 心·传承传递(第一阶段回0占位)
private int calcHeartLegacy(Long childId) {
    return 0;
}

// 心总评分
// 心 = 情绪稳定×0.40 + 理解包容×0.40 + 传承传递×0.20

杠杆

private int applyWealthHeartRestraint(int wealthScore, int heartScore, MemberEnergyDTO dto) {
    int emotionStable = dto.getHeartEmotionStable() != null ? dto.getHeartEmotionStable() : 50;
    int understanding = dto.getHeartUnderstanding() != null ? dto.getHeartUnderstanding() : 50;
    int legacy = dto.getHeartLegacy() != null ? dto.getHeartLegacy() : 50;

    // 从底层往上检测——先看情绪,再看包容,最后看传承
    if (wealthScore > 70 && emotionStable < 40) {
        double penalty = 0.4 + 0.6 * (emotionStable / 100.0);
        int adjusted = (int) Math.round(heartScore * penalty);
        dto.setWealthHeartStatus("eruption");
        dto.setWealthHeartMessage("财富给了底气,也偷走了对家人的耐心。先稳住情绪,再谈其他");
        return Math.min(adjusted, heartScore);
    }

    if (wealthScore > 60 && understanding < 40) {
        dto.setWealthHeartStatus("judgmental");
        dto.setWealthHeartMessage("站在高处久了,可能忘了普通人走路的难处");
        return heartScore;
    }

    if (wealthScore > 60 && legacy < 20) {
        dto.setWealthHeartStatus("materialized");
        dto.setWealthHeartMessage("留给孩子的只有存款,价值观也需要传下去");
        return heartScore;
    }

    if (wealthScore > 70 && heartScore > 65) {
        dto.setWealthHeartStatus("nourished");
        dto.setWealthHeartMessage("您的财富正在滋养家庭情感,这是最好的传承");
        return heartScore;
    }

    dto.setWealthHeartStatus("normal");
    dto.setWealthHeartMessage("");
    return heartScore;
}

富克心的检测优先级

只触发最痛的一层,不堆叠提示:

检测顺序(从下往上):
1. 情绪稳定 < 40 且 富 > 70 → eruption(情绪爆发型)
2. 理解包容 < 40 且 富 > 60 → judgmental(评判型)
3. 传承传递 < 20 且 富 > 60 → materialized(物质替代型)
4. 都没命中 → normal / nourished

克⑤:心克智(火克金)

本质

情感与关爱对理性培养的制约——心盛则智衰。

心的核心是情绪稳定、理解包容、传承传递;智的核心是逻辑、分析、知识积累。两者的冲突是感性对理性的压制。

四层角度

角度 场景 用户画像
①过度保护型 心高智低:凡事替孩子想好做好决定好,孩子没有独立思考机会 "包办型家长"、"直升机父母"
②理性冷淡型 智高心低:成绩好但与家人疏离 "高智商低情商"、"理性不和父母沟通"
③替代型 用"爱"替代"教"——只表扬不批评、只温柔不严格,孩子学不会反思 "赞美教育过度"、"娃碰不得挫折"
④平衡型 心养智:温和坚定+留空间,爱与理性并行 "懂孩子又不过度保护"、"陪伴式教育"

系统实现

private int applyMindWisdomRestraint(int mindScore, int wisdomScore, MemberEnergyDTO dto) {
    // 角度①:心高智低——过度保护压制智慧成长
    if (mindScore > 70 && wisdomScore < 40) {
        double penalty = 0.5 + 0.5 * (wisdomScore / 100.0);
        int adjusted = (int) Math.round(wisdomScore * penalty);
        dto.setMindWisdomStatus("overprotect");
        dto.setMindWisdomMessage("放手让孩子试错,是培养智慧的第一步");
        return Math.min(adjusted, wisdomScore);
    }

    // 角度②:智高心低——不扣智,只提示
    if (wisdomScore > 70 && mindScore < 40) {
        dto.setMindWisdomStatus("cold_wise");
        dto.setMindWisdomMessage("智慧需要温度,不然长大了只会做事不会做人");
        return wisdomScore;
    }

    // 角度④:平衡型
    if (mindScore > 60 && wisdomScore > 60) {
        dto.setMindWisdomStatus("balanced");
        dto.setMindWisdomMessage("爱与理性并行,是最好的教育");
        return wisdomScore;
    }

    dto.setMindWisdomStatus("normal");
    return wisdomScore;
}

统一算法框架

通用杠杆模式

每个克关系用一个统一接口:

public class WuxingRestraintResult {
    private String status;         // 状态标识
    private String message;        // 用户可见消息
    private int adjustedScore;     // 调整后的被克方分值
}

// 在 calcParentEnergy / calcChildEnergy 末尾统一调用
private void applyAllRestraints(MemberEnergyDTO dto) {
    // 行克身
    int bodyAdjusted = applyActionBodyRestraint(
        safeScore(dto.getActionScore()), safeScore(dto.getBodyScore()), dto);
    dto.setBodyScore(bodyAdjusted);

    // 身克富
    int wealthAdjusted = applyBodyWealthRestraint(
        safeScore(dto.getBodyScore()), safeScore(dto.getWealthScore()), dto);
    dto.setWealthScore(wealthAdjusted);

    // 富克心 — 使用心的加权总分
    int heartScore = computeHeartTotal(dto);
    int heartAdjusted = applyWealthHeartRestraint(
        safeScore(dto.getWealthScore()), heartScore, dto);
    dto.setMindScore(heartAdjusted);  // mind对应五行之火

    // 心克智
    int wisdomAdjusted = applyMindWisdomRestraint(
        heartScore, safeScore(dto.getWisdomScore()), dto);
    dto.setWisdomScore(wisdomAdjusted);

    // 智克行
    int actionAdjusted = applyWisdomActionRestraint(
        safeScore(dto.getWisdomScore()), safeScore(dto.getActionScore()), dto);
    dto.setActionScore(actionAdjusted);
}

执行顺序

相克环是环形的,但应用杠杆需要顺序以避免循环依赖。使用上下文已经算好的值:

第1轮计算:所有维度独立算分(不依赖其他维度)
↓
第2轮克杠杆:
  1. 行克身(用行动分支和身体分支)
  2. 身克富(用使用身调后的分支和财富分支)
  3. 富克心(用使用富的调后分支和心的子维度)
  4. 心克智(用使用心的调后分和智的原始分)
  5. 智克行(用使用智的调后分和行的原始分)

注意:克杠杆只在第1轮之后执行一次,不做迭代。因为多轮迭代会导致收敛问题(比如行→身→富→心→智→行,第2轮行的变化又会触发第3轮)。

DTO 扩展

// MemberEnergyDTO.java 新增字段

// ===== 身克富标记 =====
private String bodyWealthStatus;
private String bodyWealthMessage;

// ===== 智克行标记 =====
private String wisdomActionStatus;
private String wisdomActionMessage;

// ===== 富克心标记 =====
private String wealthHeartStatus;
private String wealthHeartMessage;

// ===== 心克智标记 =====
private String mindWisdomStatus;
private String mindWisdomMessage;

// ===== 行克身标记 =====
private String actionBodyStatus;
private String actionBodyMessage;

// ===== 心的子维度 =====
private Integer heartEmotionStable;
private Integer heartUnderstanding;
private Integer heartLegacy;

前端展示设计

状态条通用组件

在每个维度页面的头部,展示该维度涉及的克关系:

页面 展示的克关系
身(pages/body/index.vue) 行克身状态条
智(pages/wisdom/index.vue) 心克智状态条
富(pages/wealth/index.vue) 身克富状态条
行(pages/action/index.vue) 智克行状态条
心(pages/mind/index.vue) 富克心状态条

状态条样式

三种视觉模式:

status 主题色 装饰符号 消息风格
normal 灰 无 不显示(无声)
*透支/预警 琥珀色 ⚠️ 警示语气
*透支/惩罚 红色 🔻 建议语气
*平衡/滋养 品牌色 🌟 肯定语气

template 模式:

<view class="restraint-bar" :class="'status-' + status" v-if="message">
  <view class="restraint-content">
    <text class="restraint-icon">{{ iconMap[status] }}</text>
    <text class="restraint-message">{{ message }}</text>
  </view>
</view>

状态条内容

┌─ 行克身 ────────────────────────┐
│  🌿 行 78分  |  🌏 身 35分       │
│  ⚠️ 行动力很强,但身体在报警      │
└──────────────────────────────────┘
┌─ 身克富 ────────────────────────┐
│  🌏 身 82分  |  💧 富 45分       │
│  💡 健康基础很好,是启动创富的好时机  │
└──────────────────────────────────┘
┌─ 智克行 ────────────────────────┐
│  ⚔️ 智 85分  |  🌿 行 30分       │
│  ⚠️ 聪明不等于会相处              │
└──────────────────────────────────┘
┌─ 富克心 ────────────────────────┐
│  💧 富 75分  |  🔥 心 35分       │
│  ⚠️ 财富给了底气,也偷走了对家人的耐心 │
└──────────────────────────────────┘
┌─ 心克智 ────────────────────────┐
│  🔥 心 75分  |  ⚔️ 智 30分       │
│  ⚠️ 放手让孩子试错,是培养智慧的第一步 │
└──────────────────────────────────┘

产品推荐联动

克关系 → 推荐映射

克关系状态 系统动作 推荐内容
actionBody = overdraw 推荐静养/放松类内容 冥想、瑜伽、轻运动
bodyWealth = overdraw 隐藏新的创富推荐 健康干预、休息
bodyWealth = penalty 推送医疗/康复资源 健康检查、调理方案
wisdomAction = paralysis 推送"行动导向"内容 打卡挑战、户外活动
wisdomAction = blind 推荐测评/学习 认知测评、方向指引
wealthHeart = eruption 推送情绪管理内容 情绪打卡、情绪日记
wealthHeart = judgmental 推送同理心内容 家庭天盘、家庭成员故事
wealthHeart = materialized 推送陪伴任务 家庭互动任务、亲子活动
mindWisdom = overprotect 推荐"放手"内容 让孩子做主任务、独立挑战
mindWisdom = cold_wise 推荐家庭互动 共情训练、陪伴打卡

修改文件清单

# 文件 操作 说明
1 MemberEnergyDTO.java 修改 新增5组克标记、3个心子维度
2 EnergyService.java 修改 新增5个杠杆方法 + 统一调用接口 + 心子维度算法
3 pages/body/index.vue 修改 新增行克身状态条
4 pages/wisdom/index.vue 修改 新增心克智状态条
5 pages/wealth/index.vue 修改 新增身克富状态条(已计划)
6 pages/action/index.vue 修改 新增智克行状态条
7 pages/mind/index.vue 修改 新增富克心状态条 + 心三层展示
8 执行计划 执行 按 2026-07-12-wealth-dimension-redesign.md → 扩展为五克完整实现

不做的事

  • 不改 schema.sql(不新建表)
  • 不改 DatabaseInitializer(无需迁移)
  • 不改 EnergySandboxDTO(家庭聚合不受影响)
  • 不改任何 Mapper
  • 暂不实现"心·传承传递"和"行·陪伴在场/利他行为"的数据源(占位回0)

附录:与富维度重构的关系

本文档(五克完整设计)是 2026-07-12-wealth-dimension-redesign.md 的补充。实际开发时两者按以下优先级执行:

Phase 1: 富维度重构(子维度+身克富杠杆+小程序富页)
Phase 2: 五克完整实现(剩余4个克关系+5个状态条组件)