mingpan 0.1.2 → 0.1.4

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.
Files changed (194) hide show
  1. package/README.md +120 -47
  2. package/dist/core/bazi/BaziCore.d.ts +7 -1
  3. package/dist/core/bazi/BaziCore.d.ts.map +1 -1
  4. package/dist/core/bazi/BaziCore.js +37 -11
  5. package/dist/core/bazi/BaziCore.js.map +1 -1
  6. package/dist/core/bazi/types.d.ts +4 -0
  7. package/dist/core/bazi/types.d.ts.map +1 -1
  8. package/dist/core/qimen/FlyingRule.d.ts +60 -0
  9. package/dist/core/qimen/FlyingRule.d.ts.map +1 -0
  10. package/dist/core/qimen/FlyingRule.js +94 -0
  11. package/dist/core/qimen/FlyingRule.js.map +1 -0
  12. package/dist/core/qimen/GongMapping.d.ts +29 -0
  13. package/dist/core/qimen/GongMapping.d.ts.map +1 -0
  14. package/dist/core/qimen/GongMapping.js +83 -0
  15. package/dist/core/qimen/GongMapping.js.map +1 -0
  16. package/dist/core/qimen/RotatingRule.d.ts +76 -0
  17. package/dist/core/qimen/RotatingRule.d.ts.map +1 -0
  18. package/dist/core/qimen/RotatingRule.js +126 -0
  19. package/dist/core/qimen/RotatingRule.js.map +1 -0
  20. package/dist/core/qimen/YinYangDunCalculator.d.ts +28 -0
  21. package/dist/core/qimen/YinYangDunCalculator.d.ts.map +1 -0
  22. package/dist/core/qimen/YinYangDunCalculator.js +79 -0
  23. package/dist/core/qimen/YinYangDunCalculator.js.map +1 -0
  24. package/dist/core/qimen/index.d.ts +10 -0
  25. package/dist/core/qimen/index.d.ts.map +1 -0
  26. package/dist/core/qimen/index.js +58 -0
  27. package/dist/core/qimen/index.js.map +1 -0
  28. package/dist/core/qimen/types.d.ts +19 -0
  29. package/dist/core/qimen/types.d.ts.map +1 -0
  30. package/dist/core/qimen/types.js +7 -0
  31. package/dist/core/qimen/types.js.map +1 -0
  32. package/dist/index.d.ts +10 -5
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +14 -1311
  35. package/dist/index.js.map +1 -1
  36. package/dist/output/fortuneTextRenderer.d.ts +8 -7
  37. package/dist/output/fortuneTextRenderer.d.ts.map +1 -1
  38. package/dist/output/fortuneTextRenderer.js +83 -21
  39. package/dist/output/fortuneTextRenderer.js.map +1 -1
  40. package/dist/output/qimenTextRenderer.d.ts +36 -0
  41. package/dist/output/qimenTextRenderer.d.ts.map +1 -0
  42. package/dist/output/qimenTextRenderer.js +230 -0
  43. package/dist/output/qimenTextRenderer.js.map +1 -0
  44. package/dist/server.d.ts +11 -0
  45. package/dist/server.d.ts.map +1 -0
  46. package/dist/server.js +33 -0
  47. package/dist/server.js.map +1 -0
  48. package/dist/services/bazi/BaziService.d.ts +1 -17
  49. package/dist/services/bazi/BaziService.d.ts.map +1 -1
  50. package/dist/services/bazi/BaziService.js +9 -194
  51. package/dist/services/bazi/BaziService.js.map +1 -1
  52. package/dist/services/bazi/analyzers/TenGodsAnalyzer.js +12 -12
  53. package/dist/services/bazi/analyzers/TenGodsAnalyzer.js.map +1 -1
  54. package/dist/services/bazi/index.d.ts +0 -2
  55. package/dist/services/bazi/index.d.ts.map +1 -1
  56. package/dist/services/bazi/index.js +1 -5
  57. package/dist/services/bazi/index.js.map +1 -1
  58. package/dist/services/bazi/types.d.ts +4 -112
  59. package/dist/services/bazi/types.d.ts.map +1 -1
  60. package/dist/services/bazi/types.js +3 -102
  61. package/dist/services/bazi/types.js.map +1 -1
  62. package/dist/services/daliuren/DaliurenService.d.ts +11 -1
  63. package/dist/services/daliuren/DaliurenService.d.ts.map +1 -1
  64. package/dist/services/daliuren/DaliurenService.js +30 -0
  65. package/dist/services/daliuren/DaliurenService.js.map +1 -1
  66. package/dist/services/daliuren/calculators/TianDiPanCalculator.d.ts.map +1 -1
  67. package/dist/services/daliuren/calculators/TianDiPanCalculator.js +3 -4
  68. package/dist/services/daliuren/calculators/TianDiPanCalculator.js.map +1 -1
  69. package/dist/services/daliuren/data/constants.d.ts +7 -0
  70. package/dist/services/daliuren/data/constants.d.ts.map +1 -1
  71. package/dist/services/daliuren/data/constants.js +17 -1
  72. package/dist/services/daliuren/data/constants.js.map +1 -1
  73. package/dist/services/daliuren/types.d.ts +13 -0
  74. package/dist/services/daliuren/types.d.ts.map +1 -1
  75. package/dist/services/meihua/calculators/TiyongCalculator.d.ts.map +1 -1
  76. package/dist/services/meihua/calculators/TiyongCalculator.js +6 -5
  77. package/dist/services/meihua/calculators/TiyongCalculator.js.map +1 -1
  78. package/dist/services/qimen/QimenService.d.ts +76 -0
  79. package/dist/services/qimen/QimenService.d.ts.map +1 -0
  80. package/dist/services/qimen/QimenService.js +393 -0
  81. package/dist/services/qimen/QimenService.js.map +1 -0
  82. package/dist/services/qimen/calculators/BaMenCalculator.d.ts +45 -0
  83. package/dist/services/qimen/calculators/BaMenCalculator.d.ts.map +1 -0
  84. package/dist/services/qimen/calculators/BaMenCalculator.js +87 -0
  85. package/dist/services/qimen/calculators/BaMenCalculator.js.map +1 -0
  86. package/dist/services/qimen/calculators/BaShenCalculator.d.ts +34 -0
  87. package/dist/services/qimen/calculators/BaShenCalculator.d.ts.map +1 -0
  88. package/dist/services/qimen/calculators/BaShenCalculator.js +57 -0
  89. package/dist/services/qimen/calculators/BaShenCalculator.js.map +1 -0
  90. package/dist/services/qimen/calculators/GeJuCalculator.d.ts +141 -0
  91. package/dist/services/qimen/calculators/GeJuCalculator.d.ts.map +1 -0
  92. package/dist/services/qimen/calculators/GeJuCalculator.js +711 -0
  93. package/dist/services/qimen/calculators/GeJuCalculator.js.map +1 -0
  94. package/dist/services/qimen/calculators/JiuGongCalculator.d.ts +49 -0
  95. package/dist/services/qimen/calculators/JiuGongCalculator.d.ts.map +1 -0
  96. package/dist/services/qimen/calculators/JiuGongCalculator.js +68 -0
  97. package/dist/services/qimen/calculators/JiuGongCalculator.js.map +1 -0
  98. package/dist/services/qimen/calculators/JiuXingCalculator.d.ts +44 -0
  99. package/dist/services/qimen/calculators/JiuXingCalculator.d.ts.map +1 -0
  100. package/dist/services/qimen/calculators/JiuXingCalculator.js +72 -0
  101. package/dist/services/qimen/calculators/JiuXingCalculator.js.map +1 -0
  102. package/dist/services/qimen/calculators/JuShuCalculator.d.ts +60 -0
  103. package/dist/services/qimen/calculators/JuShuCalculator.d.ts.map +1 -0
  104. package/dist/services/qimen/calculators/JuShuCalculator.js +110 -0
  105. package/dist/services/qimen/calculators/JuShuCalculator.js.map +1 -0
  106. package/dist/services/qimen/calculators/PanTypeCalculator.d.ts +117 -0
  107. package/dist/services/qimen/calculators/PanTypeCalculator.d.ts.map +1 -0
  108. package/dist/services/qimen/calculators/PanTypeCalculator.js +237 -0
  109. package/dist/services/qimen/calculators/PanTypeCalculator.js.map +1 -0
  110. package/dist/services/qimen/calculators/SanQiLiuYiCalculator.d.ts +41 -0
  111. package/dist/services/qimen/calculators/SanQiLiuYiCalculator.d.ts.map +1 -0
  112. package/dist/services/qimen/calculators/SanQiLiuYiCalculator.js +73 -0
  113. package/dist/services/qimen/calculators/SanQiLiuYiCalculator.js.map +1 -0
  114. package/dist/services/qimen/calculators/ShenShaCalculator.d.ts +80 -0
  115. package/dist/services/qimen/calculators/ShenShaCalculator.d.ts.map +1 -0
  116. package/dist/services/qimen/calculators/ShenShaCalculator.js +300 -0
  117. package/dist/services/qimen/calculators/ShenShaCalculator.js.map +1 -0
  118. package/dist/services/qimen/calculators/YongShenCalculator.d.ts +78 -0
  119. package/dist/services/qimen/calculators/YongShenCalculator.d.ts.map +1 -0
  120. package/dist/services/qimen/calculators/YongShenCalculator.js +497 -0
  121. package/dist/services/qimen/calculators/YongShenCalculator.js.map +1 -0
  122. package/dist/services/qimen/calculators/ZhuanPanCalculator.d.ts +111 -0
  123. package/dist/services/qimen/calculators/ZhuanPanCalculator.d.ts.map +1 -0
  124. package/dist/services/qimen/calculators/ZhuanPanCalculator.js +232 -0
  125. package/dist/services/qimen/calculators/ZhuanPanCalculator.js.map +1 -0
  126. package/dist/services/qimen/data/constants.d.ts +105 -0
  127. package/dist/services/qimen/data/constants.d.ts.map +1 -0
  128. package/dist/services/qimen/data/constants.js +295 -0
  129. package/dist/services/qimen/data/constants.js.map +1 -0
  130. package/dist/services/qimen/data/shensha-rules.d.ts +177 -0
  131. package/dist/services/qimen/data/shensha-rules.d.ts.map +1 -0
  132. package/dist/services/qimen/data/shensha-rules.js +397 -0
  133. package/dist/services/qimen/data/shensha-rules.js.map +1 -0
  134. package/dist/services/qimen/data/yongshen-rules.d.ts +115 -0
  135. package/dist/services/qimen/data/yongshen-rules.d.ts.map +1 -0
  136. package/dist/services/qimen/data/yongshen-rules.js +365 -0
  137. package/dist/services/qimen/data/yongshen-rules.js.map +1 -0
  138. package/dist/services/qimen/index.d.ts +20 -0
  139. package/dist/services/qimen/index.d.ts.map +1 -0
  140. package/dist/services/qimen/index.js +43 -0
  141. package/dist/services/qimen/index.js.map +1 -0
  142. package/dist/services/qimen/types.d.ts +316 -0
  143. package/dist/services/qimen/types.d.ts.map +1 -0
  144. package/dist/services/qimen/types.js +21 -0
  145. package/dist/services/qimen/types.js.map +1 -0
  146. package/dist/services/qimen/utils/gongUtils.d.ts +80 -0
  147. package/dist/services/qimen/utils/gongUtils.d.ts.map +1 -0
  148. package/dist/services/qimen/utils/gongUtils.js +164 -0
  149. package/dist/services/qimen/utils/gongUtils.js.map +1 -0
  150. package/dist/shared/logger.d.ts +5 -0
  151. package/dist/shared/logger.d.ts.map +1 -1
  152. package/dist/shared/logger.js +11 -4
  153. package/dist/shared/logger.js.map +1 -1
  154. package/dist/tools/baziTools.d.ts +13 -0
  155. package/dist/tools/baziTools.d.ts.map +1 -0
  156. package/dist/tools/baziTools.js +331 -0
  157. package/dist/tools/baziTools.js.map +1 -0
  158. package/dist/tools/divinationTools.d.ts +9 -0
  159. package/dist/tools/divinationTools.d.ts.map +1 -0
  160. package/dist/tools/divinationTools.js +209 -0
  161. package/dist/tools/divinationTools.js.map +1 -0
  162. package/dist/tools/qimenTools.d.ts +10 -0
  163. package/dist/tools/qimenTools.d.ts.map +1 -0
  164. package/dist/tools/qimenTools.js +132 -0
  165. package/dist/tools/qimenTools.js.map +1 -0
  166. package/dist/tools/schemas.d.ts +99 -0
  167. package/dist/tools/schemas.d.ts.map +1 -0
  168. package/dist/tools/schemas.js +162 -0
  169. package/dist/tools/schemas.js.map +1 -0
  170. package/dist/tools/ziweiTools.d.ts +14 -0
  171. package/dist/tools/ziweiTools.d.ts.map +1 -0
  172. package/dist/tools/ziweiTools.js +483 -0
  173. package/dist/tools/ziweiTools.js.map +1 -0
  174. package/dist/utils/timeNormalization.d.ts +42 -17
  175. package/dist/utils/timeNormalization.d.ts.map +1 -1
  176. package/dist/utils/timeNormalization.js +99 -41
  177. package/dist/utils/timeNormalization.js.map +1 -1
  178. package/package.json +15 -9
  179. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.d.ts +0 -16
  180. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.d.ts.map +0 -1
  181. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.js +0 -60
  182. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.js.map +0 -1
  183. package/dist/services/bazi/analyzers/NaYinAnalyzer.d.ts +0 -33
  184. package/dist/services/bazi/analyzers/NaYinAnalyzer.d.ts.map +0 -1
  185. package/dist/services/bazi/analyzers/NaYinAnalyzer.js +0 -209
  186. package/dist/services/bazi/analyzers/NaYinAnalyzer.js.map +0 -1
  187. package/dist/services/bazi/analyzers/ShenShaAnalyzer.d.ts +0 -236
  188. package/dist/services/bazi/analyzers/ShenShaAnalyzer.d.ts.map +0 -1
  189. package/dist/services/bazi/analyzers/ShenShaAnalyzer.js +0 -2079
  190. package/dist/services/bazi/analyzers/ShenShaAnalyzer.js.map +0 -1
  191. package/dist/services/bazi/analyzers/TraditionalAnalyzer.d.ts +0 -46
  192. package/dist/services/bazi/analyzers/TraditionalAnalyzer.d.ts.map +0 -1
  193. package/dist/services/bazi/analyzers/TraditionalAnalyzer.js +0 -260
  194. package/dist/services/bazi/analyzers/TraditionalAnalyzer.js.map +0 -1
