mingyu-core 0.1.8 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -1
- package/dist/bazi/baziAnalysis.d.ts.map +1 -1
- package/dist/bazi/baziAnalysis.js +0 -2
- package/dist/bazi/baziAnalysis.js.map +1 -1
- package/dist/bazi/baziAnalysisFormatter.d.ts.map +1 -1
- package/dist/bazi/baziAnalysisFormatter.js +10 -1
- package/dist/bazi/baziAnalysisFormatter.js.map +1 -1
- package/dist/bazi/baziAnalysisPipeline.d.ts +1 -1
- package/dist/bazi/baziAnalysisPipeline.d.ts.map +1 -1
- package/dist/bazi/baziAnalysisPipeline.js +1 -1
- package/dist/bazi/baziAnalysisPipeline.js.map +1 -1
- package/dist/bazi/baziCalculator.d.ts.map +1 -1
- package/dist/bazi/baziCalculator.js +61 -3
- package/dist/bazi/baziCalculator.js.map +1 -1
- package/dist/bazi/baziConditionMatchers/branchMatchers.d.ts +1 -0
- package/dist/bazi/baziConditionMatchers/branchMatchers.d.ts.map +1 -1
- package/dist/bazi/baziConditionMatchers/branchMatchers.js +13 -1
- package/dist/bazi/baziConditionMatchers/branchMatchers.js.map +1 -1
- package/dist/bazi/baziConditionMatchers/index.d.ts.map +1 -1
- package/dist/bazi/baziConditionMatchers/index.js +4 -2
- package/dist/bazi/baziConditionMatchers/index.js.map +1 -1
- package/dist/bazi/baziConditionMatchers/stemMatchers.d.ts +1 -0
- package/dist/bazi/baziConditionMatchers/stemMatchers.d.ts.map +1 -1
- package/dist/bazi/baziConditionMatchers/stemMatchers.js +7 -3
- package/dist/bazi/baziConditionMatchers/stemMatchers.js.map +1 -1
- package/dist/bazi/baziEnhancement/classicPatterns.d.ts.map +1 -1
- package/dist/bazi/baziEnhancement/classicPatterns.js +31 -11
- package/dist/bazi/baziEnhancement/classicPatterns.js.map +1 -1
- package/dist/bazi/baziPromptEnhancement.d.ts.map +1 -1
- package/dist/bazi/baziPromptEnhancement.js +49 -0
- package/dist/bazi/baziPromptEnhancement.js.map +1 -1
- package/dist/bazi/baziShenSha/helpers/dayRules.d.ts +0 -3
- package/dist/bazi/baziShenSha/helpers/dayRules.d.ts.map +1 -1
- package/dist/bazi/baziShenSha/helpers/dayRules.js +101 -56
- package/dist/bazi/baziShenSha/helpers/dayRules.js.map +1 -1
- package/dist/bazi/baziShenSha/helpers/disasterRules.d.ts +0 -3
- package/dist/bazi/baziShenSha/helpers/disasterRules.d.ts.map +1 -1
- package/dist/bazi/baziShenSha/helpers/disasterRules.js +745 -23
- package/dist/bazi/baziShenSha/helpers/disasterRules.js.map +1 -1
- package/dist/bazi/baziShenSha/helpers/globalRules.d.ts +0 -6
- package/dist/bazi/baziShenSha/helpers/globalRules.d.ts.map +1 -1
- package/dist/bazi/baziShenSha/helpers/globalRules.js +48 -16
- package/dist/bazi/baziShenSha/helpers/globalRules.js.map +1 -1
- package/dist/bazi/baziShenSha/helpers/luRules.d.ts +0 -3
- package/dist/bazi/baziShenSha/helpers/luRules.d.ts.map +1 -1
- package/dist/bazi/baziShenSha/helpers/luRules.js +266 -37
- package/dist/bazi/baziShenSha/helpers/luRules.js.map +1 -1
- package/dist/bazi/baziShenSha/helpers/marriageRules.d.ts +0 -3
- package/dist/bazi/baziShenSha/helpers/marriageRules.d.ts.map +1 -1
- package/dist/bazi/baziShenSha/helpers/marriageRules.js +5 -7
- package/dist/bazi/baziShenSha/helpers/marriageRules.js.map +1 -1
- package/dist/bazi/baziShenSha/helpers/nobleRules.d.ts +0 -3
- package/dist/bazi/baziShenSha/helpers/nobleRules.d.ts.map +1 -1
- package/dist/bazi/baziShenSha/helpers/nobleRules.js +208 -41
- package/dist/bazi/baziShenSha/helpers/nobleRules.js.map +1 -1
- package/dist/bazi/baziShenSha/helpers/tenGodAnalysis.d.ts +0 -4
- package/dist/bazi/baziShenSha/helpers/tenGodAnalysis.d.ts.map +1 -1
- package/dist/bazi/baziShenSha/helpers/tenGodAnalysis.js +0 -8
- package/dist/bazi/baziShenSha/helpers/tenGodAnalysis.js.map +1 -1
- package/dist/bazi/baziShenSha/index.d.ts +0 -20
- package/dist/bazi/baziShenSha/index.d.ts.map +1 -1
- package/dist/bazi/baziShenSha/index.js +0 -20
- package/dist/bazi/baziShenSha/index.js.map +1 -1
- package/dist/bazi/baziShenSha/variants.d.ts +0 -3
- package/dist/bazi/baziShenSha/variants.d.ts.map +1 -1
- package/dist/bazi/baziShenSha/variants.js.map +1 -1
- package/dist/bazi/baziShenShaData.d.ts +0 -20
- package/dist/bazi/baziShenShaData.d.ts.map +1 -1
- package/dist/bazi/baziShenShaData.js +286 -34
- package/dist/bazi/baziShenShaData.js.map +1 -1
- package/dist/bazi/baziStrengthAnalyzer.d.ts +5 -1
- package/dist/bazi/baziStrengthAnalyzer.d.ts.map +1 -1
- package/dist/bazi/baziStrengthAnalyzer.js +45 -15
- package/dist/bazi/baziStrengthAnalyzer.js.map +1 -1
- package/dist/bazi/baziTypes.d.ts +17 -0
- package/dist/bazi/baziTypes.d.ts.map +1 -1
- package/dist/bazi/baziTypes.js.map +1 -1
- package/dist/bazi/chinaDst.d.ts +36 -0
- package/dist/bazi/chinaDst.d.ts.map +1 -0
- package/dist/bazi/chinaDst.js +86 -0
- package/dist/bazi/chinaDst.js.map +1 -0
- package/dist/bazi/index.d.ts +4 -0
- package/dist/bazi/index.d.ts.map +1 -1
- package/dist/bazi/index.js +2 -1
- package/dist/bazi/index.js.map +1 -1
- package/dist/bazi/lifeStageAnalysis.d.ts.map +1 -1
- package/dist/bazi/lifeStageAnalysis.js +0 -3
- package/dist/bazi/lifeStageAnalysis.js.map +1 -1
- package/dist/bazi/monthCommand.d.ts.map +1 -1
- package/dist/bazi/monthCommand.js +77 -23
- package/dist/bazi/monthCommand.js.map +1 -1
- package/dist/bazi/nayinAnalysis.d.ts.map +1 -1
- package/dist/bazi/nayinAnalysis.js +0 -1
- package/dist/bazi/nayinAnalysis.js.map +1 -1
- package/dist/bazi/paipanWarnings.d.ts +25 -0
- package/dist/bazi/paipanWarnings.d.ts.map +1 -0
- package/dist/bazi/paipanWarnings.js +123 -0
- package/dist/bazi/paipanWarnings.js.map +1 -0
- package/dist/bazi/relationStructure.d.ts.map +1 -1
- package/dist/bazi/relationStructure.js +0 -4
- package/dist/bazi/relationStructure.js.map +1 -1
- package/dist/bazi/stemRootAnalysis.d.ts.map +1 -1
- package/dist/bazi/stemRootAnalysis.js +26 -16
- package/dist/bazi/stemRootAnalysis.js.map +1 -1
- package/dist/bazi/usefulGodPlacement.d.ts.map +1 -1
- package/dist/bazi/usefulGodPlacement.js +0 -2
- package/dist/bazi/usefulGodPlacement.js.map +1 -1
- package/dist/divination/algorithms/_shared/index.d.ts +1 -1
- package/dist/divination/algorithms/_shared/index.d.ts.map +1 -1
- package/dist/divination/algorithms/_shared/index.js +1 -1
- package/dist/divination/algorithms/_shared/index.js.map +1 -1
- package/dist/divination/algorithms/_shared/wuxing.d.ts +9 -8
- package/dist/divination/algorithms/_shared/wuxing.d.ts.map +1 -1
- package/dist/divination/algorithms/_shared/wuxing.js +40 -18
- package/dist/divination/algorithms/_shared/wuxing.js.map +1 -1
- package/dist/divination/algorithms/almanac.d.ts +2 -2
- package/dist/divination/algorithms/almanac.d.ts.map +1 -1
- package/dist/divination/algorithms/almanac.js +197 -32
- package/dist/divination/algorithms/almanac.js.map +1 -1
- package/dist/divination/algorithms/lenormand.d.ts +2 -2
- package/dist/divination/algorithms/lenormand.d.ts.map +1 -1
- package/dist/divination/algorithms/lenormand.js +6 -6
- package/dist/divination/algorithms/lenormand.js.map +1 -1
- package/dist/divination/algorithms/liuren/helpers/lessons.d.ts.map +1 -1
- package/dist/divination/algorithms/liuren/helpers/lessons.js +11 -7
- package/dist/divination/algorithms/liuren/helpers/lessons.js.map +1 -1
- package/dist/divination/algorithms/liuren/helpers/transmission.d.ts +6 -0
- package/dist/divination/algorithms/liuren/helpers/transmission.d.ts.map +1 -1
- package/dist/divination/algorithms/liuren/helpers/transmission.js +38 -0
- package/dist/divination/algorithms/liuren/helpers/transmission.js.map +1 -1
- package/dist/divination/algorithms/liuren/index.d.ts.map +1 -1
- package/dist/divination/algorithms/liuren/index.js +17 -14
- package/dist/divination/algorithms/liuren/index.js.map +1 -1
- package/dist/divination/algorithms/liuyao.d.ts +57 -0
- package/dist/divination/algorithms/liuyao.d.ts.map +1 -1
- package/dist/divination/algorithms/liuyao.js +221 -50
- package/dist/divination/algorithms/liuyao.js.map +1 -1
- package/dist/divination/algorithms/meihua/helpers/methods.d.ts +8 -18
- package/dist/divination/algorithms/meihua/helpers/methods.d.ts.map +1 -1
- package/dist/divination/algorithms/meihua/helpers/methods.js +52 -66
- package/dist/divination/algorithms/meihua/helpers/methods.js.map +1 -1
- package/dist/divination/algorithms/meihua/index.d.ts +2 -2
- package/dist/divination/algorithms/meihua/index.d.ts.map +1 -1
- package/dist/divination/algorithms/meihua/index.js +25 -31
- package/dist/divination/algorithms/meihua/index.js.map +1 -1
- package/dist/divination/algorithms/qimen/helpers/_constants.d.ts +2 -4
- package/dist/divination/algorithms/qimen/helpers/_constants.d.ts.map +1 -1
- package/dist/divination/algorithms/qimen/helpers/_constants.js +3 -5
- package/dist/divination/algorithms/qimen/helpers/_constants.js.map +1 -1
- package/dist/divination/algorithms/qimen/helpers/classic-patterns.d.ts +15 -7
- package/dist/divination/algorithms/qimen/helpers/classic-patterns.d.ts.map +1 -1
- package/dist/divination/algorithms/qimen/helpers/classic-patterns.js +814 -127
- package/dist/divination/algorithms/qimen/helpers/classic-patterns.js.map +1 -1
- package/dist/divination/algorithms/qimen/helpers/directions.d.ts +4 -3
- package/dist/divination/algorithms/qimen/helpers/directions.d.ts.map +1 -1
- package/dist/divination/algorithms/qimen/helpers/directions.js +16 -9
- package/dist/divination/algorithms/qimen/helpers/directions.js.map +1 -1
- package/dist/divination/algorithms/qimen/helpers/jushu-extended.d.ts +7 -6
- package/dist/divination/algorithms/qimen/helpers/jushu-extended.d.ts.map +1 -1
- package/dist/divination/algorithms/qimen/helpers/jushu-extended.js +55 -24
- package/dist/divination/algorithms/qimen/helpers/jushu-extended.js.map +1 -1
- package/dist/divination/algorithms/qimen/helpers/jushu.d.ts +20 -13
- package/dist/divination/algorithms/qimen/helpers/jushu.d.ts.map +1 -1
- package/dist/divination/algorithms/qimen/helpers/jushu.js +96 -61
- package/dist/divination/algorithms/qimen/helpers/jushu.js.map +1 -1
- package/dist/divination/algorithms/qimen/helpers/layout.d.ts +1 -1
- package/dist/divination/algorithms/qimen/helpers/layout.d.ts.map +1 -1
- package/dist/divination/algorithms/qimen/helpers/layout.js +18 -24
- package/dist/divination/algorithms/qimen/helpers/layout.js.map +1 -1
- package/dist/divination/algorithms/qimen/helpers/pattern-combos.d.ts +12 -0
- package/dist/divination/algorithms/qimen/helpers/pattern-combos.d.ts.map +1 -1
- package/dist/divination/algorithms/qimen/helpers/pattern-combos.js +1558 -9
- package/dist/divination/algorithms/qimen/helpers/pattern-combos.js.map +1 -1
- package/dist/divination/algorithms/qimen/helpers/patterns.d.ts +6 -5
- package/dist/divination/algorithms/qimen/helpers/patterns.d.ts.map +1 -1
- package/dist/divination/algorithms/qimen/helpers/patterns.js +74 -22
- package/dist/divination/algorithms/qimen/helpers/patterns.js.map +1 -1
- package/dist/divination/algorithms/qimen/helpers/seasonality.d.ts +0 -16
- package/dist/divination/algorithms/qimen/helpers/seasonality.d.ts.map +1 -1
- package/dist/divination/algorithms/qimen/helpers/seasonality.js +0 -85
- package/dist/divination/algorithms/qimen/helpers/seasonality.js.map +1 -1
- package/dist/divination/algorithms/qimen/helpers/stem-pair-patterns.d.ts +8 -1
- package/dist/divination/algorithms/qimen/helpers/stem-pair-patterns.d.ts.map +1 -1
- package/dist/divination/algorithms/qimen/helpers/stem-pair-patterns.js +731 -67
- package/dist/divination/algorithms/qimen/helpers/stem-pair-patterns.js.map +1 -1
- package/dist/divination/algorithms/qimen/helpers/ying-qi.d.ts +10 -6
- package/dist/divination/algorithms/qimen/helpers/ying-qi.d.ts.map +1 -1
- package/dist/divination/algorithms/qimen/helpers/ying-qi.js +58 -25
- package/dist/divination/algorithms/qimen/helpers/ying-qi.js.map +1 -1
- package/dist/divination/algorithms/qimen/index.d.ts.map +1 -1
- package/dist/divination/algorithms/qimen/index.js +89 -18
- package/dist/divination/algorithms/qimen/index.js.map +1 -1
- package/dist/divination/algorithms/xiaoliuren.d.ts +1 -1
- package/dist/divination/algorithms/xiaoliuren.js +12 -12
- package/dist/divination/algorithms/xiaoliuren.js.map +1 -1
- package/dist/divination/config.d.ts +41 -0
- package/dist/divination/config.d.ts.map +1 -0
- package/dist/divination/config.js +111 -0
- package/dist/divination/config.js.map +1 -0
- package/dist/divination/divination-data.d.ts.map +1 -1
- package/dist/divination/divination-data.js +2 -4
- package/dist/divination/divination-data.js.map +1 -1
- package/dist/divination/engine/liuren-template.d.ts +4 -0
- package/dist/divination/engine/liuren-template.d.ts.map +1 -0
- package/dist/divination/engine/liuren-template.js +39 -0
- package/dist/divination/engine/liuren-template.js.map +1 -0
- package/dist/divination/engine/liuyao-template.d.ts +3 -0
- package/dist/divination/engine/liuyao-template.d.ts.map +1 -0
- package/dist/divination/engine/liuyao-template.js +46 -0
- package/dist/divination/engine/liuyao-template.js.map +1 -0
- package/dist/divination/engine/method-text.d.ts +6 -0
- package/dist/divination/engine/method-text.d.ts.map +1 -0
- package/dist/divination/engine/method-text.js +105 -0
- package/dist/divination/engine/method-text.js.map +1 -0
- package/dist/divination/share-text.d.ts +2 -0
- package/dist/divination/share-text.d.ts.map +1 -0
- package/dist/divination/share-text.js +8 -0
- package/dist/divination/share-text.js.map +1 -0
- package/dist/types/divination.d.ts +44 -0
- package/dist/types/divination.d.ts.map +1 -1
- package/dist/ziwei/iztro/build-analysis-payload/index.d.ts.map +1 -1
- package/dist/ziwei/iztro/build-analysis-payload/index.js +7 -1
- package/dist/ziwei/iztro/build-analysis-payload/index.js.map +1 -1
- package/dist/ziwei/iztro/pattern-detection.d.ts +4 -2
- package/dist/ziwei/iztro/pattern-detection.d.ts.map +1 -1
- package/dist/ziwei/iztro/pattern-detection.js +1300 -184
- package/dist/ziwei/iztro/pattern-detection.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file 奇门遁甲经典格局识别
|
|
3
|
-
* @description
|
|
3
|
+
* @description 实现九大遁格、三奇格局、三诈五假、值符值使关系、相佐、守户、玉女守门、门迫、击刑、入墓、
|
|
4
4
|
* 天地盘干关系等经典格局的完整检测。
|
|
5
5
|
*
|
|
6
6
|
* 古籍依据:
|
|
@@ -9,12 +9,14 @@
|
|
|
9
9
|
* - 《奇门遁甲秘籍大全》:「符使同宫事必成,门迫宫兮事难行」
|
|
10
10
|
* - 《烟波钓叟歌》:「十干入墓主事迟,击刑之处防官非」
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
* 本模块集中输出会进入主排盘的经典格局。单一干干加临格局
|
|
13
|
+
* (青龙返首、飞鸟跌穴、青龙逃走、白虎猖狂等)由
|
|
14
|
+
* stem-pair-patterns.ts 维护表义,此处只接入有固定名称的格局。
|
|
15
15
|
*/
|
|
16
16
|
import { stemElements, doorElements, auspiciousDoors, sanQiStems, STEM_TOMB_MAP, isGenerating, isControlling, } from './_constants.js';
|
|
17
17
|
import { isKe } from '../../_shared/index.js';
|
|
18
|
+
import { getNamedStemPairPattern } from './stem-pair-patterns.js';
|
|
19
|
+
import { getDunJiaStem } from './palace-utils.js';
|
|
18
20
|
// ============================================================================
|
|
19
21
|
// 常量表
|
|
20
22
|
// ============================================================================
|
|
@@ -22,6 +24,19 @@ import { isKe } from '../../_shared/index.js';
|
|
|
22
24
|
const sanQi = sanQiStems;
|
|
23
25
|
const getStemTombBranch = (stem) => STEM_TOMB_MAP[stem]?.branch;
|
|
24
26
|
const getStemTombPalace = (stem) => STEM_TOMB_MAP[stem]?.palace;
|
|
27
|
+
/**
|
|
28
|
+
* 三奇入墓专用墓宫。
|
|
29
|
+
*
|
|
30
|
+
* 《奇门遁甲统宗》:「三奇入墓者,乙未到坤,丙奇到乾,丁奇到艮」
|
|
31
|
+
* 《遁甲演义》:「更兼六乙来临二,月奇临六亦同论」
|
|
32
|
+
*
|
|
33
|
+
* 这里处理经典「三奇入墓」格局,不替代时干、日干等通用天干入墓表。
|
|
34
|
+
*/
|
|
35
|
+
const sanQiRuMuTombMap = {
|
|
36
|
+
乙: { branch: '未', palace: 2 },
|
|
37
|
+
丙: { branch: '戌', palace: 6 },
|
|
38
|
+
丁: { branch: '丑', palace: 8 },
|
|
39
|
+
};
|
|
25
40
|
const sanQiRuMuConfig = {
|
|
26
41
|
乙: {
|
|
27
42
|
key: 'yiRuMu',
|
|
@@ -48,6 +63,106 @@ const sanQiRuMuConfig = {
|
|
|
48
63
|
manifestation: '精细工作发挥不出来、暗中协调效果弱',
|
|
49
64
|
},
|
|
50
65
|
};
|
|
66
|
+
const sanQiShouZhiConfig = {
|
|
67
|
+
乙: {
|
|
68
|
+
key: 'yiShouZhi',
|
|
69
|
+
name: '日奇受制',
|
|
70
|
+
gongs: [6, 7],
|
|
71
|
+
score: -4,
|
|
72
|
+
reason: '木入金乡',
|
|
73
|
+
result: '主协商文书受制',
|
|
74
|
+
modern: '今天柔性沟通、文书推进容易被规则或强势对象压住,先避开硬碰硬。',
|
|
75
|
+
manifestation: '协商受压、文书被卡、柔性办法难展开',
|
|
76
|
+
},
|
|
77
|
+
丙: {
|
|
78
|
+
key: 'bingShouZhi',
|
|
79
|
+
name: '月奇受制',
|
|
80
|
+
gongs: [1],
|
|
81
|
+
score: -5,
|
|
82
|
+
reason: '火入水乡',
|
|
83
|
+
result: '主展示表达受制',
|
|
84
|
+
modern: '今天公开表达、曝光和推进容易被冷处理或阻断,先收束火力。',
|
|
85
|
+
manifestation: '展示受阻、表达被冷处理、推进遇阻',
|
|
86
|
+
},
|
|
87
|
+
丁: {
|
|
88
|
+
key: 'dingShouZhi',
|
|
89
|
+
name: '星奇受制',
|
|
90
|
+
gongs: [1],
|
|
91
|
+
score: -4,
|
|
92
|
+
reason: '火入水乡',
|
|
93
|
+
result: '主暗助文书受制',
|
|
94
|
+
modern: '今天精细沟通、内部协调和暗线帮助容易发挥不出来,适合先保存证据。',
|
|
95
|
+
manifestation: '内部协调受阻、细节难发挥、暗助不显',
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
const sanQiDeShiConfig = {
|
|
99
|
+
乙: {
|
|
100
|
+
key: 'riQiDeShi',
|
|
101
|
+
name: '日奇得使',
|
|
102
|
+
earthStems: ['己', '辛'],
|
|
103
|
+
xunShouText: '甲戌/甲午',
|
|
104
|
+
modern: '协商、文书、柔性沟通的事特别顺,关键人物愿意配合;乙奇得使可大胆推进需要共识的事。',
|
|
105
|
+
manifestation: '协商成功、文书签成、对方配合度高',
|
|
106
|
+
},
|
|
107
|
+
丙: {
|
|
108
|
+
key: 'yueQiDeShi',
|
|
109
|
+
name: '月奇得使',
|
|
110
|
+
earthStems: ['戊', '庚'],
|
|
111
|
+
xunShouText: '甲子/甲申',
|
|
112
|
+
modern: '展示、表达、对外发声有特别效果,能被关键的人看到;月奇得使可以放心做需要曝光的事。',
|
|
113
|
+
manifestation: '展示获好评、表达被听见、关键曝光',
|
|
114
|
+
},
|
|
115
|
+
丁: {
|
|
116
|
+
key: 'xingQiDeShi',
|
|
117
|
+
name: '星奇得使',
|
|
118
|
+
earthStems: ['壬', '癸'],
|
|
119
|
+
xunShouText: '甲辰/甲寅',
|
|
120
|
+
modern: '精细工作、暗中协调、内部沟通效果特别好;星奇得使适合做需要精修和幕后推动的事。',
|
|
121
|
+
manifestation: '内部协调顺利、精修见效、暗助到位',
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
const sanQiYouLiuYiConfig = {
|
|
125
|
+
乙: {
|
|
126
|
+
己: { xunShou: '甲戌', targetStem: '辛', targetXunShou: '甲午' },
|
|
127
|
+
辛: { xunShou: '甲午', targetStem: '己', targetXunShou: '甲戌' },
|
|
128
|
+
},
|
|
129
|
+
丙: {
|
|
130
|
+
戊: { xunShou: '甲子', targetStem: '庚', targetXunShou: '甲申' },
|
|
131
|
+
庚: { xunShou: '甲申', targetStem: '戊', targetXunShou: '甲子' },
|
|
132
|
+
},
|
|
133
|
+
丁: {
|
|
134
|
+
壬: { xunShou: '甲辰', targetStem: '癸', targetXunShou: '甲寅' },
|
|
135
|
+
癸: { xunShou: '甲寅', targetStem: '壬', targetXunShou: '甲辰' },
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
const sanZhaGodConfig = {
|
|
139
|
+
太阴: {
|
|
140
|
+
key: 'zhenZha',
|
|
141
|
+
name: '真诈',
|
|
142
|
+
score: 7,
|
|
143
|
+
summary: '三奇、吉门、太阴同宫,乃真诈之格,主隐蔽得助、柔性成事。',
|
|
144
|
+
modern: '适合用低调、柔和、私下沟通的方式推进,越是不张扬越容易成。',
|
|
145
|
+
manifestation: '私下沟通顺利、暗中有人配合、柔性推进见效',
|
|
146
|
+
},
|
|
147
|
+
九地: {
|
|
148
|
+
key: 'zhongZha',
|
|
149
|
+
name: '重诈',
|
|
150
|
+
score: 7,
|
|
151
|
+
summary: '三奇、吉门、九地同宫,乃重诈之格,主伏藏蓄势、稳中取利。',
|
|
152
|
+
modern: '适合先藏住底牌、稳扎稳打地争取资源,不宜急着公开摊牌。',
|
|
153
|
+
manifestation: '资源暗中积累、稳步取利、伏藏后发',
|
|
154
|
+
},
|
|
155
|
+
六合: {
|
|
156
|
+
key: 'xiuZha',
|
|
157
|
+
name: '休诈',
|
|
158
|
+
score: 7,
|
|
159
|
+
summary: '三奇、吉门、六合同宫,乃休诈之格,主和合调停、协作成事。',
|
|
160
|
+
modern: '适合谈合作、做协调、修复关系,借助中间人或团队配合更顺。',
|
|
161
|
+
manifestation: '合作达成、关系缓和、调停有效',
|
|
162
|
+
},
|
|
163
|
+
};
|
|
164
|
+
const wuJiaControlStems = ['丁', '己', '癸'];
|
|
165
|
+
const wuJiaThingStems = ['乙', '丁', '己'];
|
|
51
166
|
/**
|
|
52
167
|
* 干击刑:六仪遁干落入特定自刑/相刑宫位为击刑
|
|
53
168
|
* 《烟波钓叟歌》:「击刑之处防官非」
|
|
@@ -119,35 +234,34 @@ function getDunPatterns(jiuGongGe) {
|
|
|
119
234
|
const gong = palace.gong;
|
|
120
235
|
const name = palace.name;
|
|
121
236
|
// ── 天遁 ──
|
|
122
|
-
//
|
|
123
|
-
//
|
|
124
|
-
if (door === '
|
|
237
|
+
// 《遁甲演义》:「上盘六丙,中盘生门,下盘六丁」
|
|
238
|
+
// 《奇门遁甲统宗》另有「生丙临戊」口径,故兼收地盘丁/戊。
|
|
239
|
+
if (door === '生门' && heaven === '丙' && (earth === '丁' || earth === '戊')) {
|
|
125
240
|
out.push({
|
|
126
241
|
key: `pattern:tianDun:${gong}`,
|
|
127
242
|
name: '天遁',
|
|
128
243
|
tone: 'good',
|
|
129
244
|
score: 9,
|
|
130
|
-
summary:
|
|
245
|
+
summary: `生门、丙奇、地盘${earth}同宫,乃天遁之格,主上升机会与天助。`,
|
|
131
246
|
modern: '特别难得的机会窗口,主动出击都顺,关键沟通和签约都有利。但出手要果断,拖久了就凉了。',
|
|
132
247
|
manifestation: '关键沟通顺利、签约成功、对方主动抛出好条件',
|
|
133
248
|
palace: gong,
|
|
134
|
-
tokens: ['
|
|
249
|
+
tokens: ['生门', '丙', earth],
|
|
135
250
|
});
|
|
136
251
|
}
|
|
137
252
|
// ── 地遁 ──
|
|
138
|
-
//
|
|
139
|
-
|
|
140
|
-
if (door === '休门' && heaven === '丁' && earth === '乙') {
|
|
253
|
+
// 《遁甲演义》:「上盘六乙,中盘开门,下盘六己」
|
|
254
|
+
if (door === '开门' && heaven === '乙' && earth === '己') {
|
|
141
255
|
out.push({
|
|
142
256
|
key: `pattern:diDun:${gong}`,
|
|
143
257
|
name: '地遁',
|
|
144
258
|
tone: 'good',
|
|
145
259
|
score: 8,
|
|
146
|
-
summary: '
|
|
260
|
+
summary: '开门、乙奇、地盘己同宫,乃地遁之格,主稳健长远、地利相助。',
|
|
147
261
|
modern: '适合做需要稳扎稳打的事,比如基础准备、长期布局。',
|
|
148
262
|
manifestation: '基础扎实、长期项目推进顺利',
|
|
149
263
|
palace: gong,
|
|
150
|
-
tokens: ['
|
|
264
|
+
tokens: ['开门', '乙', '己'],
|
|
151
265
|
});
|
|
152
266
|
}
|
|
153
267
|
// ── 人遁 ──
|
|
@@ -181,10 +295,12 @@ function getDunPatterns(jiuGongGe) {
|
|
|
181
295
|
});
|
|
182
296
|
}
|
|
183
297
|
// ── 鬼遁 ──
|
|
184
|
-
//
|
|
298
|
+
// 《遁甲演义》:乙奇合九地临杜门;丁奇与休门相合下临九地;
|
|
299
|
+
// 又曰乙奇与开门相合下临九地。
|
|
185
300
|
// 主暗中操作、私下成事
|
|
186
301
|
if ((door === '杜门' && heaven === '乙' && god === '九地') ||
|
|
187
|
-
(door === '
|
|
302
|
+
(door === '休门' && heaven === '丁' && god === '九地') ||
|
|
303
|
+
(door === '开门' && heaven === '乙' && god === '九地')) {
|
|
188
304
|
out.push({
|
|
189
305
|
key: `pattern:guiDun:${gong}`,
|
|
190
306
|
name: '鬼遁',
|
|
@@ -326,75 +442,203 @@ function getDunPatterns(jiuGongGe) {
|
|
|
326
442
|
* 识别三奇得使格局
|
|
327
443
|
*
|
|
328
444
|
* 《烟波钓叟歌》:「三奇得使最为良」
|
|
329
|
-
*
|
|
330
|
-
* 乙奇+值使门=日奇得使,丙奇+值使门=月奇得使,丁奇+值使门=星奇得使。
|
|
445
|
+
* 《遁甲演义》:「甲戌甲午乙为使,甲子甲申丙为使,甲辰甲寅丁为使。」
|
|
331
446
|
*
|
|
332
447
|
* @param jiuGongGe - 九宫格数据
|
|
333
|
-
* @param zhiShi - 值使门
|
|
334
448
|
* @returns 检测到的三奇得使格局列表
|
|
335
449
|
*/
|
|
336
|
-
function getSanQiDeShiPatterns(jiuGongGe
|
|
450
|
+
function getSanQiDeShiPatterns(jiuGongGe) {
|
|
337
451
|
const out = [];
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
if (heavenStem === '乙') {
|
|
452
|
+
jiuGongGe.forEach((palace) => {
|
|
453
|
+
const heavenStem = palace.tianPan.stem;
|
|
454
|
+
const earthStem = palace.diPan.stem;
|
|
455
|
+
const config = sanQiDeShiConfig[heavenStem];
|
|
456
|
+
if (!config || !config.earthStems.includes(earthStem))
|
|
457
|
+
return;
|
|
345
458
|
out.push({
|
|
346
|
-
key: `pattern
|
|
347
|
-
name:
|
|
459
|
+
key: `pattern:${config.key}:${palace.gong}`,
|
|
460
|
+
name: config.name,
|
|
348
461
|
tone: 'good',
|
|
349
462
|
score: 8,
|
|
350
|
-
summary:
|
|
351
|
-
modern:
|
|
352
|
-
manifestation:
|
|
353
|
-
palace:
|
|
354
|
-
tokens: [
|
|
463
|
+
summary: `${heavenStem}奇加地盘${earthStem}(${config.xunShouText}所遁)于${palace.name},乃${config.name}之格。`,
|
|
464
|
+
modern: config.modern,
|
|
465
|
+
manifestation: config.manifestation,
|
|
466
|
+
palace: palace.gong,
|
|
467
|
+
tokens: [heavenStem, earthStem],
|
|
355
468
|
});
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
469
|
+
if (auspiciousDoors.includes(palace.renPan.door)) {
|
|
470
|
+
const qiNameMap = { 乙: '日奇', 丙: '月奇', 丁: '星奇' };
|
|
471
|
+
out.push({
|
|
472
|
+
key: `pattern:deShiPlusGoodDoor:${palace.gong}`,
|
|
473
|
+
name: `${qiNameMap[heavenStem]}得地`,
|
|
474
|
+
tone: 'good',
|
|
475
|
+
score: 11,
|
|
476
|
+
summary: `${qiNameMap[heavenStem]}得使又临吉门${palace.renPan.door},得门得使,双重吉利。`,
|
|
477
|
+
modern: '今天关键事有特别好的入口,资源、信息、关键人同时到位,别错过机会窗口。',
|
|
478
|
+
manifestation: '机会窗口打开、资源到位、关键人配合',
|
|
479
|
+
palace: palace.gong,
|
|
480
|
+
tokens: [heavenStem, earthStem, palace.renPan.door],
|
|
481
|
+
});
|
|
482
|
+
}
|
|
483
|
+
});
|
|
484
|
+
return out;
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* 识别《奇门宝鉴御定》口径的三奇得使。
|
|
488
|
+
*
|
|
489
|
+
* 《奇门宝鉴御定》:「三奇得使者,谓得三吉门、直使加奇也。凡开、休、生加乙、丙、丁
|
|
490
|
+
* 为吉门合三奇,利为百事。更得吉门作直使为得使,谋为尤利。」
|
|
491
|
+
*/
|
|
492
|
+
function getBaoJianSanQiDeShiPatterns(jiuGongGe, zhiShi) {
|
|
493
|
+
if (!zhiShi || !auspiciousDoors.includes(zhiShi))
|
|
494
|
+
return [];
|
|
495
|
+
const palace = findDoorPalace(jiuGongGe, zhiShi);
|
|
496
|
+
if (!palace || !sanQi.includes(palace.tianPan.stem))
|
|
497
|
+
return [];
|
|
498
|
+
const qiNameMap = { 乙: '日奇', 丙: '月奇', 丁: '星奇' };
|
|
499
|
+
const qiName = qiNameMap[palace.tianPan.stem] || `${palace.tianPan.stem}奇`;
|
|
500
|
+
return [
|
|
501
|
+
{
|
|
502
|
+
key: `pattern:baoJianSanQiDeShi:${palace.gong}`,
|
|
503
|
+
name: '宝鉴三奇得使',
|
|
504
|
+
tone: 'good',
|
|
505
|
+
score: 9,
|
|
506
|
+
summary: `值使${zhiShi}为三吉门,直使加天盘${palace.tianPan.stem}奇于${palace.name},合《奇门宝鉴御定》“得三吉门、直使加奇”为三奇得使,谋为尤利。`,
|
|
507
|
+
modern: `值使门本身带${qiName},关键入口和关键资源重合,适合推进重要谋划。`,
|
|
508
|
+
manifestation: '关键入口得奇、谋事尤利、资源与行动窗口重合',
|
|
509
|
+
palace: palace.gong,
|
|
510
|
+
tokens: [zhiShi, palace.tianPan.stem],
|
|
511
|
+
},
|
|
512
|
+
];
|
|
513
|
+
}
|
|
514
|
+
/**
|
|
515
|
+
* 识别三奇游六仪格局。
|
|
516
|
+
*
|
|
517
|
+
* 《奇门宝鉴御定》:「三奇游六仪者,谓奇间于仪中,仪加奇、而奇复游其仪也。
|
|
518
|
+
* 左仪加奇,则奇游于右仪。右仪加奇,则奇游于左仪。乙游己辛,丙游戊庚,
|
|
519
|
+
* 丁游壬癸,必为当旬直符来加方是。」
|
|
520
|
+
*
|
|
521
|
+
* 与“三奇得使”相反,本格看当前值符所带六仪加到地盘三奇,且必须是当旬值符来加。
|
|
522
|
+
*/
|
|
523
|
+
function getSanQiYouLiuYiPatterns(jiuGongGe, zhiFu) {
|
|
524
|
+
if (!zhiFu)
|
|
525
|
+
return [];
|
|
526
|
+
const zhiFuPalace = jiuGongGe.find((palace) => palace.tianPan.star === zhiFu);
|
|
527
|
+
if (!zhiFuPalace)
|
|
528
|
+
return [];
|
|
529
|
+
const qi = zhiFuPalace.diPan.stem;
|
|
530
|
+
const zhiFuStem = zhiFuPalace.tianPan.stem;
|
|
531
|
+
const config = sanQiYouLiuYiConfig[qi]?.[zhiFuStem];
|
|
532
|
+
if (!config)
|
|
533
|
+
return [];
|
|
534
|
+
const qiNameMap = { 乙: '日奇', 丙: '月奇', 丁: '星奇' };
|
|
535
|
+
const goodDoorText = auspiciousDoors.includes(zhiFuPalace.renPan.door)
|
|
536
|
+
? `同宫又得${zhiFuPalace.renPan.door},更利。`
|
|
537
|
+
: '';
|
|
538
|
+
return [
|
|
539
|
+
{
|
|
540
|
+
key: `pattern:sanQiYouLiuYi:${qi}:${zhiFuPalace.gong}`,
|
|
541
|
+
name: '三奇游六仪',
|
|
361
542
|
tone: 'good',
|
|
362
543
|
score: 8,
|
|
363
|
-
summary:
|
|
364
|
-
modern: '
|
|
365
|
-
manifestation: '
|
|
366
|
-
palace:
|
|
367
|
-
tokens: [
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
|
|
544
|
+
summary: `${config.xunShou}${zhiFuStem}值符加地盘${qi}奇于${zhiFuPalace.name},${qiNameMap[qi] || qi}游于${config.targetXunShou}${config.targetStem},合“三奇游六仪”之格;古法主百事可为。${goodDoorText}`,
|
|
545
|
+
modern: '今天关键资源能借势转换,适合请托、宴会、协商和争取机会;若同宫得吉门,推进更顺。',
|
|
546
|
+
manifestation: '关键资源转换成助力、请托协商顺利、人情往来得便',
|
|
547
|
+
palace: zhiFuPalace.gong,
|
|
548
|
+
tokens: [qi, `${config.xunShou}${zhiFuStem}`, `${config.targetXunShou}${config.targetStem}`, zhiFu],
|
|
549
|
+
},
|
|
550
|
+
];
|
|
551
|
+
}
|
|
552
|
+
/**
|
|
553
|
+
* 识别三诈格局。
|
|
554
|
+
*
|
|
555
|
+
* 《遁甲演义》:「若三门合三奇,下临太阴宫,名曰真诈;
|
|
556
|
+
* 若三门合三奇,下临九地宫,名曰重诈;
|
|
557
|
+
* 若三门合三奇,下临六合宫,名曰休诈。」
|
|
558
|
+
*
|
|
559
|
+
* 这里的“三门”取开、休、生三吉门;“三奇”取乙、丙、丁。
|
|
560
|
+
*/
|
|
561
|
+
function getSanZhaPatterns(jiuGongGe) {
|
|
562
|
+
const out = [];
|
|
563
|
+
jiuGongGe.forEach((palace) => {
|
|
564
|
+
const heaven = palace.tianPan.stem;
|
|
565
|
+
const door = palace.renPan.door;
|
|
566
|
+
const god = palace.shenPan.god;
|
|
567
|
+
if (!sanQi.includes(heaven) || !auspiciousDoors.includes(door))
|
|
568
|
+
return;
|
|
569
|
+
const config = sanZhaGodConfig[god];
|
|
570
|
+
if (!config)
|
|
571
|
+
return;
|
|
371
572
|
out.push({
|
|
372
|
-
key: `pattern
|
|
373
|
-
name:
|
|
573
|
+
key: `pattern:${config.key}:${palace.gong}`,
|
|
574
|
+
name: config.name,
|
|
374
575
|
tone: 'good',
|
|
375
|
-
score:
|
|
376
|
-
summary:
|
|
377
|
-
modern:
|
|
378
|
-
manifestation:
|
|
379
|
-
palace:
|
|
380
|
-
tokens: [
|
|
576
|
+
score: config.score,
|
|
577
|
+
summary: `${heaven}奇、${door}、${god}同宫于${palace.name},${config.summary}`,
|
|
578
|
+
modern: config.modern,
|
|
579
|
+
manifestation: config.manifestation,
|
|
580
|
+
palace: palace.gong,
|
|
581
|
+
tokens: [heaven, door, god],
|
|
381
582
|
});
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
583
|
+
});
|
|
584
|
+
return out;
|
|
585
|
+
}
|
|
586
|
+
/**
|
|
587
|
+
* 识别假格。
|
|
588
|
+
*
|
|
589
|
+
* 《奇门遁甲元灵经》:「凡作事,九遁为上吉,诈假为次吉。
|
|
590
|
+
* 三诈五假各宜其用,随事而取之吉。」
|
|
591
|
+
*
|
|
592
|
+
* 假格诸说在传本中存在差异,本函数只接入当前九宫字段可稳定表达的
|
|
593
|
+
* 天假、地假、人假、物假、鬼假、神假口径;需要朱雀或跨宫下临关系的别说暂不强行判定。
|
|
594
|
+
*/
|
|
595
|
+
function getJiaPatterns(jiuGongGe) {
|
|
596
|
+
const out = [];
|
|
597
|
+
const pushPattern = (palace, key, name, summary, modern, manifestation, tokens) => {
|
|
386
598
|
out.push({
|
|
387
|
-
key: `pattern
|
|
388
|
-
name
|
|
599
|
+
key: `pattern:${key}:${palace.gong}`,
|
|
600
|
+
name,
|
|
389
601
|
tone: 'good',
|
|
390
|
-
score:
|
|
391
|
-
summary
|
|
392
|
-
modern
|
|
393
|
-
manifestation
|
|
394
|
-
palace:
|
|
395
|
-
tokens
|
|
602
|
+
score: 6,
|
|
603
|
+
summary,
|
|
604
|
+
modern,
|
|
605
|
+
manifestation,
|
|
606
|
+
palace: palace.gong,
|
|
607
|
+
tokens,
|
|
396
608
|
});
|
|
397
|
-
}
|
|
609
|
+
};
|
|
610
|
+
jiuGongGe.forEach((palace) => {
|
|
611
|
+
const heaven = palace.tianPan.stem;
|
|
612
|
+
const earth = palace.diPan.stem;
|
|
613
|
+
const door = palace.renPan.door;
|
|
614
|
+
const god = palace.shenPan.god;
|
|
615
|
+
const gong = palace.gong;
|
|
616
|
+
if (!heaven || !door || !god)
|
|
617
|
+
return;
|
|
618
|
+
if (door === '景门' && sanQi.includes(heaven) && (god === '九天' || god === '九地')) {
|
|
619
|
+
pushPattern(palace, 'tianJia', '天假', `景门、${heaven}奇、${god}同宫于${palace.name},合天假(一作天诈)之格,主进谒干贵、消息通达。`, '适合拜访关键人物、递交诉求、公开表达,外部回应会比平时顺。', '贵人接洽顺利、消息有回应、求见更容易', [door, heaven, god]);
|
|
620
|
+
}
|
|
621
|
+
const isWuJiaThingByDu = door === '杜门' && heaven === '丁' && earth === '己' && god === '太阴';
|
|
622
|
+
if (door === '杜门' &&
|
|
623
|
+
wuJiaControlStems.includes(heaven) &&
|
|
624
|
+
['九地', '太阴', '六合'].includes(god) &&
|
|
625
|
+
!isWuJiaThingByDu) {
|
|
626
|
+
pushPattern(palace, 'diJia', '地假', `杜门、${heaven}、${god}同宫于${palace.name},合地假之格,主伏藏逃避、潜伏蓄势。`, '适合低调处理、保存实力、避开正面冲突,先藏住再行动更稳。', '潜伏避险、暗中准备、失物寻人有线索', [door, heaven, god]);
|
|
627
|
+
}
|
|
628
|
+
if (door === '惊门' && heaven === '壬' && (gong === 2 || god === '九天')) {
|
|
629
|
+
pushPattern(palace, 'renJia', '人假', `壬、惊门${gong === 2 ? '临坤二宫' : `合${god}`}于${palace.name},合人假之格,主掩捕追寻。`, '适合处理追踪、调查、找人找物这类事,但仍要避开强冲硬碰。', '追寻有路、掩捕得机、调查推进', [heaven, door, gong === 2 ? '坤二' : god]);
|
|
630
|
+
}
|
|
631
|
+
if (isWuJiaThingByDu || (door === '伤门' && god === '六合' && wuJiaThingStems.includes(heaven))) {
|
|
632
|
+
const source = isWuJiaThingByDu ? `丁奇、太阴、杜门下临地盘己于${palace.name}` : `${heaven}、伤门、六合同宫于${palace.name}`;
|
|
633
|
+
pushPattern(palace, 'wuJia', '物假', `${source},合物假之格,主阴私谋密、暗中筹划。`, '适合处理私下协商、保密筹划和不宜公开的安排。', '私下谋划有进展、隐秘事务可推进', isWuJiaThingByDu ? ['丁', '太阴', '杜门', '己'] : [heaven, door, god]);
|
|
634
|
+
}
|
|
635
|
+
if (door === '死门' && wuJiaControlStems.includes(heaven) && god === '九地') {
|
|
636
|
+
pushPattern(palace, 'guiJia', '鬼假', `死门、${heaven}、九地同宫于${palace.name},合鬼假之格,主安葬荐度、处理沉滞旧事。`, '适合收尾、整理旧账、处理长期搁置或需要安顿的事情,不宜当作开创新局的信号。', '旧事收束、沉滞事务可安顿', [door, heaven, god]);
|
|
637
|
+
}
|
|
638
|
+
if (door === '伤门' && heaven === '庚' && gong === 4) {
|
|
639
|
+
pushPattern(palace, 'shenJia', '神假', `六庚、伤门到巽四宫于${palace.name},合神假之格,主私行得便、间谋可用。`, '适合低调行动、暗线推进和需要避开正面冲突的安排,不适合作公开强攻。', '私行得便、暗线推进、谋事有隙', ['庚', door, '巽四']);
|
|
640
|
+
}
|
|
641
|
+
});
|
|
398
642
|
return out;
|
|
399
643
|
}
|
|
400
644
|
/**
|
|
@@ -455,7 +699,7 @@ function getSanQiShengDianPatterns(jiuGongGe) {
|
|
|
455
699
|
/**
|
|
456
700
|
* 识别三奇入墓格局
|
|
457
701
|
*
|
|
458
|
-
*
|
|
702
|
+
* 《奇门遁甲统宗》:「三奇入墓者,乙未到坤,丙奇到乾,丁奇到艮」
|
|
459
703
|
* 乙入坤2(未墓),丙入乾6(戌墓),丁入艮8(丑墓)
|
|
460
704
|
*
|
|
461
705
|
* @param jiuGongGe - 九宫格数据(检查天盘三奇落入墓宫)
|
|
@@ -467,16 +711,15 @@ function getSanQiRuMuPatterns(jiuGongGe) {
|
|
|
467
711
|
const heaven = palace.tianPan.stem;
|
|
468
712
|
const gong = palace.gong;
|
|
469
713
|
const config = sanQiRuMuConfig[heaven];
|
|
470
|
-
const
|
|
471
|
-
|
|
472
|
-
if (!config || tombPalace !== gong || !tombBranch)
|
|
714
|
+
const tomb = sanQiRuMuTombMap[heaven];
|
|
715
|
+
if (!config || !tomb || tomb.palace !== gong)
|
|
473
716
|
return;
|
|
474
717
|
out.push({
|
|
475
718
|
key: `pattern:${config.key}:${gong}`,
|
|
476
719
|
name: config.name,
|
|
477
720
|
tone: 'bad',
|
|
478
721
|
score: config.score,
|
|
479
|
-
summary: `${heaven}奇入${palace.name}
|
|
722
|
+
summary: `${heaven}奇入${palace.name}(三奇墓在${tomb.branch}),${config.name},${config.result}。`,
|
|
480
723
|
modern: config.modern,
|
|
481
724
|
manifestation: config.manifestation,
|
|
482
725
|
palace: gong,
|
|
@@ -485,6 +728,36 @@ function getSanQiRuMuPatterns(jiuGongGe) {
|
|
|
485
728
|
});
|
|
486
729
|
return out;
|
|
487
730
|
}
|
|
731
|
+
/**
|
|
732
|
+
* 识别三奇受制格局
|
|
733
|
+
*
|
|
734
|
+
* 《奇门宝鉴御定》:「奇制者;乙奇临六、七宫,木制于金。
|
|
735
|
+
* 丙丁奇临一宫,火制于水也。三奇受制,占与墓同。」
|
|
736
|
+
*
|
|
737
|
+
* @param jiuGongGe - 九宫格数据(检查天盘三奇落入受制宫)
|
|
738
|
+
* @returns 检测到的三奇受制格局列表
|
|
739
|
+
*/
|
|
740
|
+
function getSanQiShouZhiPatterns(jiuGongGe) {
|
|
741
|
+
const out = [];
|
|
742
|
+
jiuGongGe.forEach((palace) => {
|
|
743
|
+
const heaven = palace.tianPan.stem;
|
|
744
|
+
const config = sanQiShouZhiConfig[heaven];
|
|
745
|
+
if (!config || !config.gongs.includes(palace.gong))
|
|
746
|
+
return;
|
|
747
|
+
out.push({
|
|
748
|
+
key: `pattern:${config.key}:${palace.gong}`,
|
|
749
|
+
name: config.name,
|
|
750
|
+
tone: 'bad',
|
|
751
|
+
score: config.score,
|
|
752
|
+
summary: `${heaven}奇临${palace.name},${config.reason},为三奇受制,${config.result}。`,
|
|
753
|
+
modern: config.modern,
|
|
754
|
+
manifestation: config.manifestation,
|
|
755
|
+
palace: palace.gong,
|
|
756
|
+
tokens: [heaven, palace.name, config.reason],
|
|
757
|
+
});
|
|
758
|
+
});
|
|
759
|
+
return out;
|
|
760
|
+
}
|
|
488
761
|
/**
|
|
489
762
|
* 识别三奇会甲格局
|
|
490
763
|
*
|
|
@@ -550,59 +823,94 @@ function getZhiFuZhiShiPatterns(jiuGongGe, zhiFu, zhiShi) {
|
|
|
550
823
|
return out;
|
|
551
824
|
}
|
|
552
825
|
/**
|
|
553
|
-
*
|
|
826
|
+
* 识别相佐、守户格局
|
|
554
827
|
*
|
|
555
|
-
*
|
|
556
|
-
*
|
|
557
|
-
* 天乙伏干格——天盘庚+地盘值符天干(庚克制值符,贵人受压)
|
|
828
|
+
* 《遁甲演义》:「符加丙丁为相佐,使加六丁为守户。」
|
|
829
|
+
* 相佐看值符星所在宫的地盘丙/丁;守户看值使门所在宫的地盘丁。
|
|
558
830
|
*
|
|
559
831
|
* @param jiuGongGe - 九宫格数据
|
|
560
832
|
* @param zhiFu - 值符星
|
|
561
|
-
* @
|
|
833
|
+
* @param zhiShi - 值使门
|
|
834
|
+
* @returns 检测到的相佐、守户格局列表
|
|
562
835
|
*/
|
|
563
|
-
function
|
|
836
|
+
function getXiangZuoShouHuPatterns(jiuGongGe, zhiFu, zhiShi) {
|
|
837
|
+
const out = [];
|
|
838
|
+
if (zhiFu) {
|
|
839
|
+
const fuPalace = jiuGongGe.find((p) => p.tianPan.star === zhiFu);
|
|
840
|
+
if (fuPalace && (fuPalace.diPan.stem === '丙' || fuPalace.diPan.stem === '丁')) {
|
|
841
|
+
out.push({
|
|
842
|
+
key: `pattern:xiangZuo:${fuPalace.gong}`,
|
|
843
|
+
name: '相佐',
|
|
844
|
+
tone: 'good',
|
|
845
|
+
score: 4,
|
|
846
|
+
summary: `值符${zhiFu}加地盘${fuPalace.diPan.stem}于${fuPalace.name},合“符加丙丁为相佐”,主助力相辅。`,
|
|
847
|
+
modern: '今天关键人或关键资源有辅助作用,适合借力推进,但仍要结合门星吉凶判断力度。',
|
|
848
|
+
manifestation: '贵人助力、关键资源配合、推进有人相帮',
|
|
849
|
+
palace: fuPalace.gong,
|
|
850
|
+
tokens: [zhiFu, fuPalace.diPan.stem],
|
|
851
|
+
});
|
|
852
|
+
}
|
|
853
|
+
}
|
|
854
|
+
if (zhiShi) {
|
|
855
|
+
const shiPalace = findDoorPalace(jiuGongGe, zhiShi);
|
|
856
|
+
if (shiPalace && shiPalace.diPan.stem === '丁') {
|
|
857
|
+
out.push({
|
|
858
|
+
key: `pattern:shouHu:${shiPalace.gong}`,
|
|
859
|
+
name: '守户',
|
|
860
|
+
tone: 'good',
|
|
861
|
+
score: 4,
|
|
862
|
+
summary: `值使${zhiShi}加地盘丁奇于${shiPalace.name},合“使加六丁为守户”,主门户得护。`,
|
|
863
|
+
modern: '今天行动入口、沟通窗口或办事通道有保护与缓冲,适合稳住关键环节后再推进。',
|
|
864
|
+
manifestation: '入口得护、手续有缓冲、关键通道较稳',
|
|
865
|
+
palace: shiPalace.gong,
|
|
866
|
+
tokens: [zhiShi, '丁'],
|
|
867
|
+
});
|
|
868
|
+
}
|
|
869
|
+
}
|
|
870
|
+
return out;
|
|
871
|
+
}
|
|
872
|
+
/**
|
|
873
|
+
* 识别天乙飞宫格与天乙伏宫格
|
|
874
|
+
*
|
|
875
|
+
* 《奇门遁甲统宗》:
|
|
876
|
+
* 值符加庚为天乙飞宫,庚加地下值符宫为天乙伏宫。
|
|
877
|
+
* 这里的值符干应取当前值符星实际携带的天盘干,不是九星固定本气。
|
|
878
|
+
*
|
|
879
|
+
* @param jiuGongGe - 九宫格数据
|
|
880
|
+
* @param zhiFu - 值符星
|
|
881
|
+
* @returns 检测到的天乙飞宫格/伏宫格列表
|
|
882
|
+
*/
|
|
883
|
+
function getTianYiGongGePatterns(jiuGongGe, zhiFu) {
|
|
564
884
|
const out = [];
|
|
565
885
|
if (!zhiFu)
|
|
566
886
|
return out;
|
|
567
|
-
|
|
568
|
-
const
|
|
569
|
-
天蓬: '壬',
|
|
570
|
-
天芮: '己',
|
|
571
|
-
天冲: '甲',
|
|
572
|
-
天辅: '乙',
|
|
573
|
-
天禽: '戊',
|
|
574
|
-
天心: '辛',
|
|
575
|
-
天柱: '庚',
|
|
576
|
-
天任: '丙',
|
|
577
|
-
天英: '丁',
|
|
578
|
-
};
|
|
579
|
-
const tianYiStem = starToStem[zhiFu];
|
|
887
|
+
const tianYiPal = jiuGongGe.find((palace) => palace.tianPan.star === zhiFu);
|
|
888
|
+
const tianYiStem = tianYiPal?.tianPan.stem;
|
|
580
889
|
if (!tianYiStem || tianYiStem === '庚')
|
|
581
890
|
return out;
|
|
582
|
-
//
|
|
583
|
-
const tianYiPal = findStemPalace(jiuGongGe, tianYiStem, 'tianPan');
|
|
891
|
+
// 天乙飞宫格:值符天干(天盘)+ 地盘庚
|
|
584
892
|
if (tianYiPal && tianYiPal.diPan.stem === '庚') {
|
|
585
893
|
out.push({
|
|
586
|
-
key: `pattern:
|
|
587
|
-
name: '
|
|
894
|
+
key: `pattern:tianYiFeiGongGe:${tianYiPal.gong}`,
|
|
895
|
+
name: '天乙飞宫格',
|
|
588
896
|
tone: 'bad',
|
|
589
897
|
score: -6,
|
|
590
|
-
summary: `值符${tianYiStem}加地盘庚于${tianYiPal.name}
|
|
898
|
+
summary: `值符${zhiFu}所携${tianYiStem}加地盘庚于${tianYiPal.name},名天乙飞宫格,亦名天乙行符与太白格,主值符力量被冲。`,
|
|
591
899
|
modern: '今天贵人运受阻,想帮你的人也不好出手,关键事先靠自己。',
|
|
592
900
|
manifestation: '贵人使不上力、求援被拒',
|
|
593
901
|
palace: tianYiPal.gong,
|
|
594
902
|
tokens: [tianYiStem, '庚'],
|
|
595
903
|
});
|
|
596
904
|
}
|
|
597
|
-
//
|
|
905
|
+
// 天乙伏宫格:天盘庚 + 地盘值符天干
|
|
598
906
|
const gengPal = findStemPalace(jiuGongGe, '庚', 'tianPan');
|
|
599
907
|
if (gengPal && gengPal.diPan.stem === tianYiStem) {
|
|
600
908
|
out.push({
|
|
601
|
-
key: `pattern:
|
|
602
|
-
name: '
|
|
909
|
+
key: `pattern:tianYiFuGongGe:${gengPal.gong}`,
|
|
910
|
+
name: '天乙伏宫格',
|
|
603
911
|
tone: 'bad',
|
|
604
912
|
score: -7,
|
|
605
|
-
summary: `天盘庚加地盘值符${tianYiStem}于${gengPal.name}
|
|
913
|
+
summary: `天盘庚加地盘值符${zhiFu}所携${tianYiStem}于${gengPal.name},名天乙伏宫格,亦名天乙留符格,主贵人受困。`,
|
|
606
914
|
modern: '今天想帮你的人自己也有事缠身,重大支持的渠道先确认再依赖。',
|
|
607
915
|
manifestation: '贵人自顾不暇、支持渠道不畅',
|
|
608
916
|
palace: gengPal.gong,
|
|
@@ -612,26 +920,350 @@ function getTianYiGanGePatterns(jiuGongGe, zhiFu) {
|
|
|
612
920
|
return out;
|
|
613
921
|
}
|
|
614
922
|
/**
|
|
615
|
-
*
|
|
923
|
+
* 识别六庚值符勃格与格勃
|
|
616
924
|
*
|
|
617
|
-
*
|
|
925
|
+
* 《奇门宝鉴御定》:「丙加地盘直符之庚为勃格。天上直符之庚,
|
|
926
|
+
* 加于地之六丙为飞勃,亦名符勃。」
|
|
927
|
+
* 此处必须先满足“当前值符星携带天盘庚”,再分别识别丙加庚与庚加丙。
|
|
928
|
+
* 不替代普通丙加庚的荧入太白、庚加丙的太白入荧天地盘干格局。
|
|
618
929
|
*
|
|
619
|
-
* @param
|
|
930
|
+
* @param jiuGongGe - 九宫格数据
|
|
620
931
|
* @param zhiFu - 值符星
|
|
621
|
-
* @returns
|
|
932
|
+
* @returns 检测到的勃格/格勃列表
|
|
933
|
+
*/
|
|
934
|
+
function getGengZhiFuBoGePatterns(jiuGongGe, zhiFu) {
|
|
935
|
+
const out = [];
|
|
936
|
+
if (!zhiFu)
|
|
937
|
+
return out;
|
|
938
|
+
const tianYiPal = jiuGongGe.find((palace) => palace.tianPan.star === zhiFu);
|
|
939
|
+
if (!tianYiPal || tianYiPal.tianPan.stem !== '庚') {
|
|
940
|
+
return out;
|
|
941
|
+
}
|
|
942
|
+
const boGePal = jiuGongGe.find((palace) => palace.tianPan.stem === '丙' && palace.diPan.stem === '庚');
|
|
943
|
+
if (boGePal) {
|
|
944
|
+
out.push({
|
|
945
|
+
key: `pattern:gengZhiFuBoGe:${boGePal.gong}`,
|
|
946
|
+
name: '勃格',
|
|
947
|
+
tone: 'bad',
|
|
948
|
+
score: -8,
|
|
949
|
+
summary: `天盘丙加地盘直符庚于${boGePal.name},值符${zhiFu}携六庚,名勃格,主纲纪紊乱、勃逆难成。`,
|
|
950
|
+
modern: '今天关键推动力容易与规则压力正面相冲,贸然推进会把局面搅乱,先稳住秩序更合适。',
|
|
951
|
+
manifestation: '纲纪紊乱、推进失序、事多反覆',
|
|
952
|
+
palace: boGePal.gong,
|
|
953
|
+
tokens: ['丙', '庚', zhiFu],
|
|
954
|
+
});
|
|
955
|
+
}
|
|
956
|
+
if (tianYiPal.diPan.stem === '丙') {
|
|
957
|
+
out.push({
|
|
958
|
+
key: `pattern:gengZhiFuGeBo:${tianYiPal.gong}`,
|
|
959
|
+
name: '格勃',
|
|
960
|
+
tone: 'bad',
|
|
961
|
+
score: -8,
|
|
962
|
+
summary: `值符${zhiFu}携六庚加地盘丙于${tianYiPal.name},名飞勃,亦为格勃;古法忌把六庚值符临丙误作吉格。`,
|
|
963
|
+
modern: '今天关键主事力量被冲动和阻隔牵制,不宜硬推或主动开战,先守住局面再等转机。',
|
|
964
|
+
manifestation: '主事受阻、强推易生冲突、原本可动之事转为宜守',
|
|
965
|
+
palace: tianYiPal.gong,
|
|
966
|
+
tokens: ['庚', '丙', zhiFu],
|
|
967
|
+
});
|
|
968
|
+
}
|
|
969
|
+
return out;
|
|
970
|
+
}
|
|
971
|
+
function getDayStemForQimen(dayStem, dayGanZhi) {
|
|
972
|
+
if (dayGanZhi)
|
|
973
|
+
return getDunJiaStem(dayGanZhi);
|
|
974
|
+
if (dayStem && dayStem !== '甲')
|
|
975
|
+
return dayStem;
|
|
976
|
+
return '';
|
|
977
|
+
}
|
|
978
|
+
function getGanZhiStemForQimen(ganZhi) {
|
|
979
|
+
if (!ganZhi)
|
|
980
|
+
return '';
|
|
981
|
+
return getDunJiaStem(ganZhi);
|
|
982
|
+
}
|
|
983
|
+
function formatQimenGanZhiStem(label, ganZhi, qimenStem) {
|
|
984
|
+
const displayStem = ganZhi.charAt(0);
|
|
985
|
+
return ganZhi.startsWith('甲')
|
|
986
|
+
? `${label}${displayStem}(${ganZhi}遁${qimenStem})`
|
|
987
|
+
: `${label}${displayStem}`;
|
|
988
|
+
}
|
|
989
|
+
/**
|
|
990
|
+
* 识别日干飞干格与伏干格。
|
|
991
|
+
*
|
|
992
|
+
* 《奇门宝鉴御定》:「六庚为太白,加于日干为伏干格……今日之干,加于六庚为飞干格。」
|
|
993
|
+
* 此格依赖当前日干,不是固定天地盘干组合;甲日以日柱六甲所遁六仪代甲入盘。
|
|
622
994
|
*/
|
|
623
|
-
function
|
|
995
|
+
function getDayGanFeiFuPatterns(jiuGongGe, dayStem, dayGanZhi) {
|
|
624
996
|
const out = [];
|
|
625
|
-
|
|
997
|
+
const qimenDayStem = getDayStemForQimen(dayStem, dayGanZhi);
|
|
998
|
+
if (!qimenDayStem)
|
|
999
|
+
return out;
|
|
1000
|
+
const fuGanPalace = jiuGongGe.find((palace) => palace.tianPan.stem === '庚' && palace.diPan.stem === qimenDayStem);
|
|
1001
|
+
if (fuGanPalace) {
|
|
1002
|
+
out.push({
|
|
1003
|
+
key: `pattern:dayFuGan:${fuGanPalace.gong}`,
|
|
1004
|
+
name: '伏干格',
|
|
1005
|
+
tone: 'bad',
|
|
1006
|
+
score: -6,
|
|
1007
|
+
summary: `天盘庚加日干${dayStem || qimenDayStem}${dayGanZhi?.startsWith('甲') ? `(${dayGanZhi}遁${qimenDayStem})` : ''}于${fuGanPalace.name},合“六庚加日干为伏干格”,主日事受太白阻隔。`,
|
|
1008
|
+
modern: '今天与自身、当日主事相关的事项容易被规则、冲突或外部阻力压住,不宜硬闯。',
|
|
1009
|
+
manifestation: '当日主事受阻、求见不顺、对抗压力增加',
|
|
1010
|
+
palace: fuGanPalace.gong,
|
|
1011
|
+
tokens: ['庚', qimenDayStem],
|
|
1012
|
+
});
|
|
1013
|
+
}
|
|
1014
|
+
const feiGanPalace = jiuGongGe.find((palace) => palace.tianPan.stem === qimenDayStem && palace.diPan.stem === '庚');
|
|
1015
|
+
if (feiGanPalace && feiGanPalace.gong !== fuGanPalace?.gong) {
|
|
1016
|
+
out.push({
|
|
1017
|
+
key: `pattern:dayFeiGan:${feiGanPalace.gong}`,
|
|
1018
|
+
name: '飞干格',
|
|
1019
|
+
tone: 'bad',
|
|
1020
|
+
score: -5,
|
|
1021
|
+
summary: `日干${dayStem || qimenDayStem}${dayGanZhi?.startsWith('甲') ? `(${dayGanZhi}遁${qimenDayStem})` : ''}加地盘庚于${feiGanPalace.name},合“日干加六庚为飞干格”,主日事反临太白,主客两伤。`,
|
|
1022
|
+
modern: '今天主动推进时容易撞上阻隔和争执,先确认规则边界与对方态度,再行动更稳。',
|
|
1023
|
+
manifestation: '主动推进受阻、主客两伤、争执反复',
|
|
1024
|
+
palace: feiGanPalace.gong,
|
|
1025
|
+
tokens: [qimenDayStem, '庚'],
|
|
1026
|
+
});
|
|
1027
|
+
}
|
|
1028
|
+
return out;
|
|
1029
|
+
}
|
|
1030
|
+
/**
|
|
1031
|
+
* 识别岁格、月格、时格。
|
|
1032
|
+
*
|
|
1033
|
+
* 《奇门遁甲统宗》:「岁格 庚临岁干;月格 庚临月干;时格 庚临时干三奇。」
|
|
1034
|
+
* 《奇门宝鉴御定》:「六庚加年干为岁格……六庚加月朔为月格……六庚加本用时干者,为时格。」
|
|
1035
|
+
*
|
|
1036
|
+
* 日干同义格局已由 getDayGanFeiFuPatterns 输出“伏干格”,此处不重复输出“日格”。
|
|
1037
|
+
*/
|
|
1038
|
+
function getGengTemporalGePatterns(jiuGongGe, params) {
|
|
1039
|
+
const specs = [
|
|
1040
|
+
{
|
|
1041
|
+
keyPrefix: 'suiGe',
|
|
1042
|
+
name: '岁格',
|
|
1043
|
+
label: '岁干',
|
|
1044
|
+
ganZhi: params.yearGanZhi,
|
|
1045
|
+
score: -7,
|
|
1046
|
+
modern: '今天的大环境或上级规则容易形成阻隔,重大事项宜先确认外部限制。',
|
|
1047
|
+
manifestation: '年度背景受阻、上层规则牵制、长期事项难推',
|
|
1048
|
+
},
|
|
1049
|
+
{
|
|
1050
|
+
keyPrefix: 'yueGe',
|
|
1051
|
+
name: '月格',
|
|
1052
|
+
label: '月干',
|
|
1053
|
+
ganZhi: params.monthGanZhi,
|
|
1054
|
+
score: -6,
|
|
1055
|
+
modern: '今天阶段性计划、团队协作或月内安排容易卡住,适合先补流程和资源。',
|
|
1056
|
+
manifestation: '阶段计划受阻、协作卡顿、月内事项不顺',
|
|
1057
|
+
},
|
|
1058
|
+
{
|
|
1059
|
+
keyPrefix: 'shiGe',
|
|
1060
|
+
name: '时格',
|
|
1061
|
+
label: '时干',
|
|
1062
|
+
ganZhi: params.hourGanZhi,
|
|
1063
|
+
score: -6,
|
|
1064
|
+
modern: '当前时点阻力较重,临时行动不宜硬推,先守住局面再择机推进。',
|
|
1065
|
+
manifestation: '当下行动受阻、临时冲突增加、宜守不宜攻',
|
|
1066
|
+
},
|
|
1067
|
+
];
|
|
1068
|
+
const out = [];
|
|
1069
|
+
for (const spec of specs) {
|
|
1070
|
+
if (!spec.ganZhi)
|
|
1071
|
+
continue;
|
|
1072
|
+
const qimenStem = getGanZhiStemForQimen(spec.ganZhi);
|
|
1073
|
+
if (!qimenStem)
|
|
1074
|
+
continue;
|
|
1075
|
+
const palace = jiuGongGe.find((item) => item.tianPan.stem === '庚' && item.diPan.stem === qimenStem);
|
|
1076
|
+
if (!palace)
|
|
1077
|
+
continue;
|
|
1078
|
+
const target = formatQimenGanZhiStem(spec.label, spec.ganZhi, qimenStem);
|
|
1079
|
+
out.push({
|
|
1080
|
+
key: `pattern:${spec.keyPrefix}:${palace.gong}`,
|
|
1081
|
+
name: spec.name,
|
|
1082
|
+
tone: 'bad',
|
|
1083
|
+
score: spec.score,
|
|
1084
|
+
summary: `天盘庚加${target}于${palace.name},合“六庚加${spec.label}为${spec.name}”,主事有阻格。`,
|
|
1085
|
+
modern: spec.modern,
|
|
1086
|
+
manifestation: spec.manifestation,
|
|
1087
|
+
palace: palace.gong,
|
|
1088
|
+
tokens: ['庚', qimenStem, spec.ganZhi],
|
|
1089
|
+
});
|
|
1090
|
+
}
|
|
1091
|
+
return out;
|
|
1092
|
+
}
|
|
1093
|
+
/**
|
|
1094
|
+
* 识别丙奇加年月日时干的勃格。
|
|
1095
|
+
*
|
|
1096
|
+
* 《奇门遁甲统宗》:「丙奇临时干名勃格而祸起。」
|
|
1097
|
+
* 《遁甲演义》:「天上六丙加年月日时之干直符类同。凡举百事,主纲纪紊乱。」
|
|
1098
|
+
*/
|
|
1099
|
+
function getBingTemporalBoGePatterns(jiuGongGe, params) {
|
|
1100
|
+
const specs = [
|
|
1101
|
+
{
|
|
1102
|
+
keyPrefix: 'suiGanBoGe',
|
|
1103
|
+
name: '岁干勃格',
|
|
1104
|
+
label: '岁干',
|
|
1105
|
+
ganZhi: params.yearGanZhi,
|
|
1106
|
+
score: -6,
|
|
1107
|
+
modern: '今天的大环境容易出现临时扰动或规则反复,重大事项先稳住节奏。',
|
|
1108
|
+
manifestation: '年度背景扰动、上层规则反复、长期事项易乱',
|
|
1109
|
+
},
|
|
1110
|
+
{
|
|
1111
|
+
keyPrefix: 'yueGanBoGe',
|
|
1112
|
+
name: '月干勃格',
|
|
1113
|
+
label: '月干',
|
|
1114
|
+
ganZhi: params.monthGanZhi,
|
|
1115
|
+
score: -5,
|
|
1116
|
+
modern: '阶段性计划容易被突发沟通、文书或流程打乱,适合先理顺材料。',
|
|
1117
|
+
manifestation: '阶段计划扰动、文书流程反复、协作易乱',
|
|
1118
|
+
},
|
|
1119
|
+
{
|
|
1120
|
+
keyPrefix: 'riGanBoGe',
|
|
1121
|
+
name: '日干勃格',
|
|
1122
|
+
label: '日干',
|
|
1123
|
+
ganZhi: params.dayGanZhi,
|
|
1124
|
+
score: -6,
|
|
1125
|
+
modern: '当天主事容易被突发变动牵动,不宜靠临场冲劲硬推。',
|
|
1126
|
+
manifestation: '当日主事紊乱、临场变动增多、执行反复',
|
|
1127
|
+
},
|
|
1128
|
+
{
|
|
1129
|
+
keyPrefix: 'shiGanBoGe',
|
|
1130
|
+
name: '时干勃格',
|
|
1131
|
+
label: '时干',
|
|
1132
|
+
ganZhi: params.hourGanZhi,
|
|
1133
|
+
score: -6,
|
|
1134
|
+
modern: '当前时点容易出现节奏失控或临时反复,先控风险再行动。',
|
|
1135
|
+
manifestation: '当下行动紊乱、临时反复增加、宜先稳后动',
|
|
1136
|
+
},
|
|
1137
|
+
];
|
|
1138
|
+
const out = [];
|
|
1139
|
+
for (const spec of specs) {
|
|
1140
|
+
if (!spec.ganZhi)
|
|
1141
|
+
continue;
|
|
1142
|
+
const qimenStem = getGanZhiStemForQimen(spec.ganZhi);
|
|
1143
|
+
if (!qimenStem)
|
|
1144
|
+
continue;
|
|
1145
|
+
const palace = jiuGongGe.find((item) => item.tianPan.stem === '丙' && item.diPan.stem === qimenStem);
|
|
1146
|
+
if (!palace)
|
|
1147
|
+
continue;
|
|
1148
|
+
const target = formatQimenGanZhiStem(spec.label, spec.ganZhi, qimenStem);
|
|
1149
|
+
out.push({
|
|
1150
|
+
key: `pattern:${spec.keyPrefix}:${palace.gong}`,
|
|
1151
|
+
name: spec.name,
|
|
1152
|
+
tone: 'bad',
|
|
1153
|
+
score: spec.score,
|
|
1154
|
+
summary: `天盘丙加${target}于${palace.name},合“丙奇临${spec.label}名为勃格”,主纲纪紊乱、行动逆乱。`,
|
|
1155
|
+
modern: spec.modern,
|
|
1156
|
+
manifestation: spec.manifestation,
|
|
1157
|
+
palace: palace.gong,
|
|
1158
|
+
tokens: ['丙', qimenStem, spec.ganZhi],
|
|
1159
|
+
});
|
|
1160
|
+
}
|
|
1161
|
+
return out;
|
|
1162
|
+
}
|
|
1163
|
+
/**
|
|
1164
|
+
* 识别六壬临时干的地罗遮蔽。
|
|
1165
|
+
*
|
|
1166
|
+
* 《奇门遁甲统宗》:「地罗遮蔽 六壬临时干。」
|
|
1167
|
+
* 《遁甲演义》:「天网四张格地网即壬临时干不赘。」
|
|
1168
|
+
*/
|
|
1169
|
+
function getRenTemporalDiLuoPatterns(jiuGongGe, hourGanZhi) {
|
|
1170
|
+
if (!hourGanZhi)
|
|
1171
|
+
return [];
|
|
1172
|
+
const qimenStem = getGanZhiStemForQimen(hourGanZhi);
|
|
1173
|
+
if (!qimenStem)
|
|
1174
|
+
return [];
|
|
1175
|
+
const palace = jiuGongGe.find((item) => item.tianPan.stem === '壬' && item.diPan.stem === qimenStem);
|
|
1176
|
+
if (!palace)
|
|
1177
|
+
return [];
|
|
1178
|
+
const target = formatQimenGanZhiStem('时干', hourGanZhi, qimenStem);
|
|
1179
|
+
return [
|
|
1180
|
+
{
|
|
1181
|
+
key: `pattern:diLuoZheBi:${palace.gong}`,
|
|
1182
|
+
name: '地罗遮蔽',
|
|
1183
|
+
tone: 'bad',
|
|
1184
|
+
score: -5,
|
|
1185
|
+
summary: `天盘壬加${target}于${palace.name},合“六壬临时干”为地罗遮蔽,亦称地网,主前路遮障、行动受困。`,
|
|
1186
|
+
modern: '当前时点容易被隐性阻碍、拖延或环境不明卡住,出行和推进先查清路线与条件。',
|
|
1187
|
+
manifestation: '前路遮障、信息不明、行动受困、推进迟滞',
|
|
1188
|
+
palace: palace.gong,
|
|
1189
|
+
tokens: ['壬', qimenStem, hourGanZhi],
|
|
1190
|
+
},
|
|
1191
|
+
];
|
|
1192
|
+
}
|
|
1193
|
+
/**
|
|
1194
|
+
* 识别天辅时与五合时格局
|
|
1195
|
+
*
|
|
1196
|
+
* 《奇门宝鉴御定》:「天辅时者;甲子、甲戌、甲申、甲午、甲辰、甲寅时也。」
|
|
1197
|
+
* 《奇门宝鉴御定》:「五合时者,时与日之干相合也。」
|
|
1198
|
+
* 《遁甲演义》另有按日干组合取天辅时的别传口径,单独降级标注,避免漏判六甲时。
|
|
1199
|
+
*
|
|
1200
|
+
* @param dayStem - 日干
|
|
1201
|
+
* @param hourGanZhi - 时辰干支
|
|
1202
|
+
* @returns 检测到的天辅时、五合时格局列表
|
|
1203
|
+
*/
|
|
1204
|
+
function getTianFuShiPattern(dayStem, hourGanZhi) {
|
|
1205
|
+
const out = [];
|
|
1206
|
+
const sixJiaHours = new Set(['甲子', '甲戌', '甲申', '甲午', '甲辰', '甲寅']);
|
|
1207
|
+
const wuHeHourStemByDayStem = {
|
|
1208
|
+
甲: '己',
|
|
1209
|
+
己: '甲',
|
|
1210
|
+
乙: '庚',
|
|
1211
|
+
庚: '乙',
|
|
1212
|
+
丙: '辛',
|
|
1213
|
+
辛: '丙',
|
|
1214
|
+
丁: '壬',
|
|
1215
|
+
壬: '丁',
|
|
1216
|
+
戊: '癸',
|
|
1217
|
+
癸: '戊',
|
|
1218
|
+
};
|
|
1219
|
+
if (sixJiaHours.has(hourGanZhi)) {
|
|
626
1220
|
out.push({
|
|
627
1221
|
key: 'pattern:tianFuShi',
|
|
628
1222
|
name: '天辅时',
|
|
629
1223
|
tone: 'good',
|
|
630
1224
|
score: 6,
|
|
631
|
-
summary:
|
|
632
|
-
modern: '
|
|
633
|
-
manifestation: '
|
|
634
|
-
tokens: [
|
|
1225
|
+
summary: `${hourGanZhi}时,合《奇门宝鉴御定》六甲天辅时,主解厄助成、诸事可谋。`,
|
|
1226
|
+
modern: '今天有解围和推进的机会,适合处理解释、协调、申诉、化解类事务。',
|
|
1227
|
+
manifestation: '解厄助成、贵人护持',
|
|
1228
|
+
tokens: [hourGanZhi],
|
|
1229
|
+
});
|
|
1230
|
+
}
|
|
1231
|
+
const tianFuShiMap = {
|
|
1232
|
+
甲: '己巳',
|
|
1233
|
+
己: '己巳',
|
|
1234
|
+
乙: '甲申',
|
|
1235
|
+
庚: '甲申',
|
|
1236
|
+
丙: '甲午',
|
|
1237
|
+
辛: '甲午',
|
|
1238
|
+
丁: '甲辰',
|
|
1239
|
+
壬: '甲辰',
|
|
1240
|
+
戊: '甲寅',
|
|
1241
|
+
癸: '甲寅',
|
|
1242
|
+
};
|
|
1243
|
+
const matchedHour = tianFuShiMap[dayStem];
|
|
1244
|
+
if (matchedHour && hourGanZhi === matchedHour && !sixJiaHours.has(hourGanZhi)) {
|
|
1245
|
+
out.push({
|
|
1246
|
+
key: 'pattern:tianFuShiVariant',
|
|
1247
|
+
name: '天辅时(别传)',
|
|
1248
|
+
tone: 'good',
|
|
1249
|
+
score: 4,
|
|
1250
|
+
summary: `${dayStem}日${hourGanZhi}时,合《遁甲演义》别传天辅时,主解厄助成,但与《宝鉴》六甲天辅时分列。`,
|
|
1251
|
+
modern: '今天可借助协调和缓冲来推进事情,但仍要结合门星格局判断,不宜只凭此格定吉。',
|
|
1252
|
+
manifestation: '别传吉时、解厄助成',
|
|
1253
|
+
tokens: [dayStem, hourGanZhi],
|
|
1254
|
+
});
|
|
1255
|
+
}
|
|
1256
|
+
const hourStem = hourGanZhi.charAt(0);
|
|
1257
|
+
if (wuHeHourStemByDayStem[dayStem] === hourStem) {
|
|
1258
|
+
out.push({
|
|
1259
|
+
key: `pattern:wuHeShi:${dayStem}:${hourGanZhi}`,
|
|
1260
|
+
name: '五合时',
|
|
1261
|
+
tone: 'good',
|
|
1262
|
+
score: 5,
|
|
1263
|
+
summary: `${dayStem}日${hourGanZhi}时,日干与时干五合,合《奇门宝鉴御定》五合时;其吉与天辅时同,但宜谋和合、隐秘诸事,不宜专作雪冤解释。`,
|
|
1264
|
+
modern: '今天适合谈合作、修复关系、暗中协调和处理需要保密推进的事情,但不宜只凭此格处理申诉辩白类事务。',
|
|
1265
|
+
manifestation: '和合隐秘、吉神用事',
|
|
1266
|
+
tokens: [dayStem, hourGanZhi, hourStem],
|
|
635
1267
|
});
|
|
636
1268
|
}
|
|
637
1269
|
return out;
|
|
@@ -642,9 +1274,8 @@ function getTianFuShiPattern(dayStem, zhiFu) {
|
|
|
642
1274
|
/**
|
|
643
1275
|
* 识别玉女守门格局
|
|
644
1276
|
*
|
|
645
|
-
*
|
|
646
|
-
*
|
|
647
|
-
* 主婚姻文书、柔顺得机。
|
|
1277
|
+
* 《奇门宝鉴御定》:「玉女守门者,地盘六丁守直使之门也。」
|
|
1278
|
+
* 玉女守门以值使门加地盘丁奇为核心条件;若值使本身又为三吉门,则更利。
|
|
648
1279
|
*
|
|
649
1280
|
* @param jiuGongGe - 九宫格数据
|
|
650
1281
|
* @param zhiShi - 值使门
|
|
@@ -652,18 +1283,26 @@ function getTianFuShiPattern(dayStem, zhiFu) {
|
|
|
652
1283
|
*/
|
|
653
1284
|
function getYuNvShouMenPattern(jiuGongGe, zhiShi) {
|
|
654
1285
|
const out = [];
|
|
655
|
-
if (!zhiShi
|
|
1286
|
+
if (!zhiShi)
|
|
656
1287
|
return out;
|
|
657
1288
|
const zhiShiPal = findDoorPalace(jiuGongGe, zhiShi);
|
|
658
|
-
if (zhiShiPal && zhiShiPal.
|
|
1289
|
+
if (zhiShiPal && zhiShiPal.diPan.stem === '丁') {
|
|
1290
|
+
const isGoodDoor = auspiciousDoors.includes(zhiShiPal.renPan.door);
|
|
1291
|
+
const doorText = isGoodDoor
|
|
1292
|
+
? `又得${zhiShiPal.renPan.door}三吉门,谋秘密、阴私、宴会和合之事更利。`
|
|
1293
|
+
: `${zhiShiPal.renPan.door}非三吉门,偏利秘密、阴私、和合之事,仍需合看门星吉凶。`;
|
|
659
1294
|
out.push({
|
|
660
1295
|
key: `pattern:yunvShoumen:${zhiShiPal.gong}`,
|
|
661
1296
|
name: '玉女守门',
|
|
662
1297
|
tone: 'good',
|
|
663
|
-
score: 8,
|
|
664
|
-
summary:
|
|
665
|
-
modern:
|
|
666
|
-
|
|
1298
|
+
score: isGoodDoor ? 8 : 4,
|
|
1299
|
+
summary: `值使${zhiShi}加地盘丁奇于${zhiShiPal.name},合《奇门宝鉴御定》“地盘六丁守直使之门”为玉女守门;${doorText}`,
|
|
1300
|
+
modern: isGoodDoor
|
|
1301
|
+
? '今天适合柔性协商、和合关系、处理文书或需要保密推进的事。'
|
|
1302
|
+
: '今天可借柔性方式守住沟通入口,适合保密协调;大事仍要结合门星吉凶再定。',
|
|
1303
|
+
manifestation: isGoodDoor
|
|
1304
|
+
? '关系缓和、文书顺利、和合保密得便'
|
|
1305
|
+
: '入口得护、暗中协调、守秘推进',
|
|
667
1306
|
palace: zhiShiPal.gong,
|
|
668
1307
|
tokens: ['丁', zhiShi],
|
|
669
1308
|
});
|
|
@@ -843,8 +1482,32 @@ function getRuMuPatterns(jiuGongGe, position = 'tianPan') {
|
|
|
843
1482
|
return out;
|
|
844
1483
|
}
|
|
845
1484
|
// ============================================================================
|
|
846
|
-
// 8.
|
|
1485
|
+
// 8. 天地盘干命名格局与关系
|
|
847
1486
|
// ============================================================================
|
|
1487
|
+
function getStemPairNamedPatterns(jiuGongGe) {
|
|
1488
|
+
const out = [];
|
|
1489
|
+
jiuGongGe.forEach((palace) => {
|
|
1490
|
+
const heaven = palace.tianPan.stem;
|
|
1491
|
+
const earth = palace.diPan.stem;
|
|
1492
|
+
if (!heaven || !earth)
|
|
1493
|
+
return;
|
|
1494
|
+
const pattern = getNamedStemPairPattern(heaven, earth);
|
|
1495
|
+
if (!pattern)
|
|
1496
|
+
return;
|
|
1497
|
+
out.push({
|
|
1498
|
+
key: `pattern:stemPair:${heaven}_${earth}:${palace.gong}`,
|
|
1499
|
+
name: pattern.name,
|
|
1500
|
+
tone: pattern.type,
|
|
1501
|
+
score: pattern.score,
|
|
1502
|
+
summary: `天盘${heaven}加地盘${earth}于${palace.name},${pattern.summary}`,
|
|
1503
|
+
modern: pattern.interpretation,
|
|
1504
|
+
manifestation: pattern.manifestation,
|
|
1505
|
+
palace: palace.gong,
|
|
1506
|
+
tokens: [heaven, earth],
|
|
1507
|
+
});
|
|
1508
|
+
});
|
|
1509
|
+
return out;
|
|
1510
|
+
}
|
|
848
1511
|
/**
|
|
849
1512
|
* 识别天地盘干关系
|
|
850
1513
|
*
|
|
@@ -865,6 +1528,17 @@ export function getStemRelations(jiuGongGe) {
|
|
|
865
1528
|
return;
|
|
866
1529
|
const he = stemElements[heaven];
|
|
867
1530
|
const ee = stemElements[earth];
|
|
1531
|
+
const namedPattern = getNamedStemPairPattern(heaven, earth);
|
|
1532
|
+
if (namedPattern) {
|
|
1533
|
+
relations.push({
|
|
1534
|
+
heaven,
|
|
1535
|
+
earth,
|
|
1536
|
+
palace: palace.gong,
|
|
1537
|
+
type: '命名格局',
|
|
1538
|
+
note: `${namedPattern.name}:${namedPattern.summary}`,
|
|
1539
|
+
});
|
|
1540
|
+
return;
|
|
1541
|
+
}
|
|
868
1542
|
// 入墓判断:天盘干落入统一入墓表对应墓宫(入墓与击刑可同宫并存,均独立判定)
|
|
869
1543
|
const tombPalace = getStemTombPalace(heaven);
|
|
870
1544
|
const tombBranch = getStemTombBranch(heaven);
|
|
@@ -969,8 +1643,8 @@ export function getStemRelations(jiuGongGe) {
|
|
|
969
1643
|
*
|
|
970
1644
|
* 涵盖:
|
|
971
1645
|
* 九大遁格(天遁、地遁、人遁、神遁、鬼遁、龙遁、虎遁、风遁、云遁)
|
|
972
|
-
*
|
|
973
|
-
*
|
|
1646
|
+
* 三奇格局(得使、升殿、入墓、会甲)与三诈五假
|
|
1647
|
+
* 值符值使关系(符使同宫、相佐、守户、天乙飞宫格、天乙伏宫格、天辅时)
|
|
974
1648
|
* 玉女守门
|
|
975
1649
|
* 门迫与门宫相生
|
|
976
1650
|
* 击刑
|
|
@@ -986,19 +1660,30 @@ export function getStemRelations(jiuGongGe) {
|
|
|
986
1660
|
* @returns 检测到的所有经典格局列表
|
|
987
1661
|
*/
|
|
988
1662
|
export function getClassicPatterns(ctx) {
|
|
989
|
-
const { jiuGongGe, zhiFu, zhiShi, dayStem } = ctx;
|
|
1663
|
+
const { jiuGongGe, zhiFu, zhiShi, yearGanZhi, monthGanZhi, dayStem, dayGanZhi, hourGanZhi } = ctx;
|
|
990
1664
|
const patterns = [
|
|
991
1665
|
// 1. 九大遁格
|
|
992
1666
|
...getDunPatterns(jiuGongGe),
|
|
993
1667
|
// 2. 三奇格局
|
|
994
|
-
...getSanQiDeShiPatterns(jiuGongGe
|
|
1668
|
+
...getSanQiDeShiPatterns(jiuGongGe),
|
|
1669
|
+
...getBaoJianSanQiDeShiPatterns(jiuGongGe, zhiShi),
|
|
1670
|
+
...getSanQiYouLiuYiPatterns(jiuGongGe, zhiFu),
|
|
1671
|
+
...getSanZhaPatterns(jiuGongGe),
|
|
1672
|
+
...getJiaPatterns(jiuGongGe),
|
|
995
1673
|
...getSanQiShengDianPatterns(jiuGongGe),
|
|
996
1674
|
...getSanQiRuMuPatterns(jiuGongGe),
|
|
1675
|
+
...getSanQiShouZhiPatterns(jiuGongGe),
|
|
997
1676
|
...(dayStem ? getSanQiHuiJiaPattern(jiuGongGe, dayStem) : []),
|
|
998
1677
|
// 3. 值符值使关系
|
|
999
1678
|
...getZhiFuZhiShiPatterns(jiuGongGe, zhiFu, zhiShi),
|
|
1000
|
-
...
|
|
1001
|
-
...(
|
|
1679
|
+
...getXiangZuoShouHuPatterns(jiuGongGe, zhiFu, zhiShi),
|
|
1680
|
+
...getTianYiGongGePatterns(jiuGongGe, zhiFu),
|
|
1681
|
+
...getGengZhiFuBoGePatterns(jiuGongGe, zhiFu),
|
|
1682
|
+
...getDayGanFeiFuPatterns(jiuGongGe, dayStem, dayGanZhi),
|
|
1683
|
+
...getGengTemporalGePatterns(jiuGongGe, { yearGanZhi, monthGanZhi, hourGanZhi }),
|
|
1684
|
+
...getBingTemporalBoGePatterns(jiuGongGe, { yearGanZhi, monthGanZhi, dayGanZhi, hourGanZhi }),
|
|
1685
|
+
...getRenTemporalDiLuoPatterns(jiuGongGe, hourGanZhi),
|
|
1686
|
+
...(dayStem && hourGanZhi ? getTianFuShiPattern(dayStem, hourGanZhi) : []),
|
|
1002
1687
|
// 4. 玉女守门
|
|
1003
1688
|
...getYuNvShouMenPattern(jiuGongGe, zhiShi),
|
|
1004
1689
|
// 5. 八门格局
|
|
@@ -1008,6 +1693,8 @@ export function getClassicPatterns(ctx) {
|
|
|
1008
1693
|
...getJiXingPatterns(jiuGongGe),
|
|
1009
1694
|
// 7. 入墓(天盘干)
|
|
1010
1695
|
...getRuMuPatterns(jiuGongGe, 'tianPan'),
|
|
1696
|
+
// 8. 天地盘干命名格局
|
|
1697
|
+
...getStemPairNamedPatterns(jiuGongGe),
|
|
1011
1698
|
];
|
|
1012
1699
|
// 给所有未手动设置manifest的格局自动补充manifest
|
|
1013
1700
|
const defaultManifest = (tone) => {
|