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,316 @@
1
+ /**
2
+ * 奇门遁甲类型定义
3
+ */
4
+ /** 天干 */
5
+ export type TianGan = '甲' | '乙' | '丙' | '丁' | '戊' | '己' | '庚' | '辛' | '壬' | '癸';
6
+ /** 地支 */
7
+ export type DiZhi = '子' | '丑' | '寅' | '卯' | '辰' | '巳' | '午' | '未' | '申' | '酉' | '戌' | '亥';
8
+ /** 五行 */
9
+ export type WuXing = '木' | '火' | '土' | '金' | '水';
10
+ /** 宫位 (1-9,对应洛书九宫) */
11
+ export type GongWei = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
12
+ /** 阴阳遁 */
13
+ export type YinYangDun = '阳遁' | '阴遁';
14
+ /** 局数 (1-9) */
15
+ export type JuShu = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
16
+ /** 上中下元 */
17
+ export type YuanType = '上元' | '中元' | '下元';
18
+ /** 盘类型 */
19
+ export type PanType = '时盘' | '日盘' | '月盘' | '年盘';
20
+ /** 盘式(飞盘/转盘) */
21
+ export type PanStyle = '转盘' | '飞盘';
22
+ /** 置闰方法 */
23
+ export type ZhiRunMethod = 'chaibu' | 'maoshan';
24
+ /** 三奇六仪 */
25
+ export type SanQiLiuYi = '甲' | '乙' | '丙' | '丁' | '戊' | '己' | '庚' | '辛' | '壬' | '癸';
26
+ /** 八门 */
27
+ export type BaMen = '休' | '生' | '伤' | '杜' | '景' | '死' | '惊' | '开';
28
+ /** 九星 */
29
+ export type JiuXing = '蓬' | '芮' | '冲' | '辅' | '禽' | '心' | '柱' | '任' | '英';
30
+ /** 八神 */
31
+ export type BaShen = '符' | '蛇' | '阴' | '合' | '虎' | '武' | '地' | '天';
32
+ /** 奇门遁甲输入参数 */
33
+ export interface QimenInput {
34
+ /** 年份 (1900-2100) */
35
+ year: number;
36
+ /** 月份 (1-12) */
37
+ month: number;
38
+ /** 日期 (1-31) */
39
+ day: number;
40
+ /** 小时 (0-23) */
41
+ hour: number;
42
+ /** 分钟 (0-59) */
43
+ minute?: number;
44
+ /** 是否农历 */
45
+ isLunar?: boolean;
46
+ /** 盘类型 */
47
+ panType?: PanType;
48
+ /** 盘式(转盘/飞盘,默认转盘,遵循《神奇之门》) */
49
+ panStyle?: PanStyle;
50
+ /** 置闰方法 */
51
+ zhiRunMethod?: ZhiRunMethod;
52
+ }
53
+ /** 四柱信息 */
54
+ export interface SiZhuInfo {
55
+ /** 年干支 */
56
+ yearGanZhi: string;
57
+ /** 月干支 */
58
+ monthGanZhi: string;
59
+ /** 日干支 */
60
+ dayGanZhi: string;
61
+ /** 时干支 */
62
+ hourGanZhi: string;
63
+ /** 日干 */
64
+ dayGan: TianGan;
65
+ /** 日支 */
66
+ dayZhi: DiZhi;
67
+ /** 时干 */
68
+ hourGan: TianGan;
69
+ /** 时支 */
70
+ hourZhi: DiZhi;
71
+ }
72
+ /** 节气信息 */
73
+ export interface JieQiInfo {
74
+ /** 当前节气名称 */
75
+ jieQi: string;
76
+ /** 节气开始日期 */
77
+ jieQiDate: Date;
78
+ /** 是否在节气当天 */
79
+ isJieQiDay: boolean;
80
+ }
81
+ /** 地盘信息 */
82
+ export interface DiPanInfo {
83
+ /** 阴阳遁 */
84
+ yinYangDun: YinYangDun;
85
+ /** 局数 */
86
+ juShu: JuShu;
87
+ /** 元 (上中下) */
88
+ yuan: YuanType;
89
+ /** 各宫地盘干 (宫位 -> 干) */
90
+ gongGan: Record<GongWei, TianGan>;
91
+ }
92
+ /** 天盘信息 */
93
+ export interface TianPanInfo {
94
+ /** 各宫天盘干 (宫位 -> 干) */
95
+ gongGan: Record<GongWei, TianGan>;
96
+ }
97
+ /** 旬首信息 */
98
+ export interface XunShouInfo {
99
+ /** 旬首 (如 "甲子"、"甲戌" 等) */
100
+ xunShou: string;
101
+ /** 符头 (旬首第一天) */
102
+ fuTou: string;
103
+ /** 值符星 */
104
+ zhiFuXing: JiuXing;
105
+ /** 值符星原始宫位 */
106
+ zhiFuGong: GongWei;
107
+ /** 值符星落宫 */
108
+ zhiFuLuoGong: GongWei;
109
+ /** 值使门 */
110
+ zhiShiMen: BaMen;
111
+ /** 值使门原始宫位 */
112
+ zhiShiGong: GongWei;
113
+ /** 值使门落宫 */
114
+ zhiShiLuoGong: GongWei;
115
+ /** 空亡地支 */
116
+ kongWang: [DiZhi, DiZhi];
117
+ }
118
+ /** 八门信息 */
119
+ export interface BaMenInfo {
120
+ /** 各宫八门 (宫位 -> 门) */
121
+ gongMen: Record<GongWei, BaMen>;
122
+ }
123
+ /** 九星信息 */
124
+ export interface JiuXingInfo {
125
+ /** 各宫九星 (宫位 -> 星) */
126
+ gongXing: Record<GongWei, JiuXing>;
127
+ }
128
+ /** 八神信息 */
129
+ export interface BaShenInfo {
130
+ /** 各宫八神 (宫位 -> 神) */
131
+ gongShen: Record<GongWei, BaShen>;
132
+ }
133
+ /** 单宫完整信息 */
134
+ export interface GongInfo {
135
+ /** 宫位 (1-9) */
136
+ gong: GongWei;
137
+ /** 宫名 (乾坎艮震巽离坤兑中) */
138
+ gongName: string;
139
+ /** 地盘干 */
140
+ diPanGan: TianGan;
141
+ /** 天盘干 */
142
+ tianPanGan: TianGan;
143
+ /** 八门 */
144
+ men: BaMen;
145
+ /** 九星 */
146
+ xing: JiuXing;
147
+ /** 八神 */
148
+ shen: BaShen;
149
+ /** 宫位五行 */
150
+ wuXing: WuXing;
151
+ /** 是否空亡 */
152
+ isKong: boolean;
153
+ /** 是否马星 */
154
+ isMa: boolean;
155
+ /** 该宫神煞列表(可选,启用神煞功能时填充) */
156
+ shenSha?: ShenShaInfo[];
157
+ }
158
+ /** 格局信息 */
159
+ export interface GeJuInfo {
160
+ /** 格局名称 */
161
+ name: string;
162
+ /** 格局类型 */
163
+ type: '吉格' | '凶格' | '中性';
164
+ /** 格局描述 */
165
+ description: string;
166
+ /** 相关宫位 */
167
+ gongs: GongWei[];
168
+ }
169
+ /** 时间信息 */
170
+ export interface QimenTimeInfo {
171
+ /** 公历日期 */
172
+ solarDate: string;
173
+ /** 农历日期 */
174
+ lunarDate: string;
175
+ /** 四柱 */
176
+ siZhu: SiZhuInfo;
177
+ /** 节气 */
178
+ jieQi: string;
179
+ }
180
+ /** 奇门遁甲完整结果 */
181
+ export interface QimenResult {
182
+ /** 时间信息 */
183
+ timeInfo: QimenTimeInfo;
184
+ /** 盘类型 */
185
+ panType: PanType;
186
+ /** 盘式(转盘/飞盘) */
187
+ panStyle: PanStyle;
188
+ /** 置闰方法 */
189
+ zhiRunMethod: ZhiRunMethod;
190
+ /** 阴阳遁 */
191
+ yinYangDun: YinYangDun;
192
+ /** 局数 */
193
+ juShu: JuShu;
194
+ /** 元 */
195
+ yuan: YuanType;
196
+ /** 旬首信息 */
197
+ xunShou: XunShouInfo;
198
+ /** 九宫信息 (宫位 -> 完整信息) */
199
+ gongs: Record<GongWei, GongInfo>;
200
+ /** 日干落宫 */
201
+ dayGanGong: GongWei;
202
+ /** 时干落宫 */
203
+ hourGanGong: GongWei;
204
+ /** 格局列表 */
205
+ geJu: GeJuInfo[];
206
+ /** 用神分析信息(可选,调用 calculateWithYongShen 时填充) */
207
+ yongShen?: YongShenInfo;
208
+ }
209
+ /** 服务配置 */
210
+ export interface QimenServiceConfig {
211
+ /** 是否启用缓存 */
212
+ enableCaching?: boolean;
213
+ /** 调试模式 */
214
+ debug?: boolean;
215
+ }
216
+ /** 旺相休囚死状态 */
217
+ export type WangXiangState = '旺' | '相' | '休' | '囚' | '死';
218
+ /** 用神类型 */
219
+ export type YongShenType = '门' | '星' | '奇' | '仪' | '神';
220
+ /** 与日干关系 */
221
+ export type DayGanRelation = '生' | '克' | '比' | '泄' | '耗';
222
+ /** 事类枚举 */
223
+ export type ShiLei = '求财' | '婚姻' | '疾病' | '出行' | '诉讼' | '考试' | '工作' | '失物' | '置业' | '求官' | '孕产' | '寻人' | '合作' | '其他';
224
+ /** 单个用神项 */
225
+ export interface YongShenItem {
226
+ /** 用神类型(门/星/奇/仪/神) */
227
+ type: YongShenType;
228
+ /** 用神名称(如 '戊'、'生门') */
229
+ name: string;
230
+ /** 落宫位置 */
231
+ gong: GongWei;
232
+ /** 宫位状态 */
233
+ state: WangXiangState;
234
+ }
235
+ /** 用神分析结果 */
236
+ export interface YongShenAnalysis {
237
+ /** 用神名称 */
238
+ yongshen: string;
239
+ /** 落宫 */
240
+ gong: GongWei;
241
+ /** 是否空亡 */
242
+ isKong: boolean;
243
+ /** 是否入墓 */
244
+ isRuMu: boolean;
245
+ /** 是否击刑 */
246
+ isJiXing: boolean;
247
+ /** 与日干关系 */
248
+ relationToDay: DayGanRelation;
249
+ /** 受格局影响 */
250
+ geJuEffects: string[];
251
+ /** 综合评分 (0-100) */
252
+ score: number;
253
+ }
254
+ /** 主客分析 */
255
+ export interface ZhuKeAnalysis {
256
+ /** 我方(日干) */
257
+ zhu: {
258
+ gong: GongWei;
259
+ state: WangXiangState;
260
+ };
261
+ /** 彼方(时干) */
262
+ ke: {
263
+ gong: GongWei;
264
+ state: WangXiangState;
265
+ };
266
+ /** 主客关系 */
267
+ relation: '我克彼' | '彼克我' | '比和' | '我生彼' | '彼生我';
268
+ /** 简要结论 */
269
+ summary: string;
270
+ }
271
+ /** 年命信息 */
272
+ export interface NianMingInfo {
273
+ /** 年干 */
274
+ nianGan: TianGan;
275
+ /** 落宫 */
276
+ gong: GongWei;
277
+ /** 宫位状态 */
278
+ state: WangXiangState;
279
+ }
280
+ /** 用神信息 */
281
+ export interface YongShenInfo {
282
+ /** 事类 */
283
+ shiLei: ShiLei;
284
+ /** 主用神列表 */
285
+ zhuyong: YongShenItem[];
286
+ /** 辅用神列表 */
287
+ fuyong: YongShenItem[];
288
+ /** 用神分析结果 */
289
+ analysis: YongShenAnalysis[];
290
+ /** 主客分析(涉及双方的事类) */
291
+ zhuKe?: ZhuKeAnalysis;
292
+ /** 年命落宫信息 */
293
+ nianMing?: NianMingInfo;
294
+ }
295
+ /** 神煞类型 */
296
+ export type ShenShaType = '吉' | '凶' | '中性';
297
+ /** 神煞信息 */
298
+ export interface ShenShaInfo {
299
+ /** 神煞名称 */
300
+ name: string;
301
+ /** 吉凶属性 */
302
+ type: ShenShaType;
303
+ /** 落宫 */
304
+ gong: GongWei;
305
+ /** 简要说明 */
306
+ description: string;
307
+ }
308
+ /**
309
+ * 奇门计算错误
310
+ */
311
+ export declare class QimenCalculationError extends Error {
312
+ code: string;
313
+ details?: unknown | undefined;
314
+ constructor(message: string, code: string, details?: unknown | undefined);
315
+ }
316
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/qimen/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,SAAS;AACT,MAAM,MAAM,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAEhF,SAAS;AACT,MAAM,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAE1F,SAAS;AACT,MAAM,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAEjD,sBAAsB;AACtB,MAAM,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAExD,UAAU;AACV,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;AAErC,eAAe;AACf,MAAM,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEtD,WAAW;AACX,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1C,UAAU;AACV,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEhD,gBAAgB;AAChB,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;AAEnC,WAAW;AACX,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAIhD,WAAW;AACX,MAAM,MAAM,UAAU,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAEnF,SAAS;AACT,MAAM,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAElE,SAAS;AACT,MAAM,MAAM,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAE1E,SAAS;AACT,MAAM,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAInE,eAAe;AACf,MAAM,WAAW,UAAU;IACzB,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU;IACV,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,WAAW;IACX,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAID,WAAW;AACX,MAAM,WAAW,SAAS;IACxB,UAAU;IACV,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU;IACV,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU;IACV,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS;IACT,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS;IACT,MAAM,EAAE,KAAK,CAAC;IACd,SAAS;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS;IACT,OAAO,EAAE,KAAK,CAAC;CAChB;AAED,WAAW;AACX,MAAM,WAAW,SAAS;IACxB,aAAa;IACb,KAAK,EAAE,MAAM,CAAC;IACd,aAAa;IACb,SAAS,EAAE,IAAI,CAAC;IAChB,cAAc;IACd,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,WAAW;AACX,MAAM,WAAW,SAAS;IACxB,UAAU;IACV,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS;IACT,KAAK,EAAE,KAAK,CAAC;IACb,cAAc;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,WAAW;AACX,MAAM,WAAW,WAAW;IAC1B,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,WAAW;AACX,MAAM,WAAW,WAAW;IAC1B,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU;IACV,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY;IACZ,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU;IACV,SAAS,EAAE,KAAK,CAAC;IACjB,cAAc;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY;IACZ,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW;IACX,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;CAC1B;AAED,WAAW;AACX,MAAM,WAAW,SAAS;IACxB,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;CACjC;AAED,WAAW;AACX,MAAM,WAAW,WAAW;IAC1B,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,WAAW;AACX,MAAM,WAAW,UAAU;IACzB,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;CACnC;AAID,aAAa;AACb,MAAM,WAAW,QAAQ;IACvB,eAAe;IACf,IAAI,EAAE,OAAO,CAAC;IACd,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU;IACV,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU;IACV,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS;IACT,GAAG,EAAE,KAAK,CAAC;IACX,SAAS;IACT,IAAI,EAAE,OAAO,CAAC;IACd,SAAS;IACT,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,MAAM,EAAE,MAAM,CAAC;IACf,WAAW;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW;IACX,IAAI,EAAE,OAAO,CAAC;IACd,2BAA2B;IAC3B,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;CACzB;AAED,WAAW;AACX,MAAM,WAAW,QAAQ;IACvB,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACzB,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,WAAW;AACX,MAAM,WAAW,aAAa;IAC5B,WAAW;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS;IACT,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS;IACT,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAe;AACf,MAAM,WAAW,WAAW;IAC1B,WAAW;IACX,QAAQ,EAAE,aAAa,CAAC;IACxB,UAAU;IACV,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW;IACX,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU;IACV,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS;IACT,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ;IACR,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW;IACX,OAAO,EAAE,WAAW,CAAC;IACrB,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACjC,WAAW;IACX,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW;IACX,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW;IACX,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAID,WAAW;AACX,MAAM,WAAW,kBAAkB;IACjC,aAAa;IACb,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW;IACX,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAID,cAAc;AACd,MAAM,MAAM,cAAc,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAEzD,WAAW;AACX,MAAM,MAAM,YAAY,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAEvD,YAAY;AACZ,MAAM,MAAM,cAAc,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAEzD,WAAW;AACX,MAAM,MAAM,MAAM,GACd,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAET,YAAY;AACZ,MAAM,WAAW,YAAY;IAC3B,sBAAsB;IACtB,IAAI,EAAE,YAAY,CAAC;IACnB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,IAAI,EAAE,OAAO,CAAC;IACd,WAAW;IACX,KAAK,EAAE,cAAc,CAAC;CACvB;AAED,aAAa;AACb,MAAM,WAAW,gBAAgB;IAC/B,WAAW;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS;IACT,IAAI,EAAE,OAAO,CAAC;IACd,WAAW;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW;IACX,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY;IACZ,aAAa,EAAE,cAAc,CAAC;IAC9B,YAAY;IACZ,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,WAAW;AACX,MAAM,WAAW,aAAa;IAC5B,aAAa;IACb,GAAG,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,cAAc,CAAA;KAAE,CAAC;IAC9C,aAAa;IACb,EAAE,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,cAAc,CAAA;KAAE,CAAC;IAC7C,WAAW;IACX,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;IAC/C,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,WAAW;AACX,MAAM,WAAW,YAAY;IAC3B,SAAS;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS;IACT,IAAI,EAAE,OAAO,CAAC;IACd,WAAW;IACX,KAAK,EAAE,cAAc,CAAC;CACvB;AAED,WAAW;AACX,MAAM,WAAW,YAAY;IAC3B,SAAS;IACT,MAAM,EAAE,MAAM,CAAC;IACf,YAAY;IACZ,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,YAAY;IACZ,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,aAAa;IACb,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,oBAAoB;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,aAAa;IACb,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAID,WAAW;AACX,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;AAE3C,WAAW;AACX,MAAM,WAAW,WAAW;IAC1B,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS;IACT,IAAI,EAAE,OAAO,CAAC;IACd,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAGrC,IAAI,EAAE,MAAM;IACZ,OAAO,CAAC,EAAE,OAAO;gBAFxB,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,OAAO,YAAA;CAK3B"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ /**
3
+ * 奇门遁甲类型定义
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.QimenCalculationError = void 0;
7
+ /**
8
+ * 奇门计算错误
9
+ */
10
+ class QimenCalculationError extends Error {
11
+ code;
12
+ details;
13
+ constructor(message, code, details) {
14
+ super(message);
15
+ this.code = code;
16
+ this.details = details;
17
+ this.name = 'QimenCalculationError';
18
+ }
19
+ }
20
+ exports.QimenCalculationError = QimenCalculationError;
21
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/qimen/types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAiXH;;GAEG;AACH,MAAa,qBAAsB,SAAQ,KAAK;IAGrC;IACA;IAHT,YACE,OAAe,EACR,IAAY,EACZ,OAAiB;QAExB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAU;QAGxB,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AATD,sDASC"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * 宫位相关工具函数
3
+ *
4
+ * 提供共享的宫位查找和映射方法
5
+ */
6
+ import type { QimenResult, GongWei, TianGan, DiZhi, BaMen, JiuXing, BaShen } from '../types';
7
+ /** 所有宫位列表 */
8
+ export declare const ALL_GONGS: GongWei[];
9
+ /** 除中宫外的宫位列表 */
10
+ export declare const OUTER_GONGS: GongWei[];
11
+ /** 八神名称映射表 */
12
+ export declare const SHEN_NAME_MAP: Record<string, BaShen>;
13
+ /** 八门名称列表 */
14
+ export declare const VALID_MEN: BaMen[];
15
+ /** 九星名称列表 */
16
+ export declare const VALID_XING: JiuXing[];
17
+ /** 宫位对应地支映射 */
18
+ export declare const GONG_DIZHI: Record<GongWei, DiZhi>;
19
+ /**
20
+ * 找天干落宫(地盘干)
21
+ *
22
+ * @param result 奇门盘结果
23
+ * @param gan 天干
24
+ * @returns 落宫位置,未找到返回 null
25
+ */
26
+ export declare function findGanGong(result: QimenResult, gan: TianGan): GongWei | null;
27
+ /**
28
+ * 找天盘干落宫
29
+ *
30
+ * @param result 奇门盘结果
31
+ * @param gan 天干
32
+ * @returns 落宫位置,未找到返回 null
33
+ */
34
+ export declare function findTianPanGanGong(result: QimenResult, gan: TianGan): GongWei | null;
35
+ /**
36
+ * 找门落宫
37
+ *
38
+ * @param result 奇门盘结果
39
+ * @param men 八门
40
+ * @returns 落宫位置,未找到返回 null
41
+ */
42
+ export declare function findMenGong(result: QimenResult, men: BaMen): GongWei | null;
43
+ /**
44
+ * 找星落宫
45
+ *
46
+ * @param result 奇门盘结果
47
+ * @param xing 九星
48
+ * @returns 落宫位置,未找到返回 null
49
+ */
50
+ export declare function findXingGong(result: QimenResult, xing: JiuXing): GongWei | null;
51
+ /**
52
+ * 找神落宫
53
+ *
54
+ * @param result 奇门盘结果
55
+ * @param shenName 八神名称(全称或简称)
56
+ * @returns 落宫位置,未找到返回 null
57
+ */
58
+ export declare function findShenGong(result: QimenResult, shenName: string): GongWei | null;
59
+ /**
60
+ * 获取宫位对应地支
61
+ *
62
+ * @param gong 宫位
63
+ * @returns 对应地支
64
+ */
65
+ export declare function getGongDiZhi(gong: GongWei): DiZhi;
66
+ /**
67
+ * 解析门名,提取门的简称
68
+ *
69
+ * @param menName 门名(如"开门"或"开")
70
+ * @returns 门的简称,无效返回 null
71
+ */
72
+ export declare function parseMenName(menName: string): BaMen | null;
73
+ /**
74
+ * 解析星名,提取星的简称
75
+ *
76
+ * @param xingName 星名(如"天蓬"或"蓬")
77
+ * @returns 星的简称,无效返回 null
78
+ */
79
+ export declare function parseXingName(xingName: string): JiuXing | null;
80
+ //# sourceMappingURL=gongUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gongUtils.d.ts","sourceRoot":"","sources":["../../../../src/services/qimen/utils/gongUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,OAAO,EACP,OAAO,EACP,KAAK,EACL,KAAK,EACL,OAAO,EACP,MAAM,EACP,MAAM,UAAU,CAAC;AAElB,aAAa;AACb,eAAO,MAAM,SAAS,EAAE,OAAO,EAAgC,CAAC;AAEhE,gBAAgB;AAChB,eAAO,MAAM,WAAW,EAAE,OAAO,EAA6B,CAAC;AAE/D,cAAc;AACd,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAUhD,CAAC;AAEF,aAAa;AACb,eAAO,MAAM,SAAS,EAAE,KAAK,EAA6C,CAAC;AAE3E,aAAa;AACb,eAAO,MAAM,UAAU,EAAE,OAAO,EAAkD,CAAC;AAEnF,eAAe;AACf,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAU7C,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAO7E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAOpF;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO,GAAG,IAAI,CAO3E;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAO/E;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CASlF;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,KAAK,CAEjD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAS1D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAS9D"}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ /**
3
+ * 宫位相关工具函数
4
+ *
5
+ * 提供共享的宫位查找和映射方法
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.GONG_DIZHI = exports.VALID_XING = exports.VALID_MEN = exports.SHEN_NAME_MAP = exports.OUTER_GONGS = exports.ALL_GONGS = void 0;
9
+ exports.findGanGong = findGanGong;
10
+ exports.findTianPanGanGong = findTianPanGanGong;
11
+ exports.findMenGong = findMenGong;
12
+ exports.findXingGong = findXingGong;
13
+ exports.findShenGong = findShenGong;
14
+ exports.getGongDiZhi = getGongDiZhi;
15
+ exports.parseMenName = parseMenName;
16
+ exports.parseXingName = parseXingName;
17
+ /** 所有宫位列表 */
18
+ exports.ALL_GONGS = [1, 2, 3, 4, 5, 6, 7, 8, 9];
19
+ /** 除中宫外的宫位列表 */
20
+ exports.OUTER_GONGS = [1, 2, 3, 4, 6, 7, 8, 9];
21
+ /** 八神名称映射表 */
22
+ exports.SHEN_NAME_MAP = {
23
+ '值符': '符',
24
+ '腾蛇': '蛇',
25
+ '太阴': '阴',
26
+ '六合': '合',
27
+ '白虎': '虎',
28
+ '玄武': '武',
29
+ '九地': '地',
30
+ '九天': '天',
31
+ '天后': '阴', // 天后即太阴
32
+ };
33
+ /** 八门名称列表 */
34
+ exports.VALID_MEN = ['休', '生', '伤', '杜', '景', '死', '惊', '开'];
35
+ /** 九星名称列表 */
36
+ exports.VALID_XING = ['蓬', '芮', '冲', '辅', '禽', '心', '柱', '任', '英'];
37
+ /** 宫位对应地支映射 */
38
+ exports.GONG_DIZHI = {
39
+ 1: '子', // 坎
40
+ 2: '未', // 坤(取西南,近似未)
41
+ 3: '卯', // 震
42
+ 4: '辰', // 巽(取东南,近似辰)
43
+ 5: '辰', // 中宫寄坤
44
+ 6: '戌', // 乾(取西北,戌)
45
+ 7: '酉', // 兑
46
+ 8: '丑', // 艮(取东北,丑)
47
+ 9: '午', // 离
48
+ };
49
+ /**
50
+ * 找天干落宫(地盘干)
51
+ *
52
+ * @param result 奇门盘结果
53
+ * @param gan 天干
54
+ * @returns 落宫位置,未找到返回 null
55
+ */
56
+ function findGanGong(result, gan) {
57
+ for (const gong of exports.ALL_GONGS) {
58
+ if (result.gongs[gong].diPanGan === gan) {
59
+ return gong;
60
+ }
61
+ }
62
+ return null;
63
+ }
64
+ /**
65
+ * 找天盘干落宫
66
+ *
67
+ * @param result 奇门盘结果
68
+ * @param gan 天干
69
+ * @returns 落宫位置,未找到返回 null
70
+ */
71
+ function findTianPanGanGong(result, gan) {
72
+ for (const gong of exports.ALL_GONGS) {
73
+ if (result.gongs[gong].tianPanGan === gan) {
74
+ return gong;
75
+ }
76
+ }
77
+ return null;
78
+ }
79
+ /**
80
+ * 找门落宫
81
+ *
82
+ * @param result 奇门盘结果
83
+ * @param men 八门
84
+ * @returns 落宫位置,未找到返回 null
85
+ */
86
+ function findMenGong(result, men) {
87
+ for (const gong of exports.ALL_GONGS) {
88
+ if (result.gongs[gong].men === men) {
89
+ return gong;
90
+ }
91
+ }
92
+ return null;
93
+ }
94
+ /**
95
+ * 找星落宫
96
+ *
97
+ * @param result 奇门盘结果
98
+ * @param xing 九星
99
+ * @returns 落宫位置,未找到返回 null
100
+ */
101
+ function findXingGong(result, xing) {
102
+ for (const gong of exports.ALL_GONGS) {
103
+ if (result.gongs[gong].xing === xing) {
104
+ return gong;
105
+ }
106
+ }
107
+ return null;
108
+ }
109
+ /**
110
+ * 找神落宫
111
+ *
112
+ * @param result 奇门盘结果
113
+ * @param shenName 八神名称(全称或简称)
114
+ * @returns 落宫位置,未找到返回 null
115
+ */
116
+ function findShenGong(result, shenName) {
117
+ const shen = exports.SHEN_NAME_MAP[shenName] || shenName;
118
+ for (const gong of exports.ALL_GONGS) {
119
+ if (result.gongs[gong].shen === shen) {
120
+ return gong;
121
+ }
122
+ }
123
+ return null;
124
+ }
125
+ /**
126
+ * 获取宫位对应地支
127
+ *
128
+ * @param gong 宫位
129
+ * @returns 对应地支
130
+ */
131
+ function getGongDiZhi(gong) {
132
+ return exports.GONG_DIZHI[gong];
133
+ }
134
+ /**
135
+ * 解析门名,提取门的简称
136
+ *
137
+ * @param menName 门名(如"开门"或"开")
138
+ * @returns 门的简称,无效返回 null
139
+ */
140
+ function parseMenName(menName) {
141
+ const men = menName.endsWith('门')
142
+ ? menName.slice(0, -1)
143
+ : menName;
144
+ if (exports.VALID_MEN.includes(men)) {
145
+ return men;
146
+ }
147
+ return null;
148
+ }
149
+ /**
150
+ * 解析星名,提取星的简称
151
+ *
152
+ * @param xingName 星名(如"天蓬"或"蓬")
153
+ * @returns 星的简称,无效返回 null
154
+ */
155
+ function parseXingName(xingName) {
156
+ const xing = xingName.startsWith('天')
157
+ ? xingName.slice(1)
158
+ : xingName;
159
+ if (exports.VALID_XING.includes(xing)) {
160
+ return xing;
161
+ }
162
+ return null;
163
+ }
164
+ //# sourceMappingURL=gongUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gongUtils.js","sourceRoot":"","sources":["../../../../src/services/qimen/utils/gongUtils.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,11 @@ export declare class Logger {
17
17
  info(message: string, data?: unknown): void;