@@ -0,0 +1,497 @@
1
+ "use strict";
2
+ /**
3
+ * 用神计算器
4
+ *
5
+ * 负责根据事类选取用神并分析用神状态
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.YongShenCalculator = void 0;
9
+ const yongshen_rules_1 = require("../data/yongshen-rules");
10
+ const constants_1 = require("../data/constants");
11
+ const gongUtils_1 = require("../utils/gongUtils");
12
+ // ============= 用神计算器 =============
13
+ class YongShenCalculator {
14
+ /**
15
+ * 分析用神
16
+ *
17
+ * @param result 奇门盘结果
18
+ * @param shiLei 事类
19
+ * @param nianGan 可选年干(用于年命分析)
20
+ * @returns 用神分析信息
21
+ */
22
+ static analyze(result, shiLei, nianGan) {
23
+ const config = yongshen_rules_1.YONGSHEN_RULES[shiLei];
24
+ const siZhu = result.timeInfo.siZhu;
25
+ // 构建上下文
26
+ const context = {
27
+ result,
28
+ monthZhi: siZhu.monthGanZhi.charAt(1),
29
+ dayGan: siZhu.dayGan,
30
+ dayZhi: siZhu.dayZhi,
31
+ hourGan: siZhu.hourGan,
32
+ nianGan,
33
+ };
34
+ // 解析主用神
35
+ const zhuyong = this.resolveYongShenItems(config.zhuyong, context);
36
+ // 解析辅用神
37
+ const fuyong = this.resolveYongShenItems(config.fuyong, context);
38
+ // 分析每个用神
39
+ const analysis = this.analyzeYongShenItems([...zhuyong, ...fuyong], context);
40
+ // 主客分析(如果需要)
41
+ let zhuKe;
42
+ if (config.needZhuKe) {
43
+ zhuKe = this.analyzeZhuKe(context);
44
+ }
45
+ // 年命分析(如果提供了年干)
46
+ let nianMingInfo;
47
+ if (nianGan) {
48
+ nianMingInfo = this.analyzeNianMing(nianGan, context);
49
+ }
50
+ return {
51
+ shiLei,
52
+ zhuyong,
53
+ fuyong,
54
+ analysis,
55
+ zhuKe,
56
+ nianMing: nianMingInfo,
57
+ };
58
+ }
59
+ /**
60
+ * 解析用神项列表
61
+ */
62
+ static resolveYongShenItems(rules, context) {
63
+ const items = [];
64
+ for (const rule of rules) {
65
+ const resolved = this.resolveYongShenRule(rule, context);
66
+ if (resolved) {
67
+ items.push(resolved);
68
+ }
69
+ }
70
+ return items;
71
+ }
72
+ /**
73
+ * 解析单个用神规则
74
+ */
75
+ static resolveYongShenRule(rule, context) {
76
+ const { result } = context;
77
+ switch (rule.type) {
78
+ case '门': {
79
+ // 使用安全的门名解析
80
+ const men = (0, gongUtils_1.parseMenName)(rule.name);
81
+ if (!men)
82
+ return null;
83
+ const gong = (0, gongUtils_1.findMenGong)(result, men);
84
+ if (!gong)
85
+ return null;
86
+ return {
87
+ type: '门',
88
+ name: rule.name,
89
+ gong,
90
+ state: this.getGongWangXiang(gong, context),
91
+ };
92
+ }
93
+ case '星': {
94
+ // 使用安全的星名解析
95
+ const xing = (0, gongUtils_1.parseXingName)(rule.name);
96
+ if (!xing)
97
+ return null;
98
+ const gong = (0, gongUtils_1.findXingGong)(result, xing);
99
+ if (!gong)
100
+ return null;
101
+ return {
102
+ type: '星',
103
+ name: rule.name,
104
+ gong,
105
+ state: this.getGongWangXiang(gong, context),
106
+ };
107
+ }
108
+ case '神': {
109
+ const gong = (0, gongUtils_1.findShenGong)(result, rule.name);
110
+ if (!gong)
111
+ return null;
112
+ return {
113
+ type: '神',
114
+ name: rule.name,
115
+ gong,
116
+ state: this.getGongWangXiang(gong, context),
117
+ };
118
+ }
119
+ case '奇': {
120
+ // 日干、时干、马星等特殊用神
121
+ if (rule.name === '日干') {
122
+ return {
123
+ type: '奇',
124
+ name: `日干(${context.dayGan})`,
125
+ gong: result.dayGanGong,
126
+ state: this.getGongWangXiang(result.dayGanGong, context),
127
+ };
128
+ }
129
+ if (rule.name === '时干') {
130
+ return {
131
+ type: '奇',
132
+ name: `时干(${context.hourGan})`,
133
+ gong: result.hourGanGong,
134
+ state: this.getGongWangXiang(result.hourGanGong, context),
135
+ };
136
+ }
137
+ if (rule.name === '马星') {
138
+ const maGong = this.findMaXingGong(result, context.dayZhi);
139
+ if (!maGong)
140
+ return null;
141
+ return {
142
+ type: '奇',
143
+ name: '马星',
144
+ gong: maGong,
145
+ state: this.getGongWangXiang(maGong, context),
146
+ };
147
+ }
148
+ // 三奇(乙丙丁)
149
+ if (['乙', '丙', '丁'].includes(rule.name)) {
150
+ const gan = rule.name;
151
+ const gong = (0, gongUtils_1.findGanGong)(result, gan);
152
+ if (!gong)
153
+ return null;
154
+ return {
155
+ type: '奇',
156
+ name: `${gan}奇`,
157
+ gong,
158
+ state: this.getGongWangXiang(gong, context),
159
+ };
160
+ }
161
+ return null;
162
+ }
163
+ case '仪': {
164
+ // 六仪(戊己庚辛壬癸)
165
+ if (rule.name === '六仪') {
166
+ // 特殊处理:返回戊仪作为代表
167
+ const gong = (0, gongUtils_1.findGanGong)(result, '戊');
168
+ if (!gong)
169
+ return null;
170
+ return {
171
+ type: '仪',
172
+ name: '戊仪',
173
+ gong,
174
+ state: this.getGongWangXiang(gong, context),
175
+ };
176
+ }
177
+ if (rule.name === '天盘戊') {
178
+ // 天盘戊的位置
179
+ const gong = (0, gongUtils_1.findTianPanGanGong)(result, '戊');
180
+ if (!gong)
181
+ return null;
182
+ return {
183
+ type: '仪',
184
+ name: '天盘戊',
185
+ gong,
186
+ state: this.getGongWangXiang(gong, context),
187
+ };
188
+ }
189
+ // 具体六仪
190
+ const gan = rule.name;
191
+ if (['戊', '己', '庚', '辛', '壬', '癸'].includes(gan)) {
192
+ const gong = (0, gongUtils_1.findGanGong)(result, gan);
193
+ if (!gong)
194
+ return null;
195
+ return {
196
+ type: '仪',
197
+ name: `${gan}仪`,
198
+ gong,
199
+ state: this.getGongWangXiang(gong, context),
200
+ };
201
+ }
202
+ return null;
203
+ }
204
+ default:
205
+ return null;
206
+ }
207
+ }
208
+ /**
209
+ * 分析用神项列表
210
+ */
211
+ static analyzeYongShenItems(items, context) {
212
+ return items.map(item => this.analyzeYongShenItem(item, context));
213
+ }
214
+ /**
215
+ * 分析单个用神
216
+ */
217
+ static analyzeYongShenItem(item, context) {
218
+ const { result } = context;
219
+ const gong = item.gong;
220
+ const gongInfo = result.gongs[gong];
221
+ // 检测空亡
222
+ const isKong = gongInfo.isKong;
223
+ // 检测入墓
224
+ const isRuMu = this.checkRuMu(item, gong, context);
225
+ // 检测击刑
226
+ const isJiXing = this.checkJiXing(gong, context);
227
+ // 与日干关系
228
+ const relationToDay = this.calcDayGanRelation(item, context);
229
+ // 受格局影响
230
+ const geJuEffects = this.getGeJuEffects(gong, result);
231
+ // 计算评分
232
+ const score = this.calcYongShenScore(item.state, isKong, isRuMu, isJiXing, relationToDay, geJuEffects);
233
+ return {
234
+ yongshen: item.name,
235
+ gong,
236
+ isKong,
237
+ isRuMu,
238
+ isJiXing,
239
+ relationToDay,
240
+ geJuEffects,
241
+ score,
242
+ };
243
+ }
244
+ /**
245
+ * 主客分析
246
+ */
247
+ static analyzeZhuKe(context) {
248
+ const { result, dayGan, hourGan } = context;
249
+ const zhuGong = result.dayGanGong;
250
+ const keGong = result.hourGanGong;
251
+ const zhuState = this.getGongWangXiang(zhuGong, context);
252
+ const keState = this.getGongWangXiang(keGong, context);
253
+ // 计算主客关系
254
+ const zhuWuXing = yongshen_rules_1.GAN_WUXING[dayGan];
255
+ const keWuXing = yongshen_rules_1.GAN_WUXING[hourGan];
256
+ const relation = this.calcZhuKeRelation(zhuWuXing, keWuXing);
257
+ // 生成简要结论
258
+ const summary = this.generateZhuKeSummary(zhuState, keState, relation);
259
+ return {
260
+ zhu: { gong: zhuGong, state: zhuState },
261
+ ke: { gong: keGong, state: keState },
262
+ relation,
263
+ summary,
264
+ };
265
+ }
266
+ /**
267
+ * 年命分析
268
+ */
269
+ static analyzeNianMing(nianGan, context) {
270
+ const { result } = context;
271
+ // 找年干落宫
272
+ const gong = (0, gongUtils_1.findGanGong)(result, nianGan);
273
+ const actualGong = gong || result.dayGanGong; // 如果找不到,默认日干落宫
274
+ return {
275
+ nianGan,
276
+ gong: actualGong,
277
+ state: this.getGongWangXiang(actualGong, context),
278
+ };
279
+ }
280
+ // ============= 辅助方法 =============
281
+ /**
282
+ * 找马星落宫
283
+ */
284
+ static findMaXingGong(result, dayZhi) {
285
+ // 马星地支
286
+ const MA_XING = {
287
+ '申': '寅', '子': '寅', '辰': '寅',
288
+ '寅': '申', '午': '申', '戌': '申',
289
+ '亥': '巳', '卯': '巳', '未': '巳',
290
+ '巳': '亥', '酉': '亥', '丑': '亥',
291
+ };
292
+ const maZhi = MA_XING[dayZhi];
293
+ if (!maZhi)
294
+ return null;
295
+ const maGong = constants_1.DI_ZHI_GONG[maZhi];
296
+ return maGong || null;
297
+ }
298
+ /**
299
+ * 获取宫位旺相休囚死状态
300
+ */
301
+ static getGongWangXiang(gong, context) {
302
+ const gongWuXing = constants_1.GONG_WUXING[gong];
303
+ const table = yongshen_rules_1.WANGXIANG_TABLE[context.monthZhi];
304
+ return table ? table[gongWuXing] : '休';
305
+ }
306
+ /**
307
+ * 检测入墓
308
+ */
309
+ static checkRuMu(item, gong, context) {
310
+ // 获取用神五行
311
+ let wuXing = null;
312
+ if (item.type === '奇' || item.type === '仪') {
313
+ // 从名称提取天干
314
+ const ganMatch = item.name.match(/([甲乙丙丁戊己庚辛壬癸])/);
315
+ if (ganMatch) {
316
+ wuXing = yongshen_rules_1.GAN_WUXING[ganMatch[1]];
317
+ }
318
+ }
319
+ else if (item.type === '门') {
320
+ const men = (0, gongUtils_1.parseMenName)(item.name);
321
+ if (men)
322
+ wuXing = yongshen_rules_1.MEN_WUXING[men];
323
+ }
324
+ else if (item.type === '星') {
325
+ const xing = (0, gongUtils_1.parseXingName)(item.name);
326
+ if (xing)
327
+ wuXing = yongshen_rules_1.XING_WUXING[xing];
328
+ }
329
+ else if (item.type === '神') {
330
+ // 使用共享的 SHEN_NAME_MAP
331
+ const shen = gongUtils_1.SHEN_NAME_MAP[item.name];
332
+ if (shen) {
333
+ wuXing = yongshen_rules_1.SHEN_WUXING[shen];
334
+ }
335
+ }
336
+ if (!wuXing)
337
+ return false;
338
+ // 获取宫位对应地支
339
+ const gongZhi = (0, gongUtils_1.getGongDiZhi)(gong);
340
+ // 检查是否落入墓库
341
+ return yongshen_rules_1.RUMU_TABLE[wuXing] === gongZhi;
342
+ }
343
+ /**
344
+ * 检测击刑
345
+ */
346
+ static checkJiXing(gong, context) {
347
+ const gongZhi = (0, gongUtils_1.getGongDiZhi)(gong);
348
+ const xingList = yongshen_rules_1.XING_TABLE[context.dayZhi] || [];
349
+ return xingList.includes(gongZhi);
350
+ }
351
+ /**
352
+ * 计算与日干关系
353
+ */
354
+ static calcDayGanRelation(item, context) {
355
+ const dayWuXing = yongshen_rules_1.GAN_WUXING[context.dayGan];
356
+ // 获取用神五行
357
+ let yongWuXing = null;
358
+ if (item.type === '奇' || item.type === '仪') {
359
+ const ganMatch = item.name.match(/([甲乙丙丁戊己庚辛壬癸])/);
360
+ if (ganMatch) {
361
+ yongWuXing = yongshen_rules_1.GAN_WUXING[ganMatch[1]];
362
+ }
363
+ }
364
+ else if (item.type === '门') {
365
+ const men = (0, gongUtils_1.parseMenName)(item.name);
366
+ if (men)
367
+ yongWuXing = yongshen_rules_1.MEN_WUXING[men];
368
+ }
369
+ else if (item.type === '星') {
370
+ const xing = (0, gongUtils_1.parseXingName)(item.name);
371
+ if (xing)
372
+ yongWuXing = yongshen_rules_1.XING_WUXING[xing];
373
+ }
374
+ else if (item.type === '神') {
375
+ // 使用共享的 SHEN_NAME_MAP
376
+ const shen = gongUtils_1.SHEN_NAME_MAP[item.name];
377
+ if (shen)
378
+ yongWuXing = yongshen_rules_1.SHEN_WUXING[shen];
379
+ }
380
+ if (!yongWuXing)
381
+ return '比';
382
+ // 判断关系
383
+ if (yongWuXing === dayWuXing)
384
+ return '比';
385
+ if (yongshen_rules_1.WUXING_SHENG[yongWuXing] === dayWuXing)
386
+ return '生'; // 用神生日干
387
+ if (yongshen_rules_1.WUXING_KE[yongWuXing] === dayWuXing)
388
+ return '克'; // 用神克日干
389
+ if (yongshen_rules_1.WUXING_SHENG[dayWuXing] === yongWuXing)
390
+ return '泄'; // 日干生用神
391
+ if (yongshen_rules_1.WUXING_KE[dayWuXing] === yongWuXing)
392
+ return '耗'; // 日干克用神
393
+ return '比';
394
+ }
395
+ /**
396
+ * 获取格局影响
397
+ */
398
+ static getGeJuEffects(gong, result) {
399
+ const effects = [];
400
+ for (const geJu of result.geJu) {
401
+ if (geJu.gongs.includes(gong)) {
402
+ effects.push(`${geJu.name}(${geJu.type})`);
403
+ }
404
+ }
405
+ return effects;
406
+ }
407
+ /**
408
+ * 计算用神评分
409
+ */
410
+ static calcYongShenScore(state, isKong, isRuMu, isJiXing, relation, geJuEffects) {
411
+ const weights = yongshen_rules_1.YONGSHEN_SCORE_WEIGHTS;
412
+ let score = 50; // 基础分
413
+ // 旺相休囚死
414
+ score += weights.wangXiang[state];
415
+ // 空亡
416
+ if (isKong)
417
+ score += weights.kongWang;
418
+ // 入墓
419
+ if (isRuMu)
420
+ score += weights.ruMu;
421
+ // 击刑
422
+ if (isJiXing)
423
+ score += weights.jiXing;
424
+ // 与日干关系
425
+ score += weights.dayRelation[relation];
426
+ // 格局影响
427
+ for (const effect of geJuEffects) {
428
+ if (effect.includes('吉格')) {
429
+ score += weights.jiGe;
430
+ }
431
+ else if (effect.includes('凶格')) {
432
+ score += weights.xiongGe;
433
+ }
434
+ }
435
+ // 限制范围
436
+ return Math.max(0, Math.min(100, score));
437
+ }
438
+ /**
439
+ * 计算主客关系
440
+ */
441
+ static calcZhuKeRelation(zhuWuXing, keWuXing) {
442
+ if (zhuWuXing === keWuXing)
443
+ return '比和';
444
+ if (yongshen_rules_1.WUXING_KE[zhuWuXing] === keWuXing)
445
+ return '我克彼';
446
+ if (yongshen_rules_1.WUXING_KE[keWuXing] === zhuWuXing)
447
+ return '彼克我';
448
+ if (yongshen_rules_1.WUXING_SHENG[zhuWuXing] === keWuXing)
449
+ return '我生彼';
450
+ if (yongshen_rules_1.WUXING_SHENG[keWuXing] === zhuWuXing)
451
+ return '彼生我';
452
+ return '比和';
453
+ }
454
+ /**
455
+ * 生成主客分析结论
456
+ */
457
+ static generateZhuKeSummary(zhuState, keState, relation) {
458
+ const stateScore = (s) => {
459
+ const scores = { '旺': 5, '相': 4, '休': 3, '囚': 2, '死': 1 };
460
+ return scores[s];
461
+ };
462
+ const zhuScore = stateScore(zhuState);
463
+ const keScore = stateScore(keState);
464
+ let summary = '';
465
+ // 状态对比
466
+ if (zhuScore > keScore) {
467
+ summary = '我方状态优于对方';
468
+ }
469
+ else if (zhuScore < keScore) {
470
+ summary = '对方状态优于我方';
471
+ }
472
+ else {
473
+ summary = '双方状态相当';
474
+ }
475
+ // 关系补充
476
+ switch (relation) {
477
+ case '我克彼':
478
+ summary += ',我方占主动';
479
+ break;
480
+ case '彼克我':
481
+ summary += ',对方占主动';
482
+ break;
483
+ case '比和':
484
+ summary += ',双方势均力敌';
485
+ break;
486
+ case '我生彼':
487
+ summary += ',我方有付出之象';
488
+ break;
489
+ case '彼生我':
490
+ summary += ',对方有付出之象';
491
+ break;
492
+ }
493
+ return summary;
494
+ }
495
+ }
496
+ exports.YongShenCalculator = YongShenCalculator;
497
+ //# sourceMappingURL=YongShenCalculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YongShenCalculator.js","sourceRoot":"","sources":["../../../../src/services/qimen/calculators/YongShenCalculator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * 转盘式奇门计算器
3
+ * Rotating style Qimen calculator (following《神奇之门》)
4
+ *
5
+ * 转盘式核心规则:
6
+ * 1. 天盘、九星、八门是三个「物理转盘」,盘内元素相对顺序恒定不变
7
+ * 2. 转盘环序(物理顺时针,从坎一宫起):坎→艮→震→巽→离→坤→兑→乾
8
+ * - 九星环序:蓬任冲辅英芮柱心(禽寄芮,随坤二宫)
9
+ * - 八门环序:休生伤杜景死惊开
10
+ * 3. 天盘干与九星同转:值符星携旬首六仪转到时干(遁干)所在的地盘宫
11
+ * 4. 值使门随时辰飞宫:从值符原始宫起,按旬内时辰序数,
12
+ * 阳遁顺数宫位数字(1→2→…→9→1)、阴遁逆数
13
+ * 5. 中五宫寄坤二宫;天禽随天芮
14
+ *
15
+ * 参照:《神奇之门》(张志春)、kentang2017/kinqimen pan_sky/pan_star/pan_door(MIT)
16
+ */
17
+ import type { GongWei, TianGan, BaMen, JiuXing, YinYangDun } from '../types';
18
+ export interface ZhuanPanTianPanResult {
19
+ gongGan: Record<GongWei, TianGan>;
20
+ ganGong: Record<TianGan, GongWei>;
21
+ }
22
+ export interface ZhuanPanBaMenResult {
23
+ gongMen: Record<GongWei, BaMen>;
24
+ zhiShiMen: BaMen;
25
+ zhiShiGong: GongWei;
26
+ zhiShiLuoGong: GongWei;
27
+ }
28
+ export interface ZhuanPanJiuXingResult {
29
+ gongXing: Record<GongWei, JiuXing>;
30
+ zhiFuXing: JiuXing;
31
+ zhiFuGong: GongWei;
32
+ zhiFuLuoGong: GongWei;
33
+ }
34
+ /**
35
+ * 转盘式奇门计算器
36
+ * 实现《神奇之门》中的转盘式排盘法
37
+ */
38
+ export declare class ZhuanPanCalculator {
39
+ /**
40
+ * 获取参考干(时干/日干/月干/年干)遁干后的地盘落宫
41
+ * 甲遁于旬首六仪之下;落中五宫者寄坤二
42
+ */
43
+ static getShiGanLuoGong(diPanGanGong: Record<TianGan, GongWei>, ganZhi: string): GongWei;
44
+ /**
45
+ * 计算转盘式天盘布局
46
+ * @param diPanGanGong 地盘干->宫位映射
47
+ * @param ganZhi 时干支(时盘)、日干支(日盘)、月干支(月盘)或年干支(年盘)
48
+ * @param yinYangDun 阴阳遁
49
+ * @returns 天盘各宫的干
50
+ *
51
+ * 原理(转盘式刚体旋转):
52
+ * 1. 旬首六仪(值符所携之干)在地盘的原始宫
53
+ * 2. 参考干(时干等,甲用旬首仪)在地盘的落宫
54
+ * 3. 将整个地盘沿转盘环旋转,使旬首仪从原始宫转到参考干落宫
55
+ * 4. 中五宫之干寄坤二宫随盘转动;天盘中宫显示坤二宫之干
56
+ */
57
+ static calculateTianPan(diPanGanGong: Record<TianGan, GongWei>, ganZhi: string, yinYangDun: YinYangDun): ZhuanPanTianPanResult;
58
+ /**
59
+ * 计算转盘式八门布局
60
+ * @param zhiFuGong 值符星原始宫位(旬首遁干在地盘的宫位,值使门原始宫与其相同)
61
+ * @param refGanZhi 参考干支(时盘为时干支,余类推)
62
+ * @param yinYangDun 阴阳遁
63
+ * @returns 八门布局
64
+ *
65
+ * 原理(转盘式):
66
+ * 1. 值使门 = 值符星原始宫位对应的门(中五宫寄坤二取死门)
67
+ * 2. 值使门落宫:从值符原始宫起,按参考干支的旬内序数(甲为0),
68
+ * 阳遁顺数宫位数字、阴遁逆数;落中五宫寄坤二
69
+ * 3. 其余七门按八门环序(休生伤杜景死惊开)随盘刚体旋转
70
+ */
71
+ static calculateBaMen(zhiFuGong: GongWei, refGanZhi: string, yinYangDun: YinYangDun): ZhuanPanBaMenResult;
72
+ /**
73
+ * 计算转盘式九星布局
74
+ * @param xunShouGong 旬首遁干在地盘的宫位(值符星原始宫)
75
+ * @param shiGanLuoGong 参考干(时干等,甲用旬首仪)的地盘落宫
76
+ * @param yinYangDun 阴阳遁
77
+ * @returns 九星布局
78
+ *
79
+ * 原理(转盘式):
80
+ * 1. 值符星 = 旬首遁干原始宫对应的星(中五宫为天禽,寄坤二随天芮)
81
+ * 2. 值符星随时干:转盘旋转使值符星从原始宫转到参考干落宫
82
+ * 3. 其余诸星按九星环序(蓬任冲辅英芮柱心)随盘刚体旋转
83
+ */
84
+ static calculateJiuXing(xunShouGong: GongWei, shiGanLuoGong: GongWei, yinYangDun: YinYangDun): ZhuanPanJiuXingResult;
85
+ /**
86
+ * 获取遁甲干
87
+ * 甲遁于六仪之下,需要根据干支确定
88
+ */
89
+ private static getDunGan;
90
+ /**
91
+ * 根据宫位获取原始门
92
+ */
93
+ private static getMenByGong;
94
+ /**
95
+ * 根据宫位获取原始星
96
+ */
97
+ private static getXingByGong;
98
+ /**
99
+ * 根据宫位找门
100
+ */
101
+ static findMenByGong(gongMen: Record<GongWei, BaMen>, gong: GongWei): BaMen;
102
+ /**
103
+ * 根据宫位找星
104
+ */
105
+ static findXingByGong(gongXing: Record<GongWei, JiuXing>, gong: GongWei): JiuXing;
106
+ /**
107
+ * 根据天干找天盘落宫
108
+ */
109
+ static findGongByGan(ganGong: Record<TianGan, GongWei>, gan: TianGan): GongWei;
110
+ }
111
+ //# sourceMappingURL=ZhuanPanCalculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZhuanPanCalculator.d.ts","sourceRoot":"","sources":["../../../../src/services/qimen/calculators/ZhuanPanCalculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAS,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAiBpF,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChC,SAAS,EAAE,KAAK,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;CACvB;AAUD;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CACrB,YAAY,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,EACtC,MAAM,EAAE,MAAM,GACb,OAAO;IAOV;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,gBAAgB,CACrB,YAAY,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,EACtC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,GACrB,qBAAqB;IA0CxB;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,cAAc,CACnB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,GACrB,mBAAmB;IAyCtB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,gBAAgB,CACrB,WAAW,EAAE,OAAO,EACpB,aAAa,EAAE,OAAO,EACtB,UAAU,EAAE,UAAU,GACrB,qBAAqB;IA+BxB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAUxB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAY3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAe5B;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,KAAK;IAI3E;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO;IAOjF;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO;CAI/E"}