Просмотр исходного кода

docs: 星座/八字/数字能量引入心维度先天画像体系设计

Xiaogang Liao 2 месяцев назад
Родитель
Сommit
e1e945d497
1 измененных файлов с 462 добавлено и 0 удалено
  1. 462 0
      docs/superpowers/specs/2026-08-28-innate-portrait-mind-dimension-design.md

+ 462 - 0
docs/superpowers/specs/2026-08-28-innate-portrait-mind-dimension-design.md

@@ -0,0 +1,462 @@
+# 星座/八字/数字能量引入心维度 · 先天画像体系设计
+
+**日期**: 2026-08-28
+**状态**: 已确认
+**版本**: v1.0
+
+**关联文档:**
+- [五维能量系统设计](./2026-06-05-five-dimension-energy-design.md) — 五维能量体系
+- [五行哲学体系](./2026-06-08-five-dimension-wuxing-philosophy.md) — 心=火,五行生克
+- [LangGraph 迁移设计](./2026-07-20-langgraph-migration-design.md) — AI 服务架构
+- [用户画像 prompt 设计](./2026-08-24-user-portrait-prompt-design.md) — AI 画像注入
+
+---
+
+## 一、背景与目标
+
+### 1.1 现状
+
+项目已有分散的"传统文化镜像"基础设施,各玄学来源各自有配置表和展示:
+
+| 来源 | 配置表 | 先天分字段 | 服务 |
+|------|--------|-----------|------|
+| 星座 | `zodiac_config` | `mind_base`/`wisdom_base` | `ZodiacAnnualEnergyService` |
+| 八字 | `bazi_config` | `mind_base`/`wisdom_base` | `BaziConfigService` |
+| 血型 | `blood_type_config` | `mind_base`/`wisdom_base` | `BloodTypeConfigService` |
+| 数字能量 | `numsoul_config`(灵数1-9) | — | `FamilyMemberAttributeService.getNumSoulConfig()` |
+
+成员先天属性存于 `family_member_attributes` 表(八字四柱/五行/生肖/血型/`mind_base_score`/`wisdom_base_score`/`behavior_modifier`含灵数)。
+
+已有接口:`/api/mind/traditional/mirror`、`/family-dashboard`、`/compatibility`、`/api/zodiac/energy`、`/api/tianpan/*`。
+
+已有前端:`pages/mind-detail/` 下 `traditional-mirror.vue`、`duo-compatibility.vue`、`family-dashboard.vue`、`index.vue`。
+
+### 1.2 问题
+
+1. **分散**:各玄学来源各自展示,无统一"先天画像"聚合
+2. **数字能量薄弱**:只有灵数1-9基础配置,缺天赋数/生日数/命运数
+3. **先天后天未打通**:`mind_base_score`(先天)与 `energy_balance`(后天)未打通展示成长轨迹
+4. **无 AI 个性化解读**:目前只有 `bazi_reading_template` 模板文案
+5. **管理端不可配置**:各来源权重/启停/文案模板无法配置
+
+### 1.3 目标
+
+在现有基础上**深化/整合**,将星座/八字/数字能量统一为"心维度先天画像"体系:
+
+1. **统一先天画像 + AI 解读**:聚合各来源,AI 主导生成个性化解读
+2. **补强数字能量**:生日数字体系(生命灵数/天赋数/生日数/命运数)
+3. **先天+后天打通**:展示先天起点 → 后天成长轨迹
+4. **管理端可配置化**:各来源权重/启停/AI开关
+
+### 1.4 产品定位(已确认)
+
+**服务于五维能量体系**——星座/八字/数字能量作为心维度先天基础分来源,最终汇入五维能量,强调与后天能量打通、成长轨迹。
+
+### 1.5 AI 定位(已确认)
+
+**AI 主导生成**——先天画像和解读主要由 AI 生成,后端只提供原始数据。AI 服务不可用时降级为模板文案。
+
+---
+
+## 二、架构总览
+
+```
+┌─────────────────────────────────────────────────────────────┐
+│                    数据源(现有,不动)                        │
+│  zodiac_config / bazi_config / blood_type_config /          │
+│  numsoul_config / life_number_relationship /                │
+│  bazi_reading_template                                      │
+└──────────────────────────┬──────────────────────────────────┘
+                           │ 读取
+┌──────────────────────────▼──────────────────────────────────┐
+│          先天画像聚合层(新增 InnatePortraitService)          │
+│  · 聚合八字/五行/星座/血型/灵数/天赋数/命运数                  │
+│  · 计算统一 mind_base_score(各来源加权)                     │
+│  · 数字能量补强(天赋数/生日数/命运数计算)                    │
+└──────────────┬───────────────────────────┬─────────────────┘
+               │ 原始数据                    │ 先天画像
+┌──────────────▼──────────┐   ┌─────────────▼─────────────────┐
+│  LangGraph AI graph     │   │  五维能量体系(现有)           │
+│  (innate_portrait_graph)│   │  mind_base_score → energy_balance│
+│  AI 主导生成解读文案     │   │  先天+后天成长轨迹              │
+└──────────────┬──────────┘   └─────────────┬─────────────────┘
+               │ AI解读                     │ 展示
+┌──────────────▼───────────────────────────▼─────────────────┐
+│              小程序心维度页面(增强)                         │
+│  · 先天画像报告(AI解读)                                    │
+│  · 先天+后天成长轨迹                                         │
+└─────────────────────────────────────────────────────────────┘
+```
+
+---
+
+## 三、数据模型设计
+
+### 3.1 新增表:`innate_portrait_config`(先天画像来源权重配置)
+
+管理端可配置各玄学来源对 `mind_base_score` 的权重、启停开关、AI 解读开关。
+
+```sql
+CREATE TABLE IF NOT EXISTS innate_portrait_config (
+    id BIGINT AUTO_INCREMENT PRIMARY KEY,
+    source_type VARCHAR(20) NOT NULL COMMENT '来源: zodiac/bazi/blood/numsoul',
+    source_name VARCHAR(50) NOT NULL COMMENT '来源名称',
+    weight INT DEFAULT 25 COMMENT '权重(基点,2500=25%)',
+    enabled TINYINT(1) DEFAULT 1 COMMENT '是否启用',
+    ai_enabled TINYINT(1) DEFAULT 1 COMMENT '是否启用AI解读',
+    sort_order INT DEFAULT 0 COMMENT '排序',
+    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
+    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    UNIQUE KEY uk_source (source_type)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='先天画像来源权重配置';
+```
+
+### 3.2 新增表:`innate_portrait_report`(先天画像报告缓存)
+
+AI 解读结果缓存,避免重复调用 LLM。
+
+```sql
+CREATE TABLE IF NOT EXISTS innate_portrait_report (
+    id BIGINT AUTO_INCREMENT PRIMARY KEY,
+    member_id BIGINT NOT NULL COMMENT '成员ID',
+    member_type VARCHAR(10) NOT NULL COMMENT '成员类型: child/parent',
+    family_id BIGINT NOT NULL COMMENT '家庭ID',
+    portrait_json TEXT COMMENT '先天画像数据JSON',
+    ai_reading TEXT COMMENT 'AI解读文案',
+    mind_base_score INT DEFAULT 0 COMMENT '心先天基础分',
+    wisdom_base_score INT DEFAULT 0 COMMENT '智先天基础分',
+    generated_at DATETIME COMMENT '生成时间',
+    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
+    UNIQUE KEY uk_member (member_id, member_type)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='先天画像报告缓存';
+```
+
+### 3.3 新增表:`numsoul_detail_config`(数字能量详细配置)
+
+覆盖所有数字类型(生命灵数/天赋数/生日数/命运数),每个类型每个数字都有解读文案。
+
+```sql
+CREATE TABLE IF NOT EXISTS numsoul_detail_config (
+    id BIGINT AUTO_INCREMENT PRIMARY KEY,
+    number_type VARCHAR(20) NOT NULL COMMENT '类型: life_path/talent/birthday/destiny',
+    number_value INT NOT NULL COMMENT '数字值 1-9 或主数 11/22/33',
+    title VARCHAR(50) COMMENT '称号',
+    keywords VARCHAR(200) COMMENT '性格关键词',
+    mind_advice TEXT COMMENT '心维度成长建议',
+    color_hex VARCHAR(10) COMMENT '代表色',
+    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
+    UNIQUE KEY uk_type_num (number_type, number_value)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数字能量详细配置表';
+```
+
+### 3.4 数字能量计算规则(后端 Service 实现)
+
+从出生日期推导:
+- **生命灵数**(life_path):年月日所有数字相加直至个位(主数 11/22/33 保留)
+- **天赋数**(talent):生命灵数计算过程中化简前的两位数
+- **生日数**(birthday):出生日化简至个位
+- **命运数**(destiny):出生年月日总和化简(简化版,不含姓名)
+
+---
+
+## 四、后端服务层设计
+
+### 4.1 新增 `InnatePortraitService`(先天画像聚合服务)
+
+核心服务,职责:
+1. **聚合先天画像**:从 `family_member_attributes` + 各配置表聚合出完整先天画像(八字/五行/星座/血型/灵数/天赋数/生日数/命运数)
+2. **计算统一 mind_base_score**:按 `innate_portrait_config` 配置的权重,对各来源的 mind_base 加权求和
+3. **数字能量计算**:从出生日期推导生命灵数/天赋数/生日数/命运数
+4. **AI 解读编排**:调用 LangGraph graph 生成解读,结果缓存到 `innate_portrait_report`
+
+```java
+@Service
+public class InnatePortraitService {
+
+    @Resource
+    private FamilyMemberAttributeService familyMemberAttributeService;
+
+    @Resource
+    private InnatePortraitConfigMapper innatePortraitConfigMapper;
+
+    @Resource
+    private InnatePortraitReportMapper innatePortraitReportMapper;
+
+    @Resource
+    private NumSoulDetailConfigMapper numSoulDetailConfigMapper;
+
+    @Resource
+    private AiGateway aiGateway;
+
+    /**
+     * 聚合先天画像 + 计算 mind_base_score
+     */
+    public InnatePortraitVO getInnatePortrait(Long memberId, String memberType) {
+        // 1. 读取 family_member_attributes
+        // 2. 聚合各来源数据(八字/五行/星座/血型/灵数)
+        // 3. 计算数字能量(生命灵数/天赋数/生日数/命运数)
+        // 4. 按权重计算 mind_base_score
+        // 5. 返回完整画像
+    }
+
+    /**
+     * 生成 AI 解读(缓存到 innate_portrait_report)
+     */
+    public InnatePortraitReportVO generateAiReading(Long memberId, String memberType) {
+        // 1. 检查缓存,未过期直接返回
+        // 2. 聚合先天画像
+        // 3. 调用 AiGateway 生成 AI 解读
+        // 4. 缓存结果
+    }
+
+    /**
+     * 数字能量计算
+     */
+    public NumSoulDetailVO calculateNumSoul(Date birthDatetime) {
+        // 生命灵数/天赋数/生日数/命运数
+    }
+
+    /**
+     * 先天+后天成长轨迹
+     */
+    public InnateTrajectoryVO getTrajectory(Long memberId, String memberType, Long familyId) {
+        // 1. 读取先天画像 + mind_base_score
+        // 2. 读取 energy_balance(后天当前能量)
+        // 3. 计算先天 vs 后天的差值/趋势
+        // 4. 结合 AI 解读生成成长建议
+    }
+}
+```
+
+### 4.2 新增 DTO
+
+- `InnatePortraitVO`:完整先天画像(八字/五行/星座/血型/灵数/天赋数/生日数/命运数 + mind_base_score)
+- `NumSoulDetailVO`:数字能量详情(各类型数字 + 配置解读)
+- `InnatePortraitReportVO`:AI 解读报告(画像 + AI 文案 + 分数)
+- `InnateTrajectoryVO`:先天+后天成长轨迹
+
+### 4.3 新增 Controller
+
+`InnatePortraitController`(`/api/mind/innate`):
+- `POST /api/mind/innate/portrait` — 获取先天画像
+- `POST /api/mind/innate/reading` — 生成/获取 AI 解读
+- `POST /api/mind/innate/numsoul` — 获取数字能量详情
+- `POST /api/mind/innate/trajectory` — 获取先天+后天成长轨迹
+
+### 4.4 新增 Mapper
+
+- `InnatePortraitConfigMapper`
+- `InnatePortraitReportMapper`
+- `NumSoulDetailConfigMapper`
+
+---
+
+## 五、AI 解读(LangGraph graph)设计
+
+### 5.1 新增 `innate_portrait_graph`(先天画像解读 graph)
+
+在 `cfc-langgraph/app/graphs/` 新增 `innate_portrait_graph.py`,接收先天画像原始数据,AI 主导生成个性化解读。
+
+```
+┌─────────────┐   ┌──────────────┐   ┌──────────────┐   ┌──────────────┐
+│ 收集画像数据  │ → │ 组装解读Prompt│ → │ LLM生成解读   │ → │ 结构化输出    │
+│ (portrait)  │   │ (prompt)     │   │ (解读文案)    │   │ (JSON)       │
+└─────────────┘   └──────────────┘   └──────────────┘   └──────────────┘
+```
+
+**graph 节点设计**:
+1. **build_prompt**:接收先天画像数据(八字四柱/五行/星座/血型/灵数/天赋数/生日数/命运数),组装解读 prompt(含角色设定:家庭教育/成长陪伴语境)
+2. **generate**:调用 LLM 生成解读(心维度特质 + 成长建议 + 亲子互动建议)
+3. **parse**:解析 LLM 输出为结构化 JSON
+
+**输出结构**:
+```json
+{
+  "mindTraits": "心维度特质描述(基于五行/星座/灵数综合分析)",
+  "strengths": ["先天优势1", "先天优势2"],
+  "growthAdvice": "心维度成长建议",
+  "parentAdvice": "家长互动建议",
+  "wuxingBalance": "五行平衡提示"
+}
+```
+
+### 5.2 新增 FastAPI 端点
+
+在 `app/api/adapter.py` 或新增 `app/api/innate.py`:
+- `POST /api/v1/innate/reading` — 接收先天画像数据,返回 AI 解读
+
+### 5.3 AiGateway 扩展
+
+在 `AiGateway.java` 新增方法:
+```java
+public Map<String, Object> generateInnateReading(Map<String, Object> portrait) {
+    // POST baseUrl + "/api/v1/innate/reading"
+    // 熔断 + fallback(fallback 返回模板文案)
+}
+```
+
+**Fallback 策略**(关键):
+- AI 服务不可用时,降级为 `bazi_reading_template` 模板文案 + `numsoul_detail_config` 静态文案拼接
+- 保证功能可用,AI 是增强不是依赖
+
+### 5.4 Prompt 设计要点
+
+解读 prompt 需:
+- 角色设定:家庭教育成长陪伴师
+- 结合五行哲学(心=火)与五维能量体系
+- 强调"先天特质 + 后天成长"视角
+- 避免宿命论措辞,强调"了解先天特质 → 针对性培养"
+- 输出限定 JSON 结构
+
+---
+
+## 六、先天+后天打通设计
+
+### 6.1 数据流打通
+
+现有五维能量体系用 `energy_balance`(当前能量)+ `energy_log`(流水)。先天基础分(`mind_base_score`)需要与后天能量打通,展示成长轨迹。
+
+**设计思路**:
+- **先天**:`mind_base_score`(0-100)作为心维度的"起点基线"
+- **后天**:`energy_balance`(当前能量值)作为心维度的"当前状态"
+- **成长轨迹**:先天 vs 后天对比,展示"天赋起点 → 后天成长"
+
+### 6.2 新增接口:`POST /api/mind/innate/trajectory`
+
+返回某成员的先天画像 + 后天成长轨迹:
+
+```json
+{
+  "innatePortrait": { "mindBaseScore": 72, "zodiac": "狮子座", "lifeNumber": 3, "..." },
+  "innateDimensionScores": { "body": 65, "mind": 72, "wisdom": 68, "action": 60, "wealth": 55 },
+  "currentEnergy": { "mindBalance": 120, "mindTotalEarned": 350, "..." },
+  "trajectory": {
+    "innateVsCurrent": { "mindInnate": 72, "mindCurrent": 81, "growth": "+9" },
+    "growthTrend": "先天心能量充沛,后天通过情绪打卡/家庭互动持续成长",
+    "advice": "保持当前情绪打卡频率,建议增加家庭共处时间..."
+  }
+}
+```
+
+### 6.3 打通逻辑
+
+`InnatePortraitService.getTrajectory(memberId, memberType, familyId)`:
+1. 读取先天画像 + `mind_base_score`
+2. 读取 `energy_balance`(后天当前能量)
+3. 计算先天 vs 后天的差值/趋势
+4. 结合 AI 解读生成成长建议
+
+### 6.4 展示位置
+
+小程序 `pages/mind-detail/index.vue` 心维度首页,新增"先天画像"卡片:
+- 显示先天心能量基础分 + 后天当前能量分
+- 先天数字能量画像(生命灵数/天赋数等)
+- 点击进入 AI 解读报告页
+
+---
+
+## 七、管理端可配置化设计
+
+### 7.1 新增管理端页面:`InnatePortraitConfig.vue`
+
+在 `cfc-web/src/views/admin/` 新增,管理先天画像来源权重配置:
+
+**功能**:
+- 各来源(星座/八字/血型/数字能量)的权重配置(基点)
+- 启停开关(enabled)
+- AI 解读开关(ai_enabled)
+- 排序
+
+### 7.2 新增管理端页面:`NumSoulDetailConfig.vue`
+
+管理数字能量详细配置(`numsoul_detail_config`):
+
+**功能**:
+- 按数字类型(生命灵数/天赋数/生日数/命运数)筛选
+- 每个数字(1-9 + 主数11/22/33)的称号/关键词/心维度成长建议/代表色
+- 增删改查
+
+### 7.3 新增管理端 Controller
+
+- `InnatePortraitConfigController`(`/api/admin/innate-portrait-config`):list/create/update/delete
+- `NumSoulDetailConfigController`(`/api/admin/numsoul-detail-config`):list/create/update/delete
+
+### 7.4 菜单接入
+
+在管理端菜单(`SysMenuController` / 前端路由)新增入口:
+- 先天画像配置
+- 数字能量配置
+
+---
+
+## 八、前端小程序展示设计
+
+### 8.1 新增页面:`pages/mind-detail/innate-portrait.vue`(先天画像报告页)
+
+展示 AI 解读报告:
+- **头部**:成员头像 + 先天心能量基础分
+- **先天画像**:八字四柱 / 五行能量 / 星座 / 血型 / 数字能量(生命灵数/天赋数/生日数/命运数)
+- **AI 解读**:心维度特质 / 先天优势 / 成长建议 / 家长互动建议
+- **五行平衡**:五行能量条
+
+### 8.2 新增页面:`pages/mind-detail/innate-trajectory.vue`(先天+后天成长轨迹页)
+
+展示成长轨迹:
+- **先天 vs 后天**:心维度先天基础分 vs 当前能量分对比
+- **成长趋势**:趋势图/文案
+- **成长建议**:AI 生成的针对性建议
+
+### 8.3 心维度首页增强:`pages/mind-detail/index.vue`
+
+在现有首页新增"先天画像"入口卡片:
+- 显示先天心能量基础分
+- 点击进入先天画像报告页
+- 显示数字能量画像(生命灵数等)
+
+### 8.4 小程序限制遵守
+
+- 禁止可选链 `?.`(用 `&&` 替代)
+- 禁止 CSS Grid(用 flexbox)
+- 禁止 `:key` 表达式(用方法调用)
+- 禁止直接 `new Date(string)`(用 `parseDate()`)
+- Vue 2 Options API
+
+---
+
+## 九、数据库迁移
+
+在 `DatabaseInitializer.runMigrations()` 新增迁移(编号从 267 开始):
+
+1. **迁移267**:创建 `innate_portrait_config` 表 + 种子数据(4 来源默认权重 25%)
+2. **迁移268**:创建 `innate_portrait_report` 表
+3. **迁移269**:创建 `numsoul_detail_config` 表 + 种子数据(4 类型 × 数字 1-9 + 主数)
+
+同步更新 `schema.sql` 的 CREATE TABLE 定义。
+
+---
+
+## 十、测试策略
+
+### 10.1 后端单元测试
+
+- `InnatePortraitServiceTest`:数字能量计算(生命灵数/天赋数/生日数/命运数)、mind_base_score 加权计算
+- `NumSoulDetailConfigMapperTest`:配置表 CRUD
+
+### 10.2 后端集成测试
+
+- `InnatePortraitControllerTest`:portrait/reading/numsoul/trajectory 接口
+- AI 解读 fallback 测试(AI 不可用时降级模板文案)
+
+### 10.3 前端测试
+
+- 小程序页面渲染测试(先天画像报告页/成长轨迹页)
+- 管理端配置页 CRUD 测试
+
+---
+
+## 十一、非目标(YAGNI)
+
+- 不重构现有 `zodiac_config`/`bazi_config`/`blood_type_config` 表结构
+- 不新增手机号/车牌号等后天数字能量分析
+- 不重构现有天盘/合盘/镜像页面
+- 不引入新的中间件或依赖