mingpan 0.1.2 → 0.1.3

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 (108) hide show
  1. package/README.md +72 -44
  2. package/dist/core/qimen/FlyingRule.d.ts +60 -0
  3. package/dist/core/qimen/FlyingRule.d.ts.map +1 -0
  4. package/dist/core/qimen/FlyingRule.js +94 -0
  5. package/dist/core/qimen/FlyingRule.js.map +1 -0
  6. package/dist/core/qimen/GongMapping.d.ts +29 -0
  7. package/dist/core/qimen/GongMapping.d.ts.map +1 -0
  8. package/dist/core/qimen/GongMapping.js +83 -0
  9. package/dist/core/qimen/GongMapping.js.map +1 -0
  10. package/dist/core/qimen/RotatingRule.d.ts +76 -0
  11. package/dist/core/qimen/RotatingRule.d.ts.map +1 -0
  12. package/dist/core/qimen/RotatingRule.js +126 -0
  13. package/dist/core/qimen/RotatingRule.js.map +1 -0
  14. package/dist/core/qimen/YinYangDunCalculator.d.ts +28 -0
  15. package/dist/core/qimen/YinYangDunCalculator.d.ts.map +1 -0
  16. package/dist/core/qimen/YinYangDunCalculator.js +79 -0
  17. package/dist/core/qimen/YinYangDunCalculator.js.map +1 -0
  18. package/dist/core/qimen/index.d.ts +10 -0
  19. package/dist/core/qimen/index.d.ts.map +1 -0
  20. package/dist/core/qimen/index.js +58 -0
  21. package/dist/core/qimen/index.js.map +1 -0
  22. package/dist/core/qimen/types.d.ts +19 -0
  23. package/dist/core/qimen/types.d.ts.map +1 -0
  24. package/dist/core/qimen/types.js +7 -0
  25. package/dist/core/qimen/types.js.map +1 -0
  26. package/dist/index.js +269 -2
  27. package/dist/index.js.map +1 -1
  28. package/dist/output/qimenTextRenderer.d.ts +40 -0
  29. package/dist/output/qimenTextRenderer.d.ts.map +1 -0
  30. package/dist/output/qimenTextRenderer.js +363 -0
  31. package/dist/output/qimenTextRenderer.js.map +1 -0
  32. package/dist/services/qimen/QimenService.d.ts +93 -0
  33. package/dist/services/qimen/QimenService.d.ts.map +1 -0
  34. package/dist/services/qimen/QimenService.js +427 -0
  35. package/dist/services/qimen/QimenService.js.map +1 -0
  36. package/dist/services/qimen/calculators/BaMenCalculator.d.ts +53 -0
  37. package/dist/services/qimen/calculators/BaMenCalculator.d.ts.map +1 -0
  38. package/dist/services/qimen/calculators/BaMenCalculator.js +105 -0
  39. package/dist/services/qimen/calculators/BaMenCalculator.js.map +1 -0
  40. package/dist/services/qimen/calculators/BaShenCalculator.d.ts +34 -0
  41. package/dist/services/qimen/calculators/BaShenCalculator.d.ts.map +1 -0
  42. package/dist/services/qimen/calculators/BaShenCalculator.js +57 -0
  43. package/dist/services/qimen/calculators/BaShenCalculator.js.map +1 -0
  44. package/dist/services/qimen/calculators/GeJuCalculator.d.ts +141 -0
  45. package/dist/services/qimen/calculators/GeJuCalculator.d.ts.map +1 -0
  46. package/dist/services/qimen/calculators/GeJuCalculator.js +711 -0
  47. package/dist/services/qimen/calculators/GeJuCalculator.js.map +1 -0
  48. package/dist/services/qimen/calculators/JiuGongCalculator.d.ts +56 -0
  49. package/dist/services/qimen/calculators/JiuGongCalculator.d.ts.map +1 -0
  50. package/dist/services/qimen/calculators/JiuGongCalculator.js +98 -0
  51. package/dist/services/qimen/calculators/JiuGongCalculator.js.map +1 -0
  52. package/dist/services/qimen/calculators/JiuXingCalculator.d.ts +54 -0
  53. package/dist/services/qimen/calculators/JiuXingCalculator.d.ts.map +1 -0
  54. package/dist/services/qimen/calculators/JiuXingCalculator.js +117 -0
  55. package/dist/services/qimen/calculators/JiuXingCalculator.js.map +1 -0
  56. package/dist/services/qimen/calculators/JuShuCalculator.d.ts +57 -0
  57. package/dist/services/qimen/calculators/JuShuCalculator.d.ts.map +1 -0
  58. package/dist/services/qimen/calculators/JuShuCalculator.js +115 -0
  59. package/dist/services/qimen/calculators/JuShuCalculator.js.map +1 -0
  60. package/dist/services/qimen/calculators/PanTypeCalculator.d.ts +117 -0
  61. package/dist/services/qimen/calculators/PanTypeCalculator.d.ts.map +1 -0
  62. package/dist/services/qimen/calculators/PanTypeCalculator.js +237 -0
  63. package/dist/services/qimen/calculators/PanTypeCalculator.js.map +1 -0
  64. package/dist/services/qimen/calculators/SanQiLiuYiCalculator.d.ts +50 -0
  65. package/dist/services/qimen/calculators/SanQiLiuYiCalculator.d.ts.map +1 -0
  66. package/dist/services/qimen/calculators/SanQiLiuYiCalculator.js +86 -0
  67. package/dist/services/qimen/calculators/SanQiLiuYiCalculator.js.map +1 -0
  68. package/dist/services/qimen/calculators/ShenShaCalculator.d.ts +80 -0
  69. package/dist/services/qimen/calculators/ShenShaCalculator.d.ts.map +1 -0
  70. package/dist/services/qimen/calculators/ShenShaCalculator.js +300 -0
  71. package/dist/services/qimen/calculators/ShenShaCalculator.js.map +1 -0
  72. package/dist/services/qimen/calculators/YongShenCalculator.d.ts +78 -0
  73. package/dist/services/qimen/calculators/YongShenCalculator.d.ts.map +1 -0
  74. package/dist/services/qimen/calculators/YongShenCalculator.js +497 -0
  75. package/dist/services/qimen/calculators/YongShenCalculator.js.map +1 -0
  76. package/dist/services/qimen/calculators/ZeRiCalculator.d.ts +78 -0
  77. package/dist/services/qimen/calculators/ZeRiCalculator.d.ts.map +1 -0
  78. package/dist/services/qimen/calculators/ZeRiCalculator.js +431 -0
  79. package/dist/services/qimen/calculators/ZeRiCalculator.js.map +1 -0
  80. package/dist/services/qimen/calculators/ZhuanPanCalculator.d.ts +118 -0
  81. package/dist/services/qimen/calculators/ZhuanPanCalculator.d.ts.map +1 -0
  82. package/dist/services/qimen/calculators/ZhuanPanCalculator.js +260 -0
  83. package/dist/services/qimen/calculators/ZhuanPanCalculator.js.map +1 -0
  84. package/dist/services/qimen/data/constants.d.ts +105 -0
  85. package/dist/services/qimen/data/constants.d.ts.map +1 -0
  86. package/dist/services/qimen/data/constants.js +295 -0
  87. package/dist/services/qimen/data/constants.js.map +1 -0
  88. package/dist/services/qimen/data/shensha-rules.d.ts +177 -0
  89. package/dist/services/qimen/data/shensha-rules.d.ts.map +1 -0
  90. package/dist/services/qimen/data/shensha-rules.js +397 -0
  91. package/dist/services/qimen/data/shensha-rules.js.map +1 -0
  92. package/dist/services/qimen/data/yongshen-rules.d.ts +115 -0
  93. package/dist/services/qimen/data/yongshen-rules.d.ts.map +1 -0
  94. package/dist/services/qimen/data/yongshen-rules.js +365 -0
  95. package/dist/services/qimen/data/yongshen-rules.js.map +1 -0
  96. package/dist/services/qimen/index.d.ts +20 -0
  97. package/dist/services/qimen/index.d.ts.map +1 -0
  98. package/dist/services/qimen/index.js +43 -0
  99. package/dist/services/qimen/index.js.map +1 -0
  100. package/dist/services/qimen/types.d.ts +390 -0
  101. package/dist/services/qimen/types.d.ts.map +1 -0
  102. package/dist/services/qimen/types.js +20 -0
  103. package/dist/services/qimen/types.js.map +1 -0
  104. package/dist/services/qimen/utils/gongUtils.d.ts +80 -0
  105. package/dist/services/qimen/utils/gongUtils.d.ts.map +1 -0
  106. package/dist/services/qimen/utils/gongUtils.js +164 -0
  107. package/dist/services/qimen/utils/gongUtils.js.map +1 -0
  108. package/package.json +1 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # 命盘 MCP Server