18
18
  warn(message: string, data?: unknown): void;
19
19
  error(message: string, error?: unknown, data?: unknown): void;
20
+ /**
21
+ * 所有日志一律寫 stderr:stdio MCP 服務器的 stdout
22
+ * 必須是純 JSON-RPC 流,任何混入都會破壞客戶端解析
23
+ */
24
+ private write;
20
25
  }
21
26
  /**
22
27
  * Factory function to create logger instances
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/shared/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAY3D;;;GAGG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,GAAE,MAAkB;IAKvC,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,aAAa;IAMrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;CAQ9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS;IACpB;;OAEG;mBACY,MAAM,GAAG,MAAM;IAK9B;;OAEG;mBACY,MAAM,GAAG,MAAM;IAM9B;;OAEG;mBACY,MAAM,GAAG,MAAM;IAM9B;;;;;OAKG;eACQ,CAAC,SAAS,MAAM,OAAO,CAAC,iBAAiB,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CA4BvF,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/shared/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAY3D;;;GAGG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,GAAE,MAAkB;IAKvC,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,aAAa;IAMrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAS7D;;;OAGG;IACH,OAAO,CAAC,KAAK;CAGd;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS;IACpB;;OAEG;mBACY,MAAM,GAAG,MAAM;IAK9B;;OAEG;mBACY,MAAM,GAAG,MAAM;IAM9B;;OAEG;mBACY,MAAM,GAAG,MAAM;IAM9B;;;;;OAKG;eACQ,CAAC,SAAS,MAAM,OAAO,CAAC,iBAAiB,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CA4BvF,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -35,17 +35,17 @@ class Logger {
35
35
  }
36
36
  debug(message, data) {
37
37
  if (this.shouldLog('debug')) {
38
- console.debug(this.formatMessage('debug', message, data));
38
+ this.write('debug', this.formatMessage('debug', message, data));
39
39
  }
40
40
  }
41
41
  info(message, data) {
42
42
  if (this.shouldLog('info')) {
43
- console.info(this.formatMessage('info', message, data));
43
+ this.write('info', this.formatMessage('info', message, data));
44
44
  }
45
45
  }
46
46
  warn(message, data) {
47
47
  if (this.shouldLog('warn')) {
48
- console.warn(this.formatMessage('warn', message, data));
48
+ this.write('warn', this.formatMessage('warn', message, data));
49
49
  }
50
50
  }
51
51
  error(message, error, data) {
@@ -53,9 +53,16 @@ class Logger {
53
53
  const errorData = error instanceof Error
54
54
  ? { message: error.message, stack: error.stack, ...((data && typeof data === 'object') ? data : {}) }
55
55
  : { error, ...((data && typeof data === 'object') ? data : {}) };
56
- console.error(this.formatMessage('error', message, errorData));
56
+ this.write('error', this.formatMessage('error', message, errorData));
57
57
  }
58
58
  }
59
+ /**
60
+ * 所有日志一律寫 stderr:stdio MCP 服務器的 stdout
61
+ * 必須是純 JSON-RPC 流,任何混入都會破壞客戶端解析
62
+ */
63
+ write(level, line) {
64
+ process.stderr.write(line + '\n');
65
+ }
59
66
  }
60
67
  exports.Logger = Logger;
61
68
  /**