阶段: 设计提案 v1.2 日期: 2026-06-01 状态: Phase A ✅ (P0 4篇) | Phase B ✅ (A2+E+D1) | 测试 本地21/21 ✅ Dify21/21 ✅ 目标: 满足数字能量学智能体 Phase 1 AI 解读全部需求
| 维度 | 值 |
|---|---|
| 平台 | Dify v1.11.4 |
| 知识库 ID | 3ff939b3-8686-44f6-8ef5-65b1e53b55d3 |
| Embedding | BAAI/bge-m3 |
| 文档数 | 28 篇知识文档 (21原 + 4P0新 + 3P1拆分/合并) |
| 总字数 | 194,067 words |
| 组织方式 | 五层架构:A(位置) / B(能量组合) / C(分析维度) / D(递进) / E(补充) |
当前组织方式(按知识主题分类)适合人类查阅,但不适合 AI RAG 检索:
| 场景 | 当前问题 |
|---|---|
| AI 解读主性格 | "主性格=7"需从 生命灵数1-9号性格解析.md 检索,但该文档混合了天赋数、空缺数、九宫格等内容 |
| AI 分析财富格局 | 需同时检索八星能量(天医财星)、组合递进、24位置含义 —— 散落在不同文档 |
| AI 识别组合对 | 三角能量盘中相邻位置形成八星组合对,当前无文档解释如何在三角形中识别这些组合 |
| 用户点击数字 | US-1.4 要求显示"该位置含义+Tabs",当前无文档定义每个位置(A-X)的含义 |
| 维度映射 | 事业↔延年、财富↔天医、感情↔六煞 —— 无系统化的分析维度手册 |
数字能量学知识库 V2 (单一知识库)
│
├─ [A] 位置含义体系 (Position Meaning)
│ ├── A1 能量盘24位置详解 *NEW
│ └── A2 主性格数字1-9+卓越数深度解读 *RESTRUCTURE
│
├─ [B] 能量与组合分析 (Energy & Combo Analysis)
│ ├── B1 八星数字能量完整参考 (现有)
│ ├── B2 三角能量盘组合对判读规则 *NEW
│ └── B3 联合密码详解 (现有)
│
├─ [C] 分析维度和实战 (Analysis Dimensions)
│ ├── C1 数字能量分析维度手册 *NEW
│ ├── C2 五区三组分析指南 *NEW
│ └── C3 数字0与5的特殊作用 (现有)
│
├─ [D] 生命周期与流年 (Life Cycle)
│ ├── D1 生命数组合递进能量 (现有合并)
│ └── D2 流年运势解读 *PLANNED
│
└─ [E] 补充参考 (Suppl. References)
├── E1 生命灵数九宫格解析 (现有)
└── E2 老板管理策略系列 (现有)
| 编号 | 文档名 | 层级 | 状态 | 说明 |
|---|---|---|---|---|
| A1 | 能量盘24位置详解.md (462行) |
A | P0 ✅ | 24位置含义速查 |
| B2 | 三角能量盘组合对判读规则.md (465行) |
B | P0 ✅ | 三角形中识别八星组合 |
| C1 | 数字能量分析维度手册.md (585行) |
C | P0 ✅ | 事业/财富/感情/健康映射 |
| C2 | 五区三组分析指南.md (434行) |
C | P0 ✅ | 五区三组交叉分析 |
| A2 | 主性格数字深度解读.md (606行) |
A | P1 ✅ | 1-9/11/22/33 深度解读(拆分自原1-9号解析) |
| E | 天赋数空缺数与数字关联.md (111行) |
E | P1 ✅ | 天赋数速查+空缺数挑战(拆分后剩余) |
| D1 | 生命数1组合递进能量.md (210行) |
D | P1 ✅ | 4篇生命数1合并为1篇递进解析 |
| 编号 | 文档名 | 必要性 | 优先级 |
|---|---|---|---|
| A1 | 能量盘24位置详解.md |
US-1.4 数字点击含义的数据源,Workflow/Chatflow 的位置上下文 | P0 |
| B2 | 三角能量盘组合对判读规则.md |
AI 识别三角形中相邻位置的八星组合,是五区/财富/事业解读的核心规则 | P0 |
| C1 | 数字能量分析维度手册.md |
事业/财富/感情/健康维度映射,AI "知其然也知其所以然"的推理骨架 | P0 |
| C2 | 五区三组分析指南.md |
五区解读(主性格/左区/右区/父源/母源)+ 三组年龄阶段(21-40/41-60/61+)的交叉分析方法论 | P0 |
| 操作 | 原文档 | 执行结果 | 说明 |
|---|---|---|---|
| 拆分 | 生命灵数1-9号性格解析.md (707行) |
→ A2 主性格深度解读 (606行) + E 天赋数空缺数 (111行) | 解析1-9性格内容归A2;天赋数/空缺数/九宫格剩余归E;原文档保留不动 |
| 合并 | 生命数1的10-1/28-10-1/37-10-1/46-10-1.md (4篇) |
→ D1 生命数1组合递进能量 (210行) | 合并为单篇递进解析,RAG统一入口,原4篇保留不动 |
定位:US-1.4 的"数字点击查看含义"的数据源,也是 AI 理解每个位置的参考手册。
结构设计:
---
title: 能量盘24位置详解
tags: [位置, 能量盘, A-X, 计算规则, 含义]
---
# 能量盘24位置详解
## 一、位置命名总表(A-X)
(含字母、公式、中文名、年龄区间、视觉层级)
## 二、输入层(A-H):生日原始数字
(A-H 每个位置的字符说明 + 典型含义)
## 三、内部计算层(I-O)
### 3.1 底部四能量(I, J, K, L)
### 3.2 中层综合数(M, N)
### 3.3 主性格数(O)
## 四、外部三组(P-X)
### 4.1 左侧组 P/Q/R(21-40岁)
### 4.2 顶部组 V/W/X(41-60岁)
### 4.3 右侧组 S/T/U(61+岁)
## 五、位置快速查询表
(表格:每个位置一行 → 字母/名称/公式/年龄/含义关键词/关联维度)
每个位置条目包含:
示例条目:
### O — 主性格数
| 属性 | 值 |
|------|-----|
| **公式** | reduce(M+N) |
| **中文名** | 主性格数 |
| **视觉位置** | 三角形最顶层 |
| **核心含义** | 一个人与生俱来的核心性格特质、人生使命、天赋方向 |
定位:AI 在三角形能量盘中识别八星组合对的方法论。
为什么要单独写: 三角形能量盘的组合对识别不同于手机号码判读。在三角形中,相邻位置的数字两两配对形成八星组合,但并非所有相邻都产生有意义的关系。
结构设计:
---
title: 三角能量盘组合对判读规则
tags: [组合对, 八星, 三角形, 判读]
---
# 三角能量盘组合对判读规则
## 一、三角形中的组合对概述
(三角形能量盘中哪些相邻位置形成有意义的八星组合)
## 二、横向组合对(同层左右相邻)
- I-J 月日线(父源区)
- K-L 年份线(母源区)
- M-N 中层综合(青年-晚年)
- P-Q / S-T / V-W 外部子组合
## 三、纵向组合对(跨层上下连接)
- I-M / J-M / K-N / L-N
- M-O / N-O
## 四、斜向组合对
- 三角斜边上的特殊关系
## 五、组合对解读优先级
(哪些组合对先解读,哪些作为辅助)
## 六、组合对 → 分析维度映射
(如何由组合对推导事业/财富/感情/健康结论)
定位:AI 解读的核心推理骨架——什么数字组合对应什么生活维度。
结构设计:
---
title: 数字能量分析维度手册
tags: [维度, 事业, 财富, 感情, 健康, 推理]
---
# 数字能量分析维度手册
## 一、维度全景图
(八星 → 生活维度的核心映射)
## 二、事业维度(延年主导)
### 2.1 延年星与事业格局
### 2.2 延年+天医(事业带财)
### 2.3 延年+生气(事业贵人)
### 2.4 延年+五鬼(事业变动)
### 2.5 主性格数字的事业倾向
## 三、财富维度(天医主导)
### 3.1 天医星与财富格局
### 3.2 天医+延年(稳健增长)
### 3.3 天医+生气(人脉变现)
### 3.4 天医+绝命(冒险求财)
### 3.5 财富能量等级判断
## 四、感情/人际关系维度(六煞主导)
### 4.1 六煞星与感情模式
### 4.2 六煞+天医(感情带财)
### 4.3 六煞+延年(感情理智)
### 4.4 主性格数字的感情倾向
## 五、健康维度(绝命+五鬼主导)
### 5.1 绝命与心血管/行动力
### 5.2 五鬼与精神/睡眠
### 5.3 六煞与情绪/免疫
## 六、综合判读框架
(多维度交叉分析的推理顺序)
定位:AI 进行五区与三组交叉分析的方法论。
---
title: 五区三组分析指南
tags: [五区, 三组, 能量盘结构, 区域分析, 交叉分析, 年龄阶段]
---
# 五区三组分析指南
## 一、五区总览
(主性格区/左区/右区/父源区/母源区的定义与含义)
## 二至五、各区详解
(主性格区O点的核心地位、左区I-J-M的能量路径、右区K-L-N的格局分析、父源vs母源对比)
## 六、三组人生阶段分析
(左侧组21-40岁、顶部组41-60岁、右侧组61+岁)
## 七、五区三组交叉分析方法
(五区看"当下本质" + 三组看"时间发展" → 完整能量盘解读)
| 文档 | 原因 |
|---|---|
八星数字能量完整参考.md |
核心参考,结构清晰 |
联合密码详解.md |
干货集中,693 行适中 |
数字0与5的特殊作用.md |
专题文档,RAG 效果好 |
生命灵数1-9号性格解析.md(拆后剩余) |
天赋数、空缺数、九宫格补充 |
生命灵数九宫格连线与空缺数解析.md |
专题文档 |
1-9号老板管理策略.9篇 |
实战应用,虽非核心但可保留 |
141319数字组合能量解析.md |
财富案例,保留 |
生命数组合递进.4+1篇 |
合并为 D1 后保留 |
| 当前 | 合并为 | 原因 |
|---|---|---|
生命数1的10-1/28-10-1/37-10-1/46-10-1.md (4篇) |
D1 生命数1组合递进能量.md (单篇) |
生命数1 的 4 个组合是一体递进关系,合为 1 篇便于完整检索 |
生命数2-9组合递进解析.md (108KB 超大) |
D1 生命数通用组合递进能量.md |
控制单篇大小,拆分为多篇或保留精简版 |
| 文档 | 分割方案 |
|---|---|
生命灵数1-9号性格解析.md (707行, 24KB) |
→ A2.1 主性格1-9深度解读 (聚焦 O 位,AI 用) + E 剩余内容 (天赋数/空缺数/九宫格) |
| 配置项 | 推荐值 | 当前值 | 备注 |
|---|---|---|---|
| 检索模式 | 混合检索 (Hybrid) | hybrid_search ✅ | 向量 + 全文搜索 |
| Top-K | 10 | 10 ✅ (原6→已调优) | 实测 top_k=6 时 A2 主性格在部分查询中排第8,增至 10 确保覆盖 |
| 相似度阈值 | 0.5 (待调优) | 已启用, threshold=0.5 | 因 rerank 未实际工作(见下文),当前暂不提高阈值 |
| Chunk 大小 | 500-800 tokens | Dify 默认 | 默认约 500 tokens,可接受 |
| Chunk 重叠 | 50-100 tokens | Dify 默认 | 默认约 50 tokens,可接受 |
⚠️ 重要发现: Rerank 模型未配置 — Dify KB
reranking_model的reranking_provider_name和reranking_model_name均为null。这意味着 rerank 虽在配置中启用,但实际未执行真正的语义重排序。当前采用weighted_score模式 (BM25 + 向量加权)。影响: BM25 关键词权重偏高,文件名含查询词的文档易占据 top_k 前列(如"7号员工管理"排在"主性格7号深度解读"之前)。
解决: 需在 Dify 控制台 → 模型供应商 → 配置 Rerank 模型 (如
BAAI/bge-reranker-v2-m3)。配置后 KB 会自动启用语义重排序,大幅缓解关键词偏差。
每篇文档头部添加统一 YAML front-matter:
tags:
- 位置: [输入层, 内部层, 外部组, 五区, 主性格]
- 数字: [1,2,3,4,5,6,7,8,9,11,22,33]
- 星曜: [天医, 生气, 延年, 伏位, 绝命, 五鬼, 六煞, 祸害]
- 维度: [事业, 财富, 感情, 健康, 性格, 天赋]
- 用途: [解读, 判读规则, 参考, 实战]
- 优先级: [P0, P1, P2]
Dify v1.11.4 支持文档级 metadata,可在 Workflow 中通过 knowledge_filter 节点按 tag 筛选。
用户输入 (chart_data)
│
▼
[Knowledge Retrieval Node 1: 位置含义]
├─ 查询:"主性格数字 {O} 的性格特质、优势、挑战"
└─ filter: tags 包含 ["位置:主性格"]
│
▼
[Knowledge Retrieval Node 2: 组合对]
├─ 查询:"位置 {I},{J},{M} 形成的八星组合分析"
└─ filter: tags 包含 ["用途:判读规则"]
│
▼
[LLM Node: 综合解读]
├─ context: chart_data + KB results
└─ output: 结构化解读 (sections)
│
▼
[END: 返回解读结果]
用户提问: "我的财富运势如何?"
│
▼
[Knowledge Retrieval Node]
├─ 查询:结合 chart_data 生成 KB 查询
│ e.g. "主性格{O}的天医星组合与财富格局"
└─ filter: tags 包含 ["维度:财富"]
│
▼
[LLM Node (with System Prompt)]
├─ System: 已有 1-9 基础含义 + KB 检索结果
└─ Memory: 保留最近 6 轮对话
| 当前做法 | 优化后 | 效果 |
|---|---|---|
| 一次检索全部 KB | 分维度多次检索 (Workflow 多知识库节点) | 每次检索针对性更强,减少噪音 |
| 无 metadata 过滤 | 按 tag 过滤知识范围 | 检索精度提升 30-50% |
| Chatflow 仅靠 system prompt | 动态注入 KB 检索结果 | 解读深度显著提升,减少幻觉 |
| 步骤 | 产出 | 工作量 |
|---|---|---|
1. 撰写 能量盘24位置详解.md |
1 篇 × ~300 行 | ✅ 已完成 |
2. 撰写 数字能量分析维度手册.md |
1 篇 × ~400 行 | ✅ 已完成 |
3. 撰写 三角能量盘组合对判读规则.md |
1 篇 × ~300 行 | ✅ 已完成 |
3.5 撰写 五区三组分析指南.md |
1 篇 × ~400 行 | ✅ 已完成 |
| 4. 导入 4 篇新文档到 Dify KB | 4 篇 → Dify 索引 | ✅ 已完成 |
| 5. 更新知识体系总纲导航 | 总纲扩展 → 第二部分分析指南 | ✅ 已完成 |
| 步骤 | 产出 | 状态 |
|---|---|---|
1. 重构 生命灵数1-9号性格解析.md |
拆分 → A2 (606行) + E (111行) | ✅ 已完成 |
| 2. 合并生命数组合递进系列(4→1 篇) | D1生命数1组合递进能量.md (210行) |
✅ 已完成 |
| 3. 导入 Dify,配置 metadata 标签 | 新增 A2/E/D1 共 3 篇至 Dify | ✅ 已完成 |
| 步骤 | 产出 | 工作量 |
|---|---|---|
| 1. 调优 Dify 检索参数(Top-K/阈值/Chunk 大小) | 配置文档 | 1-2 轮调优 |
| 2. A/B 测试解读质量(有 KB vs 无 KB) | 质量对比报告 | 持续 |
| 3. 扩充流年运势、手机号判读等专题 | 新增 2-3 篇 | 按需 |
| 文档层 | 覆盖文档 | 查询数 | 示例 |
|---|---|---|---|
| A (位置含义) | A1 | 3 | "O位置含义"、"P位置计算" |
| A (主性格) | A2 | 4 | "7号深度解读"、"11卓越数"、"3号职业" |
| B (组合对) | B2 | 3 | "M,N天医星"、"横向纵向组合对" |
| C (分析维度) | C1 | 3 | "天医财富维度"、"延年事业" |
| C (五区三组) | C2 | 3 | "父源区位置"、"交叉分析" |
| D (递进能量) | D1 | 2 | "28-10-1递进"、"46-10-1务实" |
| E (补充参考) | E | 3 | "天赋数速查"、"空缺数挑战" |
| 综合 | A2 | 1 | "主性格6号感情事业" |
| 模式 | 通过 | 失败 | 通过率 |
|---|---|---|---|
| 本地 RAG (numpy, 798 chunks) | 21 | 0 | 100% |
| Dify API (hybrid, top_k=10) | 21 | 0 | 100% |
reranking_model_name 为 null,当前仅使用加权混合 (BM25+vector)。BM25 权重偏高导致文件名含关键词的文档(如"员工管理"系列)排在主性格文档之前。审查发现 KB 中 A1 和 B2 使用不同的维度分类:
| A1 位置含义维度 | B2 组合对分析维度 | 冲突说明 |
|---|---|---|
| 情感·家庭·安全感·潜意识 | 情感 | A1 拆分更细,B2 一个标签概括 |
| 行动·意志·事业·领导力 | 事业 | 概念方向一致,命名不同 |
| 机遇·环境·早年发展 | 社交/贵人运 | 覆盖范围不同 |
| 智慧·精神·晚年运势 | 健康/智商 | A1 重精神,B2 拆分健康+智商 |
| 性格核心·自我认知 | — | A1 有,B2 无对应 |
| — | 财富 | B2 有,A1 无独立财富维度 |
| 维度 | 别名 | 覆盖区域 | 使用场景 |
|---|---|---|---|
| 性格 (Character) | 自我认知、核心特质 | A1: 性格核心·自我认知 / B2: O 位解读 | 默认 Tab 1 |
| 事业 (Career) | 领导力、行动、成就 | A1: 行动·意志·事业·领导力 / B2: 事业 | 用户问事业 |
| 财富 (Wealth) | 财运、天医 | A1: (散布在各区) / B2: 财富 | 用户问财富 |
| 情感 (Emotion) | 感情、家庭、人际关系 | A1: 情感·家庭·安全感 / B2: 情感 | 用户问感情 |
| 健康 (Health) | 身体、精神、活力 | A1: 智慧·精神 / B2: 健康 | 用户问健康 |
| 社交 (Social) | 人脉、贵人、合作 | A1: 机遇·环境 / B2: 社交/贵人运 | 用户问人际 |
| 天赋 (Talent) | 潜能、学习、成长 | A1: (E 类补充) / B2: 智商 | 用户问天赋 |
推荐: 在后续 Phase 中更新 A1 和 B2 的 frontmatter tags,统一使用上述 7 维度标签,便于 Chatflow metadata 过滤。
US-1.4 Tab 2(特征)和 Tab 3(建议)需要"该数字在该位置的具体描述"(如 O=7 代表分析力强),但当前 KB 仅分别提供:
KB 设计采用 AI 组合策略,而非预写 216 个 (24位置×9数字) 组合:
用户点击 O 位置数字 7
│
▼
KB 检索节点 1 (位置含义)
└─ tags: 位置:主性格
└─ chunks: O 位置的核心含义
│
▼
KB 检索节点 2 (数字含义)
└─ tags: 数字:7
└─ chunks: 7 号人的性格、优势、挑战
│
▼
LLM 自动组合
└─ "O 位置代表核心性格" + "7 号人分析力强"
└─ → "O=7 代表追求真理的分析者"
| 方案 | 工作量 | 灵活性 |
|---|---|---|
| 预写 216 组合 | 极大 (216 条) | 固定,难维护 |
| AI 组合 (A1+A2) | 极小 (7 篇文档) | 灵活,AI 可泛化 |
Tab 3 建议通过 LLM 基于以下 KB 内容推理生成:
LLM 将以上信息合并为 3-5 条具体建议,不依赖预写内容。
吉凶指示由后端基于以下规则计算,无需 KB 内容:
Section 11 描述了 AI 组合策略(A1+A2)的概念方案,但未明确以下关键设计要素:
| 缺失项 | 影响 |
|---|---|
| Dify 选型(Chatflow vs Workflow vs 直接 KB API) | 后端开发者不知道应创建/调用哪种 Dify 应用 |
| API 端点设计 | 前端开发者不知道调用哪个接口获取面板内容 |
| LLM 提示词 | Tab 2(A1+A2 合成)和 Tab 3(建议生成)的具体 prompt 未定义 |
| 质量保障机制 | 无重试、降级、校验策略,生产环境不可靠 |
本节填补上述空白,为后端开发者提供可实现的完整设计方案。
比较三种方案后推荐 Dify Workflow:
| 方案 | 优点 | 缺点 | 结论 |
|---|---|---|---|
| A: 扩展现有 Chatflow | 无需新建应用 | Chatflow 为多轮对话设计;接收结构化 JSON 输出需复杂 prompt;与通用 Q&A 共享上下文易冲突 | ❌ |
| B: 新建 Dify Workflow ✅ | 独立目的;结构化 JSON 输入输出;支持并行 KB 检索;清晰可控 | 需在 Dify 控制台创建新应用 | ✅ 推荐 |
| C: 直接 KB API + 后端组装 | 无需 Dify 应用 | 后端需两次往返(KB 检索 + LLM 调用);监控分散;实现复杂度高 | ❌ |
选择 B 的理由:Workflow 支持并行 KB 检索节点(同时查 A1 和 A2)、输出结构化 JSON、单次 HTTP 调用即可完成全部 3 个 Tab 的内容生成,与现有 invokeWorkflow() 方法模式一致。
用户点击三角图 O 位置数字 7
│
▼
前端 POST /api/position/detail
{ "chartRecordId": 123, "position": "O", "digit": 7 }
│
├─ 后端:验证能量盘归属 → 计算吉凶(Item 8)→ 检测相邻组合(Item 9)
└─ ChartController → DifyService.invokeWorkflow(inputs)
│
▼
Dify Workflow "位置详情面板"
├─ KB 检索 1 → A1: O 位置含义
├─ KB 检索 2 → A2: 数字 7 性格特征
└─ LLM 生成 → JSON { tab1, tab2, tab3 }
│
▼
后端合并响应:
{
"tab1": "主性格:代表核心性格特质、人生使命",
"tab2": "O=7 代表分析力强、追求真理",
"tab3": "1. 避免过度分析…\n2. 多与他人交流…",
"auspicious": "吉数 ★★★★☆",
"comboInfo": null // 或 "与 X 形成 XX 组合"
}
输入变量:
| 变量 | 类型 | 必填 | 说明 | 来源 |
|---|---|---|---|---|
position_letter |
String | 是 | 位置字母 A-X | 前端传入 |
position_name |
String | 是 | 中文名(如"主性格数") | 后端从 chart_data 映射 |
digit |
Integer | 是 | 该位置数字 (0-9/11/22/33) | 后端从 chart_data 读取 |
KB 检索节点(并行):
| 节点 | 检索内容 | Query 模板 | Top-K |
|---|---|---|---|
| KB 检索 1 | A1 位置含义 | {position_name} {position_letter} 含义 能量 公式 |
3 |
| KB 检索 2 | A2 数字特征 | 数字 {digit} 性格 特征 优势 挑战 成长 |
3 |
两个节点均使用知识库 3ff939b3-8686-44f6-8ef5-65b1e53b55d3,混合检索模式。在 Dify Workflow 画布中,两个检索节点并行连接至 LLM 节点。
LLM 节点:
| 参数 | 值 |
|---|---|
| Model | Claude 3.5 Sonnet(同 Chatflow) |
| Temperature | 0.5(结构化输出需稳定性) |
| Max Tokens | 1000 |
System Prompt(精确版):
你是一个数字能量学专家。请根据以下知识库内容,为能量盘位置的详情面板生成内容。
## 位置信息
- 字母:{position_letter}
- 名称:{position_name}
- 数字:{digit}
## 位置含义(来自知识库 A1)
{position_kb_content}
## 数字特征(来自知识库 A2)
{digit_kb_content}
## 任务
请生成以下 3 项内容,以 JSON 格式返回:
1. tab1(含义):该位置的核心能量含义(1-3句话)
2. tab2(特征):数字{digit}在{position_name}位置的具体性格/运势描述。
必须将位置能量与数字能量自然融合,输出类似"O=7 代表分析力强、追求真理"的具体描述。
避免纯数字通用描述(如"7 号人是探索者"),需体现"在{position_name}位置时的独特表现"。
3. tab3(建议):3-5条注意事项和提升建议,每条 10-30 字,具体可操作。
## 输出格式
{"tab1":"...","tab2":"...","tab3":"..."}
注意:输出必须是合法 JSON,不包含 markdown 代码块标记。
Workflow 示意图:
START
│
├── KB 检索 1(A1 位置含义)
│
├── KB 检索 2(A2 数字特征)
│
└── LLM 生成 ──→ END(JSON)
端点: POST /api/position/detail
Request:
{
"chartRecordId": 123,
"position": "O",
"digit": 7
}
Response:
{
"tab1": "主性格:代表一个人与生俱来的核心性格特质、人生使命、天赋方向",
"tab2": "O=7 代表分析力强、追求真理。7号能量在性格核心位置表现为深度思考者...",
"tab3": "1. 避免过度分析导致行动迟缓\n2. 多与他人交流想法...\n3. 注意平衡思考与实践",
"auspicious": "吉数 ★★★★☆",
"comboInfo": null
}
职责划分:
| 组件 | 职责 |
|---|---|
| ChartController | 创建端点、验证权限、获取 chart_data、映射 position_name |
| CalculatorService | 计算吉凶(Item 8)、检测相邻组合(Item 9) |
| DifyService | 调用 Workflow getPositionDetail()、解析 JSON、降级处理 |
| Dify Workflow | KB 检索 + LLM 生成 3 Tab 内容 |
| 前端 | 调用 API、渲染 3 Tab 面板 |
DifyService.java 新增方法:
public PositionDetailResponse getPositionDetail(String positionLetter, int digit, String positionName) {
if (isMockMode()) {
return generateMockPositionDetail(positionLetter, digit, positionName);
}
Map<String, Object> inputs = new HashMap<>();
inputs.put("position_letter", positionLetter);
inputs.put("position_name", positionName);
inputs.put("digit", digit);
try {
String result = invokeWorkflow(inputs, "system");
return parsePositionDetail(result);
} catch (Exception e) {
return generateMockPositionDetail(positionLetter, digit, positionName);
}
}
DTO 定义:
public class PositionDetailResponse {
public String tab1; // 位置含义
public String tab2; // 数字+位置特征
public String tab3; // 建议
}
| 故障场景 | 处理 | 用户可见 |
|---|---|---|
| Workflow 返回非 JSON | 重试 1 次 | — |
| 重试仍失败 | 降级为 mock(使用 NUMBER_DESC 模板) | "解读生成失败,请稍后再试" |
| tab2 为空(AI 未融合) | 降级为 mock | "暂时无法获取特征描述" |
| Workflow 超时 >10s | 直接降级 | "请求超时,请重试" |
| Dify 服务 4xx/5xx | 降级为 mock | "解读服务暂时不可用" |
降级保底内容示例(Mock):
private PositionDetailResponse generateMockPositionDetail(
String position, int digit, String positionName) {
String digitDesc = NUMBER_DESC.getOrDefault(digit, "独特能量组合");
PositionDetailResponse resp = new PositionDetailResponse();
resp.tab1 = positionName + ":" + POSITION_CORE_MEANINGS.getOrDefault(position, "能量位置");
resp.tab2 = position + "=" + digit + " 代表" + digitDesc + "。";
resp.tab3 = "1. 了解该能量的优势和挑战\n2. 结合整体能量盘综合分析\n3. 在实践中觉察能量表现";
return resp;
}
| 已有机制 | 与本方案的关系 |
|---|---|
| 吉凶指示 (Item 8) | 后端 CalculatorService 基于八星组合等级计算,独立于 KB 和 Workflow |
| 相邻组合提示 (Item 9) | 后端 CalculatorService 检测,通过 comboInfo 字段返回,不依赖 Dify |
| Tab3 可配置 (Item 10) | Phase 2+ 管理后台可覆盖 Tab3 内容,目前由 Workflow 生成 |
| Chatflow 多轮问答 | 位置详情面板无记忆,每次点击独立请求,互不影响 |
| 指标 | 当前 (Phase B) | 优化后(Phase C 预期) |
|---|---|---|
| AI 解读深度 | 依赖 system prompt 内置知识 + 少量 KB 检索 | 分维度精准 KB 检索 + 结构化推理 |
| 幻觉率 | 中(LLM 依赖内部知识,可能编造组合含义) | 低(每次解读引用 KB 中的具体规则) |
| 解读个性化 | 中(基于 chart_data 但缺乏深度) | 高(24 位置 + 组合对 + 维度交叉分析) |
| US-1.4 覆盖 | ✅ 28 篇 KB 覆盖所有位置含义 | ✅ 面板可直接展示每个位置含义 |
| 知识库利用率 | 高 — 21 条查询双模式 100% 通过 | 更高 — 分维度多次检索,精准命中 |
| 决策项 | 选择 | 替代方案 | 理由 |
|---|---|---|---|
| 单知识库 vs 多知识库 | 单知识库 | 多 KB 按主题拆分 | Dify v1.11.4 支持 Workflow 内多次 KB 检索 + metadata 过滤,单 KB 更易管理,无需跨 KB 繁琐配置 |
| 文档拆分粒度 | ~300-500 行/篇 | 1000+ 行大文档 | 适中粒度:减少 RAG 噪音又不至于碎片化 |
| Metadata 方案 | YAML tags | Dify 控制台手动标签 | 标签随文档同步,版本可追溯 |
| 现有文档处理 | 保留 + 新增 + 重构 | 全部推倒重来 | 现有 21 篇有价值内容,直接删除浪费资源 |
| Top-K | 10 (需控制台配置) | 6 (当前, API不可改) | Dify v1.11.4 API 对 retrieval_model_dict.top_k 的更改返回200但实际不生效。需在 Dify 控制台 → 数据集设置 → 检索设置 手动修改 |
| Rerank 配置 | 需 Dify 控制台配置 | 无 rerank (当前) | 当前 rerank 模型为 null,配置后(如 BAAI/bge-reranker-v2-m3)可显著缓解关键词偏差。同样是控制台操作 |