2
2
 
3
- [![Version](https://img.shields.io/badge/version-0.1.2-blue.svg)](https://github.com/ChesterRa/mingpan)
3
+ [![Version](https://img.shields.io/badge/version-0.1.3-blue.svg)](https://github.com/ChesterRa/mingpan)
4
4
  [![License](https://img.shields.io/badge/license-Apache%202.0-green.svg)](LICENSE)
5
5
 
6
6
  **命盘(Mingpan)** 是一个中华传统术数 MCP 服务,为 Claude 等 AI 应用提供命理排盘与占卜起卦的计算能力。
@@ -8,7 +8,7 @@
8
8
  ## 特性
9
9
 
10
10
  - **MCP 原生**:无缝集成 Claude Desktop 及 Claude Code
11
- - 🌏 **繁体中文输出**:符合传统术数的专业术语
11
+ - 🌏 **中文输出**:以简体为主,术语保持传统
12
12
  - 📊 **结构化文本**:便于 AI 理解与分析的格式
13
13
 
14
14
  ## 配置方法
@@ -44,6 +44,8 @@ claude mcp add mingpan -- npx -y mingpan
44
44
 
45
45
  > 请帮我排一个八字命盘,1992年4月12日7点30分,男性
46
46
 
47
+ > 请帮我起一个奇门遁甲时盘,2024年6月21日10点
48
+
47
49
  ## 工具列表
48
50
 
49
51
  ### 命理排盘
@@ -52,24 +54,24 @@ claude mcp add mingpan -- npx -y mingpan
52
54
 
53
55
  #### 八字命理
54
56
 
55
- | 工具 | 说明 |
56
- |------|------|
57
- | `bazi_basic` | 八字命盘排盘(四柱、藏干、十神、五行力量) |
58
- | `bazi_dayun` | 大运列表(十年一运) |
59
- | `bazi_liunian` | 流年列表(指定年份范围) |
60
- | `bazi_liuyue` | 流月列表(节气月,立春起算) |
61
- | `bazi_liuri` | 流日列表(指定月份内每日) |
57
+ | 工具 | 说明 |
58
+ | -------------- | ------------------------------------------ |
59
+ | `bazi_basic` | 八字命盘排盘(四柱、藏干、十神、五行力量) |
60
+ | `bazi_dayun` | 大运列表(十年一运) |
61
+ | `bazi_liunian` | 流年列表(指定年份范围) |
62
+ | `bazi_liuyue` | 流月列表(节气月,立春起算) |
63
+ | `bazi_liuri` | 流日列表(指定月份内每日) |
62
64
 
63
65
  #### 紫微斗数
64
66
 
65
- | 工具 | 说明 |
66
- |------|------|
67
- | `ziwei_basic` | 紫微命盘排盘(十二宫、主星、辅星、四化) |
68
- | `ziwei_daxian` | 大限列表(十年一限) |
69
- | `ziwei_xiaoxian` | 小限列表(每年一宫) |
70
- | `ziwei_liunian` | 流年列表(指定年份范围) |
71
- | `ziwei_liuyue` | 流月列表(农历月) |
72
- | `ziwei_liuri` | 流日列表(农历日) |
67
+ | 工具 | 说明 |
68
+ | ---------------- | ---------------------------------------- |
69
+ | `ziwei_basic` | 紫微命盘排盘(十二宫、主星、辅星、四化) |
70
+ | `ziwei_daxian` | 大限列表(十年一限) |
71
+ | `ziwei_xiaoxian` | 小限列表(每年一宫) |
72
+ | `ziwei_liunian` | 流年列表(指定年份范围) |
73
+ | `ziwei_liuyue` | 流月列表(农历月) |
74
+ | `ziwei_liuri` | 流日列表(农历日) |
73
75
 
74
76
  ### 占卜起卦
75
77
 
@@ -77,8 +79,8 @@ claude mcp add mingpan -- npx -y mingpan
77
79
 
78
80
  #### 六爻
79
81
 
80
- | 工具 | 说明 |
81
- |------|------|
82
+ | 工具 | 说明 |
83
+ | -------------- | --------------------------------------------------- |
82
84
  | `liuyao_basic` | 六爻排盘(本卦/变卦、纳甲、六亲、六神、世应、旬空) |
83
85
 
84
86
  六爻输入为六个爻值(自下而上):
@@ -89,8 +91,8 @@ claude mcp add mingpan -- npx -y mingpan
89
91
 
90
92
  #### 梅花易数
91
93
 
92
- | 工具 | 说明 |
93
- |------|------|
94
+ | 工具 | 说明 |
95
+ | -------------- | ---------------------------------------- |
94
96
  | `meihua_basic` | 梅花易数排盘(本卦/变卦/互卦、体用分析) |
95
97
 
96
98
  支持两种起卦方式:
@@ -99,37 +101,63 @@ claude mcp add mingpan -- npx -y mingpan
99
101
 
100
102
  #### 大六壬
101
103
 
102
- | 工具 | 说明 |
103
- |------|------|
104
+ | 工具 | 说明 |
105
+ | ---------------- | ------------------------------------------------ |
104
106
  | `daliuren_basic` | 大六壬排盘(天地盘、四课、三传、十二天将、神煞) |
105
107
 
106
108
  大六壬为三式之首,需输入节气、农历月、日干支、时干支。
107
109
 
110
+ #### 奇门遁甲
111
+
112
+ | 工具 | 说明 |
113
+ | --------------- | ---- |
114
+ | `qimen_basic` | 奇门遁甲排盘(九宫布局、三奇六仪、八门九星八神、格局判断) |
115
+ | `qimen_yongshen`| 奇门用神分析(按事类选取用神,含主客、旺衰、空亡、入墓等) |
116
+ | `qimen_zeri` | 奇门择日(指定日期区间内筛选相对更佳的时机) |
117
+
118
+ 奇门遁甲为三式之一,盘式与规则主要参考张志春《神奇之门》,支持:时盘/日盘/月盘/年盘、转盘/飞盘、拆补法/茅山法。
119
+
120
+ 更多说明见:`docs/qimen-yongshen-guide.md`。
121
+
108
122
  ## 输入参数
109
123
 
110
124
  ### 命理工具(八字/紫微)
111
125
 
112
- | 参数 | 类型 | 必填 | 说明 |
113
- |------|------|------|------|
114
- | year | number | ✓ | 出生年份(1900-2100) |
115
- | month | number | ✓ | 出生月份(1-12) |
116
- | day | number | ✓ | 出生日期(1-31) |
117
- | hour | number | ✓ | 出生时辰(0-23) |
118
- | minute | number | | 出生分钟(0-59),默认 0 |
119
- | gender | string | ✓ | `male` / `female` |
120
- | longitude | number | | 出生地经度,用于真太阳时校正 |
121
- | isLunar | boolean | | 是否为农历输入,默认 false |
126
+ | 参数 | 类型 | 必填 | 说明 |
127
+ | --------- | ------- | ---- | ---------------------------- |
128
+ | year | number | ✓ | 出生年份(1900-2100) |
129
+ | month | number | ✓ | 出生月份(1-12) |
130
+ | day | number | ✓ | 出生日期(1-31) |
131
+ | hour | number | ✓ | 出生时辰(0-23) |
132
+ | minute | number | | 出生分钟(0-59),默认 0 |
133
+ | gender | string | ✓ | `male` / `female` |
134
+ | longitude | number | | 出生地经度,用于真太阳时校正 |
135
+ | isLunar | boolean | | 是否为农历输入,默认 false |
122
136
 
123
137
  ### 占卜工具(六爻/梅花/大六壬)
124
138
 
125
139
  占卜工具使用起卦时间而非出生时间,具体参数请参考各工具说明。
126
140
 
141
+ ### 奇门遁甲工具
142
+
143
+ | 参数 | 类型 | 必填 | 说明 |
144
+ | ------------ | ------- | ---- | ---- |
145
+ | year | number | ✓ | 起盘年份(1900-2100) |
146
+ | month | number | ✓ | 起盘月份(1-12) |
147
+ | day | number | ✓ | 起盘日期(1-31) |
148
+ | hour | number | ✓ | 起盘时辰(0-23) |
149
+ | minute | number | | 分钟(0-59),默认 0 |
150
+ | isLunar | boolean | | 是否为农历输入,默认 false |
151
+ | panType | string | | `时盘` / `日盘` / `月盘` / `年盘`,默认 `时盘` |
152
+ | panStyle | string | | `转盘` / `飞盘`,默认 `转盘` |
153
+ | zhiRunMethod | string | | `chaibu`(拆补法)/ `maoshan`(茅山法),默认 `chaibu` |
154
+
127
155
  ## 月份基准说明
128
156
 
129
- | 系统 | 月份基准 | 日期基准 |
130
- |------|----------|----------|
131
- | 八字 | 节气月(立春起算) | 公历日 |
132
- | 紫微 | 农历月(初一起算) | 农历日 |
157
+ | 系统 | 月份基准 | 日期基准 |
158
+ | ---- | ------------------ | -------- |
159
+ | 八字 | 节气月(立春起算) | 公历日 |
160
+ | 紫微 | 农历月(初一起算) | 农历日 |
133
161
 
134
162
  ## 开发
135
163
 
@@ -143,12 +171,12 @@ npm run dev # 监听变化
143
171
 
144
172
  ## 依赖
145
173
 
146
- | 库 | 用途 |
147
- |------|------|
148
- | `@modelcontextprotocol/sdk` | MCP 协议实现 |
149
- | `lunar-javascript` | 农历/公历转换 |
150
- | `iztro` | 紫微斗数计算引擎 |
151
- | `zod` | 输入参数校验 |
174
+ | 库 | 用途 |
175
+ | --------------------------- | ---------------- |
176
+ | `@modelcontextprotocol/sdk` | MCP 协议实现 |
177
+ | `lunar-javascript` | 农历/公历转换 |
178
+ | `iztro` | 紫微斗数计算引擎 |
179
+ | `zod` | 输入参数校验 |
152
180
 
153
181
  ## 路线图
154
182
 
@@ -157,7 +185,7 @@ npm run dev # 监听变化
157
185
  - [x] 六爻排盘
158
186
  - [x] 梅花易数排盘
159
187
  - [x] 大六壬排盘
160
- - [ ] 奇门遁甲
188
+ - [x] 奇门遁甲排盘
161
189
 
162
190
  ## 许可证
163
191
 
@@ -0,0 +1,60 @@
1
+ /**
2
+ * 洛书飞宫规则
3
+ * Luoshu flying rules for nine-palace calculations
4
+ */
5
+ import type { GongWei } from './types';
6
+ /**
7
+ * 洛书飞布顺序 (顺飞) - 8宫版本(不含中宫)
8
+ * 从任意宫开始,按此顺序飞布
9
+ * 1(坎) -> 8(艮) -> 3(震) -> 4(巽) -> 9(离) -> 2(坤) -> 7(兑) -> 6(乾)
10
+ */
11
+ export declare const LUOSHU_ORDER: GongWei[];
12
+ /**
13
+ * 洛书飞布顺序 (顺飞) - 9宫版本(含中宫)
14
+ * 用于三奇六仪天盘飞布
15
+ * 1(坎) -> 8(艮) -> 3(震) -> 4(巽) -> 5(中) -> 9(离) -> 2(坤) -> 7(兑) -> 6(乾)
16
+ */
17
+ export declare const LUOSHU_ORDER_9: GongWei[];
18
+ /**
19
+ * 中宫寄宫 (天禽寄坤二)
20
+ */
21
+ export declare const ZHONG_GONG_JI: GongWei;
22
+ /**
23
+ * 根据宫位获取飞布顺序中的索引
24
+ * @param gong 宫位 (1-9)
25
+ * @returns 索引 (0-7),中宫返回 -1
26
+ */
27
+ export declare function getLuoShuIndex(gong: GongWei): number;
28
+ /**
29
+ * 根据索引获取飞布宫位
30
+ * @param index 索引(可以超过7,会自动取模)
31
+ * @returns 宫位
32
+ */
33
+ export declare function getLuoShuGong(index: number): GongWei;
34
+ /**
35
+ * 根据宫位获取9宫飞布顺序中的索引
36
+ * @param gong 宫位 (1-9)
37
+ * @returns 索引 (0-8)
38
+ */
39
+ export declare function getLuoShuIndex9(gong: GongWei): number;
40
+ /**
41
+ * 根据索引获取9宫飞布宫位
42
+ * @param index 索引(可以超过8,会自动取模)
43
+ * @returns 宫位
44
+ */
45
+ export declare function getLuoShuGong9(index: number): GongWei;
46
+ /**
47
+ * 顺飞:从某宫开始顺时针飞布
48
+ * @param startGong 起始宫位
49
+ * @param steps 步数
50
+ * @returns 目标宫位
51
+ */
52
+ export declare function flyForward(startGong: GongWei, steps: number): GongWei;
53
+ /**
54
+ * 逆飞:从某宫开始逆时针飞布
55
+ * @param startGong 起始宫位
56
+ * @param steps 步数
57
+ * @returns 目标宫位
58
+ */
59
+ export declare function flyBackward(startGong: GongWei, steps: number): GongWei;
60
+ //# sourceMappingURL=FlyingRule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlyingRule.d.ts","sourceRoot":"","sources":["../../../src/core/qimen/FlyingRule.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,OAAO,EAA6B,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,EAAgC,CAAC;AAErE;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,OAAW,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAGpD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGpD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAErD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAOrE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAOtE"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ /**
3
+ * 洛书飞宫规则
4
+ * Luoshu flying rules for nine-palace calculations
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ZHONG_GONG_JI = exports.LUOSHU_ORDER_9 = exports.LUOSHU_ORDER = void 0;
8
+ exports.getLuoShuIndex = getLuoShuIndex;
9
+ exports.getLuoShuGong = getLuoShuGong;
10
+ exports.getLuoShuIndex9 = getLuoShuIndex9;
11
+ exports.getLuoShuGong9 = getLuoShuGong9;
12
+ exports.flyForward = flyForward;
13
+ exports.flyBackward = flyBackward;
14
+ /**
15
+ * 洛书飞布顺序 (顺飞) - 8宫版本(不含中宫)
16
+ * 从任意宫开始,按此顺序飞布
17
+ * 1(坎) -> 8(艮) -> 3(震) -> 4(巽) -> 9(离) -> 2(坤) -> 7(兑) -> 6(乾)
18
+ */
19
+ exports.LUOSHU_ORDER = [1, 8, 3, 4, 9, 2, 7, 6];
20
+ /**
21
+ * 洛书飞布顺序 (顺飞) - 9宫版本(含中宫)
22
+ * 用于三奇六仪天盘飞布
23
+ * 1(坎) -> 8(艮) -> 3(震) -> 4(巽) -> 5(中) -> 9(离) -> 2(坤) -> 7(兑) -> 6(乾)
24
+ */
25
+ exports.LUOSHU_ORDER_9 = [1, 8, 3, 4, 5, 9, 2, 7, 6];
26
+ /**
27
+ * 中宫寄宫 (天禽寄坤二)
28
+ */
29
+ exports.ZHONG_GONG_JI = 2;
30
+ /**
31
+ * 根据宫位获取飞布顺序中的索引
32
+ * @param gong 宫位 (1-9)
33
+ * @returns 索引 (0-7),中宫返回 -1
34
+ */
35
+ function getLuoShuIndex(gong) {
36
+ if (gong === 5)
37
+ return -1; // 中宫不在飞布顺序中
38
+ return exports.LUOSHU_ORDER.indexOf(gong);
39
+ }
40
+ /**
41
+ * 根据索引获取飞布宫位
42
+ * @param index 索引(可以超过7,会自动取模)
43
+ * @returns 宫位
44
+ */
45
+ function getLuoShuGong(index) {
46
+ const normalizedIndex = ((index % 8) + 8) % 8;
47
+ return exports.LUOSHU_ORDER[normalizedIndex];
48
+ }
49
+ /**
50
+ * 根据宫位获取9宫飞布顺序中的索引
51
+ * @param gong 宫位 (1-9)
52
+ * @returns 索引 (0-8)
53
+ */
54
+ function getLuoShuIndex9(gong) {
55
+ return exports.LUOSHU_ORDER_9.indexOf(gong);
56
+ }
57
+ /**
58
+ * 根据索引获取9宫飞布宫位
59
+ * @param index 索引(可以超过8,会自动取模)
60
+ * @returns 宫位
61
+ */
62
+ function getLuoShuGong9(index) {
63
+ const normalizedIndex = ((index % 9) + 9) % 9;
64
+ return exports.LUOSHU_ORDER_9[normalizedIndex];
65
+ }
66
+ /**
67
+ * 顺飞:从某宫开始顺时针飞布
68
+ * @param startGong 起始宫位
69
+ * @param steps 步数
70
+ * @returns 目标宫位
71
+ */
72
+ function flyForward(startGong, steps) {
73
+ let actualStart = startGong;
74
+ if (actualStart === 5) {
75
+ actualStart = exports.ZHONG_GONG_JI; // 中宫寄坤二
76
+ }
77
+ const startIdx = getLuoShuIndex(actualStart);
78
+ return getLuoShuGong(startIdx + steps);
79
+ }
80
+ /**
81
+ * 逆飞:从某宫开始逆时针飞布
82
+ * @param startGong 起始宫位
83
+ * @param steps 步数
84
+ * @returns 目标宫位
85
+ */
86
+ function flyBackward(startGong, steps) {
87
+ let actualStart = startGong;
88
+ if (actualStart === 5) {
89
+ actualStart = exports.ZHONG_GONG_JI; // 中宫寄坤二
90
+ }
91
+ const startIdx = getLuoShuIndex(actualStart);
92
+ return getLuoShuGong(startIdx - steps);
93
+ }
94
+ //# sourceMappingURL=FlyingRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlyingRule.js","sourceRoot":"","sources":["../../../src/core/qimen/FlyingRule.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA4BH,wCAGC;AAOD,sCAGC;AAOD,0CAEC;AAOD,wCAGC;AAQD,gCAOC;AAQD,kCAOC;AAtFD;;;;GAIG;AACU,QAAA,YAAY,GAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAEhE;;;;GAIG;AACU,QAAA,cAAc,GAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAErE;;GAEG;AACU,QAAA,aAAa,GAAY,CAAC,CAAC;AAExC;;;;GAIG;AACH,SAAgB,cAAc,CAAC,IAAa;IAC1C,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY;IACvC,OAAO,oBAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,KAAa;IACzC,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9C,OAAO,oBAAY,CAAC,eAAe,CAAC,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,IAAa;IAC3C,OAAO,sBAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,KAAa;IAC1C,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9C,OAAO,sBAAc,CAAC,eAAe,CAAC,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,UAAU,CAAC,SAAkB,EAAE,KAAa;IAC1D,IAAI,WAAW,GAAG,SAAS,CAAC;IAC5B,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACtB,WAAW,GAAG,qBAAa,CAAC,CAAC,QAAQ;IACvC,CAAC;IACD,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC7C,OAAO,aAAa,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,SAAkB,EAAE,KAAa;IAC3D,IAAI,WAAW,GAAG,SAAS,CAAC;IAC5B,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACtB,WAAW,GAAG,qBAAa,CAAC,CAAC,QAAQ;IACvC,CAAC;IACD,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC7C,OAAO,aAAa,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * 九宫映射常量
3
+ * Gong (palace) mapping constants for Qimen calculations
4
+ */
5
+ import type { GongWei, DiZhi, WuXing, TianGan } from './types';
6
+ /**
7
+ * 九宫名称 (洛书顺序)
8
+ * 1-坎、2-坤、3-震、4-巽、5-中、6-乾、7-兑、8-艮、9-离
9
+ */
10
+ export declare const GONG_NAMES: Record<GongWei, string>;
11
+ /**
12
+ * 九宫五行
13
+ */
14
+ export declare const GONG_WUXING: Record<GongWei, WuXing>;
15
+ /**
16
+ * 地支 -> 宫位映射
17
+ */
18
+ export declare const DI_ZHI_GONG: Record<DiZhi, GongWei>;
19
+ /**
20
+ * 宫位冲对映射表
21
+ * 坎(1)↔离(9), 震(3)↔兑(7), 巽(4)↔乾(6), 坤(2)↔艮(8)
22
+ */
23
+ export declare const CHONG_GONG_MAP: Record<GongWei, GongWei>;
24
+ /**
25
+ * 天干五合映射表(奇仪相合)
26
+ * 甲己合不在此表中,因为甲遁于六仪,不会出现在盘面上
27
+ */
28
+ export declare const GAN_HE_MAP: Partial<Record<TianGan, TianGan>>;
29
+ //# sourceMappingURL=GongMapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GongMapping.d.ts","sourceRoot":"","sources":["../../../src/core/qimen/GongMapping.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE/D;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAU9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAU/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAa9C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAUnD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CASxD,CAAC"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ /**
3
+ * 九宫映射常量
4
+ * Gong (palace) mapping constants for Qimen calculations
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.GAN_HE_MAP = exports.CHONG_GONG_MAP = exports.DI_ZHI_GONG = exports.GONG_WUXING = exports.GONG_NAMES = void 0;
8
+ /**
9
+ * 九宫名称 (洛书顺序)
10
+ * 1-坎、2-坤、3-震、4-巽、5-中、6-乾、7-兑、8-艮、9-离
11
+ */
12
+ exports.GONG_NAMES = {
13
+ 1: '坎',
14
+ 2: '坤',
15
+ 3: '震',
16
+ 4: '巽',
17
+ 5: '中',
18
+ 6: '乾',
19
+ 7: '兑',
20
+ 8: '艮',
21
+ 9: '离',
22
+ };
23
+ /**
24
+ * 九宫五行
25
+ */
26
+ exports.GONG_WUXING = {
27
+ 1: '水', // 坎
28
+ 2: '土', // 坤
29
+ 3: '木', // 震
30
+ 4: '木', // 巽
31
+ 5: '土', // 中
32
+ 6: '金', // 乾
33
+ 7: '金', // 兑
34
+ 8: '土', // 艮
35
+ 9: '火', // 离
36
+ };
37
+ /**
38
+ * 地支 -> 宫位映射
39
+ */
40
+ exports.DI_ZHI_GONG = {
41
+ '子': 1,
42
+ '丑': 8,
43
+ '寅': 8,
44
+ '卯': 3,
45
+ '辰': 4,
46
+ '巳': 4,
47
+ '午': 9,
48
+ '未': 2,
49
+ '申': 2,
50
+ '酉': 7,
51
+ '戌': 6,
52
+ '亥': 6,
53
+ };
54
+ /**
55
+ * 宫位冲对映射表
56
+ * 坎(1)↔离(9), 震(3)↔兑(7), 巽(4)↔乾(6), 坤(2)↔艮(8)
57
+ */
58
+ exports.CHONG_GONG_MAP = {
59
+ 1: 9, // 坎 ↔ 离
60
+ 9: 1,
61
+ 3: 7, // 震 ↔ 兑
62
+ 7: 3,
63
+ 4: 6, // 巽 ↔ 乾
64
+ 6: 4,
65
+ 2: 8, // 坤 ↔ 艮
66
+ 8: 2,
67
+ 5: 5, // 中宫无对冲
68
+ };
69
+ /**
70
+ * 天干五合映射表(奇仪相合)
71
+ * 甲己合不在此表中,因为甲遁于六仪,不会出现在盘面上
72
+ */
73
+ exports.GAN_HE_MAP = {
74
+ '乙': '庚',
75
+ '庚': '乙',
76
+ '丙': '辛',
77
+ '辛': '丙',
78
+ '丁': '壬',
79
+ '壬': '丁',
80
+ '戊': '癸',
81
+ '癸': '戊',
82
+ };
83
+ //# sourceMappingURL=GongMapping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GongMapping.js","sourceRoot":"","sources":["../../../src/core/qimen/GongMapping.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAIH;;;GAGG;AACU,QAAA,UAAU,GAA4B;IACjD,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;CACP,CAAC;AAEF;;GAEG;AACU,QAAA,WAAW,GAA4B;IAClD,CAAC,EAAE,GAAG,EAAE,IAAI;IACZ,CAAC,EAAE,GAAG,EAAE,IAAI;IACZ,CAAC,EAAE,GAAG,EAAE,IAAI;IACZ,CAAC,EAAE,GAAG,EAAE,IAAI;IACZ,CAAC,EAAE,GAAG,EAAE,IAAI;IACZ,CAAC,EAAE,GAAG,EAAE,IAAI;IACZ,CAAC,EAAE,GAAG,EAAE,IAAI;IACZ,CAAC,EAAE,GAAG,EAAE,IAAI;IACZ,CAAC,EAAE,GAAG,EAAE,IAAI;CACb,CAAC;AAEF;;GAEG;AACU,QAAA,WAAW,GAA2B;IACjD,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;CACP,CAAC;AAEF;;;GAGG;AACU,QAAA,cAAc,GAA6B;IACtD,CAAC,EAAE,CAAC,EAAE,QAAQ;IACd,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC,EAAE,QAAQ;IACd,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC,EAAE,QAAQ;IACd,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC,EAAE,QAAQ;IACd,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC,EAAE,QAAQ;CACf,CAAC;AAEF;;;GAGG;AACU,QAAA,UAAU,GAAsC;IAC3D,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;CACT,CAAC"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * 转盘式旋转规则
3
+ * Rotating rules for Zhuan Pan style Qimen calculations
4
+ *
5
+ * 转盘式与飞盘式的区别:
6
+ * - 飞盘式:按洛书数字顺序飞布 (1→8→3→4→9→2→7→6)
7
+ * - 转盘式:按物理方向旋转(九宫格上顺/逆时针)
8
+ *
9
+ * 九宫格物理布局:
10
+ * ```
11
+ * 巽4 离9 坤2
12
+ * 震3 中5 兑7
13
+ * 艮8 坎1 乾6
14
+ * ```
15
+ *
16
+ * 物理顺时针顺序(从坎1开始):
17
+ * 1(坎) → 8(艮) → 3(震) → 4(巽) → 9(离) → 2(坤) → 7(兑) → 6(乾) → 回到1
18
+ *
19
+ * 参考:《神奇之门》(张志春著)
20
+ */
21
+ import type { GongWei } from './types';
22
+ /**
23
+ * 物理顺时针旋转顺序 - 8宫版本(不含中宫)
24
+ * 从坎1开始,顺时针:坎→艮→震→巽→离→坤→兑→乾
25
+ */
26
+ export declare const PHYSICAL_CLOCKWISE_ORDER: GongWei[];
27
+ /**
28
+ * 物理逆时针旋转顺序 - 8宫版本(不含中宫)
29
+ * 从坎1开始,逆时针:坎→乾→兑→坤→离→巽→震→艮
30
+ */
31
+ export declare const PHYSICAL_COUNTER_CLOCKWISE_ORDER: GongWei[];
32
+ /**
33
+ * 中宫寄宫 (天禽寄坤二)
34
+ */
35
+ export declare const ZHONG_GONG_JI_ZHUAN: GongWei;
36
+ /**
37
+ * 根据宫位获取物理顺时针顺序中的索引
38
+ * @param gong 宫位 (1-9)
39
+ * @returns 索引 (0-7),中宫返回 -1
40
+ */
41
+ export declare function getPhysicalClockwiseIndex(gong: GongWei): number;
42
+ /**
43
+ * 根据索引获取物理顺时针方向的宫位
44
+ * @param index 索引(可以超过7,会自动取模)
45
+ * @returns 宫位
46
+ */
47
+ export declare function getPhysicalClockwiseGong(index: number): GongWei;
48
+ /**
49
+ * 根据宫位获取物理逆时针顺序中的索引
50
+ * @param gong 宫位 (1-9)
51
+ * @returns 索引 (0-7),中宫返回 -1
52
+ */
53
+ export declare function getPhysicalCounterClockwiseIndex(gong: GongWei): number;
54
+ /**
55
+ * 根据索引获取物理逆时针方向的宫位
56
+ * @param index 索引(可以超过7,会自动取模)
57
+ * @returns 宫位
58
+ */
59
+ export declare function getPhysicalCounterClockwiseGong(index: number): GongWei;
60
+ /**
61
+ * 转盘式旋转:从某宫开始旋转指定步数
62
+ * @param startGong 起始宫位
63
+ * @param steps 步数
64
+ * @param isYang 是否阳遁(阳遁顺时针,阴遁逆时针)
65
+ * @returns 目标宫位
66
+ */
67
+ export declare function rotate(startGong: GongWei, steps: number, isYang: boolean): GongWei;
68
+ /**
69
+ * 计算两宫之间的旋转步数
70
+ * @param fromGong 起始宫位
71
+ * @param toGong 目标宫位
72
+ * @param isYang 是否阳遁
73
+ * @returns 步数
74
+ */
75
+ export declare function getRotationSteps(fromGong: GongWei, toGong: GongWei, isYang: boolean): number;
76
+ //# sourceMappingURL=RotatingRule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RotatingRule.d.ts","sourceRoot":"","sources":["../../../src/core/qimen/RotatingRule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,OAAO,EAA6B,CAAC;AAE5E;;;GAGG;AACH,eAAO,MAAM,gCAAgC,EAAE,OAAO,EAA6B,CAAC;AAEpF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAAW,CAAC;AAE9C;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAG/D;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAG/D;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAGtE;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGtE;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAelF;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAa5F"}