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,300 @@
1
+ "use strict";
2
+ /**
3
+ * 神煞计算器
4
+ *
5
+ * 负责计算奇门盘中的各类神煞
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.ShenShaCalculator = void 0;
9
+ const shensha_rules_1 = require("../data/shensha-rules");
10
+ const gongUtils_1 = require("../utils/gongUtils");
11
+ // ============= 神煞计算器 =============
12
+ class ShenShaCalculator {
13
+ /**
14
+ * 计算所有神煞
15
+ *
16
+ * @param result 奇门盘结果
17
+ * @returns 神煞信息列表
18
+ */
19
+ static calculateAll(result) {
20
+ const siZhu = result.timeInfo.siZhu;
21
+ const yearGanZhi = siZhu.yearGanZhi;
22
+ const monthGanZhi = siZhu.monthGanZhi;
23
+ const context = {
24
+ result,
25
+ yearZhi: yearGanZhi.charAt(1),
26
+ monthZhi: monthGanZhi.charAt(1),
27
+ dayGan: siZhu.dayGan,
28
+ dayZhi: siZhu.dayZhi,
29
+ };
30
+ const shenShaList = [];
31
+ // 计算各类神煞
32
+ shenShaList.push(...this.calcTianYiGuiRen(context));
33
+ shenShaList.push(...this.calcYiMa(context));
34
+ shenShaList.push(...this.calcHuaGai(context));
35
+ shenShaList.push(...this.calcYueDe(context));
36
+ shenShaList.push(...this.calcLuShen(context));
37
+ shenShaList.push(...this.calcTaoHua(context));
38
+ shenShaList.push(...this.calcTianYi(context));
39
+ shenShaList.push(...this.calcTaiSui(context));
40
+ shenShaList.push(...this.calcYangRen(context));
41
+ shenShaList.push(...this.calcDingMa(context));
42
+ return shenShaList;
43
+ }
44
+ /**
45
+ * 将神煞分配到各宫
46
+ *
47
+ * @param shenShaList 神煞列表
48
+ * @returns 按宫位分组的神煞
49
+ */
50
+ static distributeToGongs(shenShaList) {
51
+ const gongShenSha = {
52
+ 1: [], 2: [], 3: [], 4: [], 5: [], 6: [], 7: [], 8: [], 9: [],
53
+ };
54
+ for (const ss of shenShaList) {
55
+ gongShenSha[ss.gong].push(ss);
56
+ }
57
+ return gongShenSha;
58
+ }
59
+ // ============= 各神煞计算方法 =============
60
+ /**
61
+ * 计算天乙贵人
62
+ */
63
+ static calcTianYiGuiRen(context) {
64
+ const result = [];
65
+ const guiRenZhi = shensha_rules_1.TIANYI_GUIREN[context.dayGan];
66
+ if (guiRenZhi) {
67
+ for (const zhi of guiRenZhi) {
68
+ const gong = shensha_rules_1.DIZHI_TO_GONG[zhi];
69
+ if (gong) {
70
+ result.push({
71
+ name: shensha_rules_1.TIANYI_DEF.name,
72
+ type: shensha_rules_1.TIANYI_DEF.type,
73
+ gong,
74
+ description: `${shensha_rules_1.TIANYI_DEF.description}(${zhi}位)`,
75
+ });
76
+ }
77
+ }
78
+ }
79
+ return result;
80
+ }
81
+ /**
82
+ * 计算驿马
83
+ */
84
+ static calcYiMa(context) {
85
+ const maZhi = shensha_rules_1.YIMA[context.dayZhi];
86
+ if (!maZhi)
87
+ return [];
88
+ const gong = shensha_rules_1.DIZHI_TO_GONG[maZhi];
89
+ if (!gong)
90
+ return [];
91
+ return [{
92
+ name: shensha_rules_1.RIMA_DEF.name, // 使用"日马"更准确
93
+ type: shensha_rules_1.YIMA_DEF.type,
94
+ gong,
95
+ description: `${shensha_rules_1.YIMA_DEF.description}(${maZhi}位)`,
96
+ }];
97
+ }
98
+ /**
99
+ * 计算华盖
100
+ */
101
+ static calcHuaGai(context) {
102
+ const result = [];
103
+ // 按年支查
104
+ const yearHuaGai = shensha_rules_1.HUAGAI[context.yearZhi];
105
+ if (yearHuaGai) {
106
+ const gong = shensha_rules_1.DIZHI_TO_GONG[yearHuaGai];
107
+ if (gong) {
108
+ result.push({
109
+ name: shensha_rules_1.HUAGAI_DEF.name,
110
+ type: shensha_rules_1.HUAGAI_DEF.type,
111
+ gong,
112
+ description: `年华盖(${yearHuaGai}位)`,
113
+ });
114
+ }
115
+ }
116
+ // 按日支查(如果不同于年支)
117
+ if (context.dayZhi !== context.yearZhi) {
118
+ const dayHuaGai = shensha_rules_1.HUAGAI[context.dayZhi];
119
+ if (dayHuaGai && dayHuaGai !== yearHuaGai) {
120
+ const gong = shensha_rules_1.DIZHI_TO_GONG[dayHuaGai];
121
+ if (gong) {
122
+ result.push({
123
+ name: shensha_rules_1.HUAGAI_DEF.name,
124
+ type: shensha_rules_1.HUAGAI_DEF.type,
125
+ gong,
126
+ description: `日华盖(${dayHuaGai}位)`,
127
+ });
128
+ }
129
+ }
130
+ }
131
+ return result;
132
+ }
133
+ /**
134
+ * 计算月德
135
+ */
136
+ static calcYueDe(context) {
137
+ const yueDeGan = shensha_rules_1.YUEDE[context.monthZhi];
138
+ if (!yueDeGan)
139
+ return [];
140
+ // 找月德天干在地盘的落宫
141
+ const gong = (0, gongUtils_1.findGanGong)(context.result, yueDeGan);
142
+ if (!gong)
143
+ return [];
144
+ return [{
145
+ name: shensha_rules_1.YUEDE_DEF.name,
146
+ type: shensha_rules_1.YUEDE_DEF.type,
147
+ gong,
148
+ description: shensha_rules_1.YUEDE_DEF.description,
149
+ }];
150
+ }
151
+ /**
152
+ * 计算禄神
153
+ */
154
+ static calcLuShen(context) {
155
+ const luZhi = shensha_rules_1.LUSHEN[context.dayGan];
156
+ if (!luZhi)
157
+ return [];
158
+ const gong = shensha_rules_1.DIZHI_TO_GONG[luZhi];
159
+ if (!gong)
160
+ return [];
161
+ return [{
162
+ name: shensha_rules_1.LUSHEN_DEF.name,
163
+ type: shensha_rules_1.LUSHEN_DEF.type,
164
+ gong,
165
+ description: `${shensha_rules_1.LUSHEN_DEF.description}(${luZhi}位)`,
166
+ }];
167
+ }
168
+ /**
169
+ * 计算桃花(咸池)
170
+ */
171
+ static calcTaoHua(context) {
172
+ const taoHuaZhi = shensha_rules_1.TAOHUA[context.dayZhi];
173
+ if (!taoHuaZhi)
174
+ return [];
175
+ const gong = shensha_rules_1.DIZHI_TO_GONG[taoHuaZhi];
176
+ if (!gong)
177
+ return [];
178
+ return [{
179
+ name: shensha_rules_1.TAOHUA_DEF.name,
180
+ type: shensha_rules_1.TAOHUA_DEF.type,
181
+ gong,
182
+ description: `${shensha_rules_1.TAOHUA_DEF.description}(${taoHuaZhi}位)`,
183
+ }];
184
+ }
185
+ /**
186
+ * 计算天医
187
+ */
188
+ static calcTianYi(context) {
189
+ const tianYiZhi = shensha_rules_1.TIANYI_YIZHI[context.monthZhi];
190
+ if (!tianYiZhi)
191
+ return [];
192
+ const gong = shensha_rules_1.DIZHI_TO_GONG[tianYiZhi];
193
+ if (!gong)
194
+ return [];
195
+ return [{
196
+ name: '天医',
197
+ type: shensha_rules_1.TIANYI_SHEN_DEF.type,
198
+ gong,
199
+ description: `${shensha_rules_1.TIANYI_SHEN_DEF.description}(${tianYiZhi}位)`,
200
+ }];
201
+ }
202
+ /**
203
+ * 计算太岁
204
+ */
205
+ static calcTaiSui(context) {
206
+ const gong = shensha_rules_1.DIZHI_TO_GONG[context.yearZhi];
207
+ if (!gong)
208
+ return [];
209
+ return [{
210
+ name: shensha_rules_1.TAISUI_DEF.name,
211
+ type: shensha_rules_1.TAISUI_DEF.type,
212
+ gong,
213
+ description: `${shensha_rules_1.TAISUI_DEF.description}(${context.yearZhi}年)`,
214
+ }];
215
+ }
216
+ /**
217
+ * 计算羊刃
218
+ */
219
+ static calcYangRen(context) {
220
+ const yangRenZhi = shensha_rules_1.YANGREN[context.dayGan];
221
+ if (!yangRenZhi)
222
+ return [];
223
+ const gong = shensha_rules_1.DIZHI_TO_GONG[yangRenZhi];
224
+ if (!gong)
225
+ return [];
226
+ return [{
227
+ name: shensha_rules_1.YANGREN_DEF.name,
228
+ type: shensha_rules_1.YANGREN_DEF.type,
229
+ gong,
230
+ description: `${shensha_rules_1.YANGREN_DEF.description}(${yangRenZhi}位)`,
231
+ }];
232
+ }
233
+ /**
234
+ * 计算丁马
235
+ *
236
+ * 丁奇落宫即为丁马
237
+ */
238
+ static calcDingMa(context) {
239
+ const gong = (0, gongUtils_1.findGanGong)(context.result, '丁');
240
+ if (!gong)
241
+ return [];
242
+ return [{
243
+ name: shensha_rules_1.DINGMA_DEF.name,
244
+ type: shensha_rules_1.DINGMA_DEF.type,
245
+ gong,
246
+ description: shensha_rules_1.DINGMA_DEF.description,
247
+ }];
248
+ }
249
+ /**
250
+ * 计算神煞总评分
251
+ *
252
+ * @param shenShaList 神煞列表
253
+ * @returns 总评分
254
+ */
255
+ static calcTotalScore(shenShaList) {
256
+ const WEIGHTS = {
257
+ '天乙贵人': 15,
258
+ '禄神': 10,
259
+ '天德': 10,
260
+ '月德': 8,
261
+ '天医': 8,
262
+ '丁马': 5,
263
+ '羊刃': -10,
264
+ '驿马': 3,
265
+ '日马': 3,
266
+ '华盖': 0,
267
+ '桃花': 0,
268
+ '太岁': -5,
269
+ };
270
+ let score = 0;
271
+ for (const ss of shenShaList) {
272
+ score += WEIGHTS[ss.name] || 0;
273
+ }
274
+ return score;
275
+ }
276
+ /**
277
+ * 按吉凶类型分组神煞
278
+ */
279
+ static groupByType(shenShaList) {
280
+ const ji = [];
281
+ const xiong = [];
282
+ const zhongxing = [];
283
+ for (const ss of shenShaList) {
284
+ switch (ss.type) {
285
+ case '吉':
286
+ ji.push(ss);
287
+ break;
288
+ case '凶':
289
+ xiong.push(ss);
290
+ break;
291
+ case '中性':
292
+ zhongxing.push(ss);
293
+ break;
294
+ }
295
+ }
296
+ return { ji, xiong, zhongxing };
297
+ }
298
+ }
299
+ exports.ShenShaCalculator = ShenShaCalculator;
300
+ //# sourceMappingURL=ShenShaCalculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShenShaCalculator.js","sourceRoot":"","sources":["../../../../src/services/qimen/calculators/ShenShaCalculator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * 用神计算器
3
+ *
4
+ * 负责根据事类选取用神并分析用神状态
5
+ */
6
+ import type { ShiLei, YongShenInfo, QimenResult, TianGan } from '../types';
7
+ export declare class YongShenCalculator {
8
+ /**
9
+ * 分析用神
10
+ *
11
+ * @param result 奇门盘结果
12
+ * @param shiLei 事类
13
+ * @param nianGan 可选年干(用于年命分析)
14
+ * @returns 用神分析信息
15
+ */
16
+ static analyze(result: QimenResult, shiLei: ShiLei, nianGan?: TianGan): YongShenInfo;
17
+ /**
18
+ * 解析用神项列表
19
+ */
20
+ private static resolveYongShenItems;
21
+ /**
22
+ * 解析单个用神规则
23
+ */
24
+ private static resolveYongShenRule;
25
+ /**
26
+ * 分析用神项列表
27
+ */
28
+ private static analyzeYongShenItems;
29
+ /**
30
+ * 分析单个用神
31
+ */
32
+ private static analyzeYongShenItem;
33
+ /**
34
+ * 主客分析
35
+ */
36
+ private static analyzeZhuKe;
37
+ /**
38
+ * 年命分析
39
+ */
40
+ private static analyzeNianMing;
41
+ /**
42
+ * 找马星落宫
43
+ */
44
+ private static findMaXingGong;
45
+ /**
46
+ * 获取宫位旺相休囚死状态
47
+ */
48
+ private static getGongWangXiang;
49
+ /**
50
+ * 检测入墓
51
+ */
52
+ private static checkRuMu;
53
+ /**
54
+ * 检测击刑
55
+ */
56
+ private static checkJiXing;
57
+ /**
58
+ * 计算与日干关系
59
+ */
60
+ private static calcDayGanRelation;
61
+ /**
62
+ * 获取格局影响
63
+ */
64
+ private static getGeJuEffects;
65
+ /**
66
+ * 计算用神评分
67
+ */
68
+ private static calcYongShenScore;
69
+ /**
70
+ * 计算主客关系
71
+ */
72
+ private static calcZhuKeRelation;
73
+ /**
74
+ * 生成主客分析结论
75
+ */
76
+ private static generateZhuKeSummary;
77
+ }
78
+ //# sourceMappingURL=YongShenCalculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YongShenCalculator.d.ts","sourceRoot":"","sources":["../../../../src/services/qimen/calculators/YongShenCalculator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,MAAM,EAGN,YAAY,EAKZ,WAAW,EAEX,OAAO,EAGR,MAAM,UAAU,CAAC;AAyClB,qBAAa,kBAAkB;IAC7B;;;;;;;OAOG;IACH,MAAM,CAAC,OAAO,CACZ,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,GAChB,YAAY;IA6Cf;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAgBnC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAqIlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAOnC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA6ClC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAyB3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAmB9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAgB7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAM/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAqCxB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAM1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAsCjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAY7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAwChC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAYhC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;CA6CpC"}