mingpan 0.1.1 → 0.1.2

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 (135) hide show
  1. package/README.md +53 -7
  2. package/dist/core/bazi/types.d.ts +0 -1
  3. package/dist/core/bazi/types.d.ts.map +1 -1
  4. package/dist/index.js +398 -164
  5. package/dist/index.js.map +1 -1
  6. package/dist/output/daliurenTextRenderer.d.ts +23 -0
  7. package/dist/output/daliurenTextRenderer.d.ts.map +1 -0
  8. package/dist/output/daliurenTextRenderer.js +109 -0
  9. package/dist/output/daliurenTextRenderer.js.map +1 -0
  10. package/dist/output/liuyaoTextRenderer.d.ts +12 -0
  11. package/dist/output/liuyaoTextRenderer.d.ts.map +1 -0
  12. package/dist/output/liuyaoTextRenderer.js +148 -0
  13. package/dist/output/liuyaoTextRenderer.js.map +1 -0
  14. package/dist/output/meihuaTextRenderer.d.ts +12 -0
  15. package/dist/output/meihuaTextRenderer.d.ts.map +1 -0
  16. package/dist/output/meihuaTextRenderer.js +53 -0
  17. package/dist/output/meihuaTextRenderer.js.map +1 -0
  18. package/dist/services/bazi/types.d.ts +0 -2
  19. package/dist/services/bazi/types.d.ts.map +1 -1
  20. package/dist/services/bazi/types.js.map +1 -1
  21. package/dist/services/daliuren/DaliurenService.d.ts +24 -0
  22. package/dist/services/daliuren/DaliurenService.d.ts.map +1 -0
  23. package/dist/services/daliuren/DaliurenService.js +67 -0
  24. package/dist/services/daliuren/DaliurenService.js.map +1 -0
  25. package/dist/services/daliuren/calculators/SanChuanCalculator.d.ts +87 -0
  26. package/dist/services/daliuren/calculators/SanChuanCalculator.d.ts.map +1 -0
  27. package/dist/services/daliuren/calculators/SanChuanCalculator.js +443 -0
  28. package/dist/services/daliuren/calculators/SanChuanCalculator.js.map +1 -0
  29. package/dist/services/daliuren/calculators/ShenShaCalculator.d.ts +33 -0
  30. package/dist/services/daliuren/calculators/ShenShaCalculator.d.ts.map +1 -0
  31. package/dist/services/daliuren/calculators/ShenShaCalculator.js +92 -0
  32. package/dist/services/daliuren/calculators/ShenShaCalculator.js.map +1 -0
  33. package/dist/services/daliuren/calculators/SiKeCalculator.d.ts +35 -0
  34. package/dist/services/daliuren/calculators/SiKeCalculator.d.ts.map +1 -0
  35. package/dist/services/daliuren/calculators/SiKeCalculator.js +121 -0
  36. package/dist/services/daliuren/calculators/SiKeCalculator.js.map +1 -0
  37. package/dist/services/daliuren/calculators/TianDiPanCalculator.d.ts +41 -0
  38. package/dist/services/daliuren/calculators/TianDiPanCalculator.d.ts.map +1 -0
  39. package/dist/services/daliuren/calculators/TianDiPanCalculator.js +138 -0
  40. package/dist/services/daliuren/calculators/TianDiPanCalculator.js.map +1 -0
  41. package/dist/services/daliuren/data/constants.d.ts +62 -0
  42. package/dist/services/daliuren/data/constants.d.ts.map +1 -0
  43. package/dist/services/daliuren/data/constants.js +240 -0
  44. package/dist/services/daliuren/data/constants.js.map +1 -0
  45. package/dist/services/daliuren/index.d.ts +11 -0
  46. package/dist/services/daliuren/index.d.ts.map +1 -0
  47. package/dist/services/daliuren/index.js +33 -0
  48. package/dist/services/daliuren/index.js.map +1 -0
  49. package/dist/services/daliuren/types.d.ts +152 -0
  50. package/dist/services/daliuren/types.d.ts.map +1 -0
  51. package/dist/services/daliuren/types.js +17 -0
  52. package/dist/services/daliuren/types.js.map +1 -0
  53. package/dist/services/liuyao/LiuyaoService.d.ts +37 -0
  54. package/dist/services/liuyao/LiuyaoService.d.ts.map +1 -0
  55. package/dist/services/liuyao/LiuyaoService.js +214 -0
  56. package/dist/services/liuyao/LiuyaoService.js.map +1 -0
  57. package/dist/services/liuyao/calculators/FushenCalculator.d.ts +40 -0
  58. package/dist/services/liuyao/calculators/FushenCalculator.d.ts.map +1 -0
  59. package/dist/services/liuyao/calculators/FushenCalculator.js +124 -0
  60. package/dist/services/liuyao/calculators/FushenCalculator.js.map +1 -0
  61. package/dist/services/liuyao/calculators/JintuishenCalculator.d.ts +37 -0
  62. package/dist/services/liuyao/calculators/JintuishenCalculator.d.ts.map +1 -0
  63. package/dist/services/liuyao/calculators/JintuishenCalculator.js +86 -0
  64. package/dist/services/liuyao/calculators/JintuishenCalculator.js.map +1 -0
  65. package/dist/services/liuyao/calculators/LiuqinCalculator.d.ts +24 -0
  66. package/dist/services/liuyao/calculators/LiuqinCalculator.d.ts.map +1 -0
  67. package/dist/services/liuyao/calculators/LiuqinCalculator.js +75 -0
  68. package/dist/services/liuyao/calculators/LiuqinCalculator.js.map +1 -0
  69. package/dist/services/liuyao/calculators/LiushenCalculator.d.ts +29 -0
  70. package/dist/services/liuyao/calculators/LiushenCalculator.d.ts.map +1 -0
  71. package/dist/services/liuyao/calculators/LiushenCalculator.js +58 -0
  72. package/dist/services/liuyao/calculators/LiushenCalculator.js.map +1 -0
  73. package/dist/services/liuyao/calculators/NajiaCalculator.d.ts +55 -0
  74. package/dist/services/liuyao/calculators/NajiaCalculator.d.ts.map +1 -0
  75. package/dist/services/liuyao/calculators/NajiaCalculator.js +87 -0
  76. package/dist/services/liuyao/calculators/NajiaCalculator.js.map +1 -0
  77. package/dist/services/liuyao/calculators/WangshuaiCalculator.d.ts +43 -0
  78. package/dist/services/liuyao/calculators/WangshuaiCalculator.d.ts.map +1 -0
  79. package/dist/services/liuyao/calculators/WangshuaiCalculator.js +100 -0
  80. package/dist/services/liuyao/calculators/WangshuaiCalculator.js.map +1 -0
  81. package/dist/services/liuyao/calculators/XunkongCalculator.d.ts +30 -0
  82. package/dist/services/liuyao/calculators/XunkongCalculator.d.ts.map +1 -0
  83. package/dist/services/liuyao/calculators/XunkongCalculator.js +58 -0
  84. package/dist/services/liuyao/calculators/XunkongCalculator.js.map +1 -0
  85. package/dist/services/liuyao/data/guagong.d.ts +94 -0
  86. package/dist/services/liuyao/data/guagong.d.ts.map +1 -0
  87. package/dist/services/liuyao/data/guagong.js +317 -0
  88. package/dist/services/liuyao/data/guagong.js.map +1 -0
  89. package/dist/services/liuyao/index.d.ts +13 -0
  90. package/dist/services/liuyao/index.d.ts.map +1 -0
  91. package/dist/services/liuyao/index.js +29 -0
  92. package/dist/services/liuyao/index.js.map +1 -0
  93. package/dist/services/liuyao/types.d.ts +154 -0
  94. package/dist/services/liuyao/types.d.ts.map +1 -0
  95. package/dist/services/liuyao/types.js +11 -0
  96. package/dist/services/liuyao/types.js.map +1 -0
  97. package/dist/services/meihua/MeihuaService.d.ts +32 -0
  98. package/dist/services/meihua/MeihuaService.d.ts.map +1 -0
  99. package/dist/services/meihua/MeihuaService.js +176 -0
  100. package/dist/services/meihua/MeihuaService.js.map +1 -0
  101. package/dist/services/meihua/calculators/BianguaCalculator.d.ts +21 -0
  102. package/dist/services/meihua/calculators/BianguaCalculator.d.ts.map +1 -0
  103. package/dist/services/meihua/calculators/BianguaCalculator.js +46 -0
  104. package/dist/services/meihua/calculators/BianguaCalculator.js.map +1 -0
  105. package/dist/services/meihua/calculators/HuguaCalculator.d.ts +22 -0
  106. package/dist/services/meihua/calculators/HuguaCalculator.d.ts.map +1 -0
  107. package/dist/services/meihua/calculators/HuguaCalculator.js +46 -0
  108. package/dist/services/meihua/calculators/HuguaCalculator.js.map +1 -0
  109. package/dist/services/meihua/calculators/QiguaCalculator.d.ts +40 -0
  110. package/dist/services/meihua/calculators/QiguaCalculator.d.ts.map +1 -0
  111. package/dist/services/meihua/calculators/QiguaCalculator.js +105 -0
  112. package/dist/services/meihua/calculators/QiguaCalculator.js.map +1 -0
  113. package/dist/services/meihua/calculators/TiyongCalculator.d.ts +34 -0
  114. package/dist/services/meihua/calculators/TiyongCalculator.d.ts.map +1 -0
  115. package/dist/services/meihua/calculators/TiyongCalculator.js +105 -0
  116. package/dist/services/meihua/calculators/TiyongCalculator.js.map +1 -0
  117. package/dist/services/meihua/data/bagua.d.ts +19 -0
  118. package/dist/services/meihua/data/bagua.d.ts.map +1 -0
  119. package/dist/services/meihua/data/bagua.js +81 -0
  120. package/dist/services/meihua/data/bagua.js.map +1 -0
  121. package/dist/services/meihua/index.d.ts +11 -0
  122. package/dist/services/meihua/index.d.ts.map +1 -0
  123. package/dist/services/meihua/index.js +27 -0
  124. package/dist/services/meihua/index.js.map +1 -0
  125. package/dist/services/meihua/types.d.ts +95 -0
  126. package/dist/services/meihua/types.d.ts.map +1 -0
  127. package/dist/services/meihua/types.js +6 -0
  128. package/dist/services/meihua/types.js.map +1 -0
  129. package/dist/shared/types.d.ts +0 -1
  130. package/dist/shared/types.d.ts.map +1 -1
  131. package/dist/utils/timeNormalization.d.ts +48 -0
  132. package/dist/utils/timeNormalization.d.ts.map +1 -0
  133. package/dist/utils/timeNormalization.js +69 -0
  134. package/dist/utils/timeNormalization.js.map +1 -0
  135. package/package.json +1 -1
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ /**
3
+ * 起卦計算器
4
+ *
5
+ * 支持:
6
+ * - 時間起卦(農曆年月日時)
7
+ * - 數字起卦(兩數/三數)
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.QiguaCalculator = void 0;
11
+ const lunar_javascript_1 = require("lunar-javascript");
12
+ /** 地支對應時辰序數(子=1, 丑=2, ..., 亥=12) */
13
+ const DIZHI_TO_SHICHEN = {
14
+ '子': 1, '丑': 2, '寅': 3, '卯': 4, '辰': 5, '巳': 6,
15
+ '午': 7, '未': 8, '申': 9, '酉': 10, '戌': 11, '亥': 12,
16
+ };
17
+ /** 地支序數(子=1, 丑=2, ..., 亥=12) */
18
+ const DIZHI_INDEX = {
19
+ '子': 1, '丑': 2, '寅': 3, '卯': 4, '辰': 5, '巳': 6,
20
+ '午': 7, '未': 8, '申': 9, '酉': 10, '戌': 11, '亥': 12,
21
+ };
22
+ class QiguaCalculator {
23
+ /**
24
+ * 時間起卦
25
+ *
26
+ * 算法口徑(農曆)- 標準梅花易數口徑:
27
+ * - 年數 = 農曆年地支序數(子=1, 丑=2, ..., 亥=12)
28
+ * - 月數 = 農曆月(1-12,閏月按本月算)
29
+ * - 日數 = 農曆日(1-30)
30
+ * - 時數 = 時辰地支序數(子=1, 丑=2, ..., 亥=12)
31
+ *
32
+ * - 上卦數 = (年數 + 月數 + 日數) % 8,餘 0 取 8
33
+ * - 下卦數 = (年數 + 月數 + 日數 + 時數) % 8,餘 0 取 8
34
+ * - 動爻 = (年數 + 月數 + 日數 + 時數) % 6,餘 0 取 6
35
+ *
36
+ * 參考:《梅花易數》原著、shu-var 開源項目
37
+ */
38
+ static fromTime(year, month, day, hour, isLunar = false) {
39
+ // 獲取農曆
40
+ let lunar;
41
+ if (isLunar) {
42
+ // 農曆輸入需要包含時間信息
43
+ lunar = lunar_javascript_1.Lunar.fromYmdHms(year, month, day, hour, 0, 0);
44
+ }
45
+ else {
46
+ const solar = lunar_javascript_1.Solar.fromYmdHms(year, month, day, hour, 0, 0);
47
+ lunar = solar.getLunar();
48
+ }
49
+ // 獲取時辰地支序數
50
+ const hourBranch = lunar.getTimeZhi();
51
+ const shiChenIndex = DIZHI_TO_SHICHEN[hourBranch];
52
+ // 獲取年地支序數(標準梅花口徑:用地支序數 1-12,不是干支序數 1-60)
53
+ const yearZhi = lunar.getYearZhi();
54
+ const yearZhiIndex = DIZHI_INDEX[yearZhi];
55
+ // 農曆月日
56
+ const lunarMonth = Math.abs(lunar.getMonth()); // 閏月取絕對值
57
+ const lunarDay = lunar.getDay();
58
+ // 計算起卦數
59
+ const sumForUpper = yearZhiIndex + lunarMonth + lunarDay;
60
+ const sumForLower = sumForUpper + shiChenIndex;
61
+ const upperGuaIndex = sumForUpper % 8 === 0 ? 8 : sumForUpper % 8;
62
+ const lowerGuaIndex = sumForLower % 8 === 0 ? 8 : sumForLower % 8;
63
+ const movingYao = sumForLower % 6 === 0 ? 6 : sumForLower % 6;
64
+ return {
65
+ qiGuaData: {
66
+ upperNumber: sumForUpper,
67
+ lowerNumber: sumForLower,
68
+ yaoNumber: sumForLower,
69
+ upperGuaIndex,
70
+ lowerGuaIndex,
71
+ movingYao,
72
+ },
73
+ timeDetail: {
74
+ lunarYear: lunar.getYear(),
75
+ lunarMonth,
76
+ lunarDay,
77
+ shiChenIndex,
78
+ yearZhiIndex,
79
+ sumForUpper,
80
+ sumForLower,
81
+ },
82
+ lunar,
83
+ };
84
+ }
85
+ /**
86
+ * 數字起卦
87
+ *
88
+ * - 上卦 = upperNumber % 8,餘 0 取 8
89
+ * - 下卦 = lowerNumber % 8,餘 0 取 8
90
+ * - 動爻 = yaoNumber % 6,餘 0 取 6(默認用 upper + lower)
91
+ */
92
+ static fromNumber(upperNumber, lowerNumber, yaoNumber) {
93
+ const actualYaoNumber = yaoNumber ?? (upperNumber + lowerNumber);
94
+ return {
95
+ upperNumber,
96
+ lowerNumber,
97
+ yaoNumber: actualYaoNumber,
98
+ upperGuaIndex: upperNumber % 8 === 0 ? 8 : upperNumber % 8,
99
+ lowerGuaIndex: lowerNumber % 8 === 0 ? 8 : lowerNumber % 8,
100
+ movingYao: actualYaoNumber % 6 === 0 ? 6 : actualYaoNumber % 6,
101
+ };
102
+ }
103
+ }
104
+ exports.QiguaCalculator = QiguaCalculator;
105
+ //# sourceMappingURL=QiguaCalculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QiguaCalculator.js","sourceRoot":"","sources":["../../../../src/services/meihua/calculators/QiguaCalculator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * 體用計算器
3
+ *
4
+ * 體用判定:
5
+ * - 動爻所在卦為「用」
6
+ * - 另一卦為「體」
7
+ *
8
+ * 五行生剋關係:
9
+ * - 體生用:洩(體氣外洩,不利)
10
+ * - 用生體:生(得助,有利)
11
+ * - 體剋用:耗(耗費精力,小利)
12
+ * - 用剋體:剋(受制,不利)
13
+ * - 體用同:比和(平穩)
14
+ */
15
+ import { WuXing, TiYongAnalysis } from '../types';
16
+ export declare class TiyongCalculator {
17
+ /**
18
+ * 計算體用關係
19
+ *
20
+ * @param upperWuXing 上卦五行
21
+ * @param lowerWuXing 下卦五行
22
+ * @param movingYao 動爻位置(1-6)
23
+ */
24
+ static calculate(upperWuXing: WuXing, lowerWuXing: WuXing, movingYao: number): TiYongAnalysis;
25
+ /**
26
+ * 獲取體用關係
27
+ */
28
+ private static getRelation;
29
+ /**
30
+ * 獲取關係描述
31
+ */
32
+ private static getDescription;
33
+ }
34
+ //# sourceMappingURL=TiyongCalculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TiyongCalculator.d.ts","sourceRoot":"","sources":["../../../../src/services/meihua/calculators/TiyongCalculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,MAAM,EAAkB,cAAc,EAAE,MAAM,UAAU,CAAC;AAoBlE,qBAAa,gBAAgB;IAC3B;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CACd,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,cAAc;IAwBjB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IA4B1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;CAkB9B"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ /**
3
+ * 體用計算器
4
+ *
5
+ * 體用判定:
6
+ * - 動爻所在卦為「用」
7
+ * - 另一卦為「體」
8
+ *
9
+ * 五行生剋關係:
10
+ * - 體生用:洩(體氣外洩,不利)
11
+ * - 用生體:生(得助,有利)
12
+ * - 體剋用:耗(耗費精力,小利)
13
+ * - 用剋體:剋(受制,不利)
14
+ * - 體用同:比和(平穩)
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.TiyongCalculator = void 0;
18
+ /** 五行相生關係(A 生 B) */
19
+ const WUXING_SHENG = {
20
+ '木': '火',
21
+ '火': '土',
22
+ '土': '金',
23
+ '金': '水',
24
+ '水': '木',
25
+ };
26
+ /** 五行相剋關係(A 剋 B) */
27
+ const WUXING_KE = {
28
+ '木': '土',
29
+ '土': '水',
30
+ '水': '火',
31
+ '火': '金',
32
+ '金': '木',
33
+ };
34
+ class TiyongCalculator {
35
+ /**
36
+ * 計算體用關係
37
+ *
38
+ * @param upperWuXing 上卦五行
39
+ * @param lowerWuXing 下卦五行
40
+ * @param movingYao 動爻位置(1-6)
41
+ */
42
+ static calculate(upperWuXing, lowerWuXing, movingYao) {
43
+ // 判定體用:動爻在下卦(1-3)則下卦為用,動爻在上卦(4-6)則上卦為用
44
+ const isMovingInLower = movingYao <= 3;
45
+ const tiGua = isMovingInLower ? 'upper' : 'lower';
46
+ const yongGua = isMovingInLower ? 'lower' : 'upper';
47
+ const tiWuXing = tiGua === 'upper' ? upperWuXing : lowerWuXing;
48
+ const yongWuXing = yongGua === 'upper' ? upperWuXing : lowerWuXing;
49
+ // 計算五行關係
50
+ const relation = this.getRelation(tiWuXing, yongWuXing);
51
+ const description = this.getDescription(tiWuXing, yongWuXing, relation);
52
+ return {
53
+ tiGua,
54
+ yongGua,
55
+ tiWuXing,
56
+ yongWuXing,
57
+ relation,
58
+ description,
59
+ };
60
+ }
61
+ /**
62
+ * 獲取體用關係
63
+ */
64
+ static getRelation(tiWuXing, yongWuXing) {
65
+ if (tiWuXing === yongWuXing) {
66
+ return '比和';
67
+ }
68
+ // 用生體
69
+ if (WUXING_SHENG[yongWuXing] === tiWuXing) {
70
+ return '生';
71
+ }
72
+ // 體生用(洩)
73
+ if (WUXING_SHENG[tiWuXing] === yongWuXing) {
74
+ return '洩';
75
+ }
76
+ // 用剋體
77
+ if (WUXING_KE[yongWuXing] === tiWuXing) {
78
+ return '剋';
79
+ }
80
+ // 體剋用(耗)
81
+ if (WUXING_KE[tiWuXing] === yongWuXing) {
82
+ return '耗';
83
+ }
84
+ return '比和'; // fallback
85
+ }
86
+ /**
87
+ * 獲取關係描述
88
+ */
89
+ static getDescription(tiWuXing, yongWuXing, relation) {
90
+ switch (relation) {
91
+ case '生':
92
+ return `${yongWuXing}生${tiWuXing},用生體,主吉。`;
93
+ case '洩':
94
+ return `${tiWuXing}生${yongWuXing},體生用,主洩耗。`;
95
+ case '剋':
96
+ return `${yongWuXing}剋${tiWuXing},用剋體,主凶。`;
97
+ case '耗':
98
+ return `${tiWuXing}剋${yongWuXing},體剋用,主小吉。`;
99
+ case '比和':
100
+ return `${tiWuXing}與${yongWuXing}比和,主平穩。`;
101
+ }
102
+ }
103
+ }
104
+ exports.TiyongCalculator = TiyongCalculator;
105
+ //# sourceMappingURL=TiyongCalculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TiyongCalculator.js","sourceRoot":"","sources":["../../../../src/services/meihua/calculators/TiyongCalculator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAIH,oBAAoB;AACpB,MAAM,YAAY,GAA2B;IAC3C,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;CACT,CAAC;AAEF,oBAAoB;AACpB,MAAM,SAAS,GAA2B;IACxC,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;CACT,CAAC;AAEF,MAAa,gBAAgB;IAC3B;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CACd,WAAmB,EACnB,WAAmB,EACnB,SAAiB;QAEjB,uCAAuC;QACvC,MAAM,eAAe,GAAG,SAAS,IAAI,CAAC,CAAC;QAEvC,MAAM,KAAK,GAAsB,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QACrE,MAAM,OAAO,GAAsB,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAEvE,MAAM,QAAQ,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;QAC/D,MAAM,UAAU,GAAG,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;QAEnE,SAAS;QACT,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACxD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAExE,OAAO;YACL,KAAK;YACL,OAAO;YACP,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,WAAW;SACZ,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,WAAW,CAAC,QAAgB,EAAE,UAAkB;QAC7D,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM;QACN,IAAI,YAAY,CAAC,UAAU,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1C,OAAO,GAAG,CAAC;QACb,CAAC;QAED,SAAS;QACT,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,UAAU,EAAE,CAAC;YAC1C,OAAO,GAAG,CAAC;QACb,CAAC;QAED,MAAM;QACN,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,QAAQ,EAAE,CAAC;YACvC,OAAO,GAAG,CAAC;QACb,CAAC;QAED,SAAS;QACT,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,UAAU,EAAE,CAAC;YACvC,OAAO,GAAG,CAAC;QACb,CAAC;QAED,OAAO,IAAI,CAAC,CAAC,WAAW;IAC1B,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,cAAc,CAC3B,QAAgB,EAChB,UAAkB,EAClB,QAAwB;QAExB,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,GAAG;gBACN,OAAO,GAAG,UAAU,IAAI,QAAQ,UAAU,CAAC;YAC7C,KAAK,GAAG;gBACN,OAAO,GAAG,QAAQ,IAAI,UAAU,WAAW,CAAC;YAC9C,KAAK,GAAG;gBACN,OAAO,GAAG,UAAU,IAAI,QAAQ,UAAU,CAAC;YAC7C,KAAK,GAAG;gBACN,OAAO,GAAG,QAAQ,IAAI,UAAU,WAAW,CAAC;YAC9C,KAAK,IAAI;gBACP,OAAO,GAAG,QAAQ,IAAI,UAAU,SAAS,CAAC;QAC9C,CAAC;IACH,CAAC;CACF;AAxFD,4CAwFC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * 八卦基礎數據
3
+ *
4
+ * 先天八卦數:乾1 兌2 離3 震4 巽5 坎6 艮7 坤8
5
+ */
6
+ import { BaGuaName, BaGuaInfo } from '../types';
7
+ /** 八卦數據表(按先天數排列,索引 0-7 對應數字 1-8) */
8
+ export declare const BAGUA_DATA: BaGuaInfo[];
9
+ /** 根據先天數獲取八卦(1-8) */
10
+ export declare function getBaGuaByNumber(num: number): BaGuaInfo;
11
+ /** 根據卦名獲取八卦 */
12
+ export declare function getBaGuaByName(name: BaGuaName): BaGuaInfo;
13
+ /** 獲取64卦名稱 */
14
+ export declare function getGua64Name(upper: BaGuaName, lower: BaGuaName): string;
15
+ /** 八卦二進制表示(用於互卦計算) */
16
+ export declare const BAGUA_BINARY: Record<BaGuaName, [boolean, boolean, boolean]>;
17
+ /** 二進制轉八卦 */
18
+ export declare function binaryToBaGua(bits: [boolean, boolean, boolean]): BaGuaName;
19
+ //# sourceMappingURL=bagua.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bagua.d.ts","sourceRoot":"","sources":["../../../../src/services/meihua/data/bagua.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAU,SAAS,EAAE,MAAM,UAAU,CAAC;AAExD,oCAAoC;AACpC,eAAO,MAAM,UAAU,EAAE,SAAS,EASjC,CAAC;AAEF,qBAAqB;AACrB,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAIvD;AAED,eAAe;AACf,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAIzD;AAsBD,cAAc;AACd,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAGvE;AAED,sBAAsB;AACtB,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CASvE,CAAC;AAEF,aAAa;AACb,wBAAgB,aAAa,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,CAO1E"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ /**
3
+ * 八卦基礎數據
4
+ *
5
+ * 先天八卦數:乾1 兌2 離3 震4 巽5 坎6 艮7 坤8
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.BAGUA_BINARY = exports.BAGUA_DATA = void 0;
9
+ exports.getBaGuaByNumber = getBaGuaByNumber;
10
+ exports.getBaGuaByName = getBaGuaByName;
11
+ exports.getGua64Name = getGua64Name;
12
+ exports.binaryToBaGua = binaryToBaGua;
13
+ /** 八卦數據表(按先天數排列,索引 0-7 對應數字 1-8) */
14
+ exports.BAGUA_DATA = [
15
+ { name: '乾', symbol: '☰', wuXing: '金', number: 1 },
16
+ { name: '兌', symbol: '☱', wuXing: '金', number: 2 },
17
+ { name: '離', symbol: '☲', wuXing: '火', number: 3 },
18
+ { name: '震', symbol: '☳', wuXing: '木', number: 4 },
19
+ { name: '巽', symbol: '☴', wuXing: '木', number: 5 },
20
+ { name: '坎', symbol: '☵', wuXing: '水', number: 6 },
21
+ { name: '艮', symbol: '☶', wuXing: '土', number: 7 },
22
+ { name: '坤', symbol: '☷', wuXing: '土', number: 8 },
23
+ ];
24
+ /** 根據先天數獲取八卦(1-8) */
25
+ function getBaGuaByNumber(num) {
26
+ // 餘 0 取 8
27
+ const index = num % 8 === 0 ? 7 : (num % 8) - 1;
28
+ return exports.BAGUA_DATA[index];
29
+ }
30
+ /** 根據卦名獲取八卦 */
31
+ function getBaGuaByName(name) {
32
+ const gua = exports.BAGUA_DATA.find(g => g.name === name);
33
+ if (!gua)
34
+ throw new Error(`未知八卦: ${name}`);
35
+ return gua;
36
+ }
37
+ /** 64卦名稱表(上卦 x 下卦) */
38
+ const GUA64_NAMES = {
39
+ '乾乾': '乾為天', '乾兌': '天澤履', '乾離': '天火同人', '乾震': '天雷無妄',
40
+ '乾巽': '天風姤', '乾坎': '天水訟', '乾艮': '天山遯', '乾坤': '天地否',
41
+ '兌乾': '澤天夬', '兌兌': '兌為澤', '兌離': '澤火革', '兌震': '澤雷隨',
42
+ '兌巽': '澤風大過', '兌坎': '澤水困', '兌艮': '澤山咸', '兌坤': '澤地萃',
43
+ '離乾': '火天大有', '離兌': '火澤睽', '離離': '離為火', '離震': '火雷噬嗑',
44
+ '離巽': '火風鼎', '離坎': '火水未濟', '離艮': '火山旅', '離坤': '火地晉',
45
+ '震乾': '雷天大壯', '震兌': '雷澤歸妹', '震離': '雷火豐', '震震': '震為雷',
46
+ '震巽': '雷風恆', '震坎': '雷水解', '震艮': '雷山小過', '震坤': '雷地豫',
47
+ '巽乾': '風天小畜', '巽兌': '風澤中孚', '巽離': '風火家人', '巽震': '風雷益',
48
+ '巽巽': '巽為風', '巽坎': '風水渙', '巽艮': '風山漸', '巽坤': '風地觀',
49
+ '坎乾': '水天需', '坎兌': '水澤節', '坎離': '水火既濟', '坎震': '水雷屯',
50
+ '坎巽': '水風井', '坎坎': '坎為水', '坎艮': '水山蹇', '坎坤': '水地比',
51
+ '艮乾': '山天大畜', '艮兌': '山澤損', '艮離': '山火賁', '艮震': '山雷頤',
52
+ '艮巽': '山風蠱', '艮坎': '山水蒙', '艮艮': '艮為山', '艮坤': '山地剝',
53
+ '坤乾': '地天泰', '坤兌': '地澤臨', '坤離': '地火明夷', '坤震': '地雷復',
54
+ '坤巽': '地風升', '坤坎': '地水師', '坤艮': '地山謙', '坤坤': '坤為地',
55
+ };
56
+ /** 獲取64卦名稱 */
57
+ function getGua64Name(upper, lower) {
58
+ const key = `${upper}${lower}`;
59
+ return GUA64_NAMES[key] || `${upper}${lower}卦`;
60
+ }
61
+ /** 八卦二進制表示(用於互卦計算) */
62
+ exports.BAGUA_BINARY = {
63
+ '乾': [true, true, true], // 111
64
+ '兌': [false, true, true], // 011
65
+ '離': [true, false, true], // 101
66
+ '震': [false, false, true], // 001
67
+ '巽': [true, true, false], // 110
68
+ '坎': [false, true, false], // 010
69
+ '艮': [true, false, false], // 100
70
+ '坤': [false, false, false], // 000
71
+ };
72
+ /** 二進制轉八卦 */
73
+ function binaryToBaGua(bits) {
74
+ const key = bits.map(b => b ? '1' : '0').join('');
75
+ const map = {
76
+ '111': '乾', '011': '兌', '101': '離', '001': '震',
77
+ '110': '巽', '010': '坎', '100': '艮', '000': '坤',
78
+ };
79
+ return map[key];
80
+ }
81
+ //# sourceMappingURL=bagua.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bagua.js","sourceRoot":"","sources":["../../../../src/services/meihua/data/bagua.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * 梅花易數模組導出
3
+ */
4
+ export * from './types';
5
+ export * from './MeihuaService';
6
+ export * from './calculators/QiguaCalculator';
7
+ export * from './calculators/HuguaCalculator';
8
+ export * from './calculators/BianguaCalculator';
9
+ export * from './calculators/TiyongCalculator';
10
+ export * from './data/bagua';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/meihua/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,cAAc,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ /**
3
+ * 梅花易數模組導出
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ __exportStar(require("./types"), exports);
21
+ __exportStar(require("./MeihuaService"), exports);
22
+ __exportStar(require("./calculators/QiguaCalculator"), exports);
23
+ __exportStar(require("./calculators/HuguaCalculator"), exports);
24
+ __exportStar(require("./calculators/BianguaCalculator"), exports);
25
+ __exportStar(require("./calculators/TiyongCalculator"), exports);
26
+ __exportStar(require("./data/bagua"), exports);
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/meihua/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,kDAAgC;AAChC,gEAA8C;AAC9C,gEAA8C;AAC9C,kEAAgD;AAChD,iEAA+C;AAC/C,+CAA6B"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * 梅花易數類型定義
3
+ */
4
+ /** 八卦名稱 */
5
+ export type BaGuaName = '乾' | '兌' | '離' | '震' | '巽' | '坎' | '艮' | '坤';
6
+ /** 五行 */
7
+ export type WuXing = '金' | '木' | '水' | '火' | '土';
8
+ /** 起卦方式 */
9
+ export type QiGuaMethod = 'time' | 'number';
10
+ /** 梅花易數輸入 */
11
+ export interface MeihuaInput {
12
+ /** 起卦方式 */
13
+ method: QiGuaMethod;
14
+ year?: number;
15
+ month?: number;
16
+ day?: number;
17
+ hour?: number;
18
+ isLunar?: boolean;
19
+ upperNumber?: number;
20
+ lowerNumber?: number;
21
+ yaoNumber?: number;
22
+ }
23
+ /** 八卦信息 */
24
+ export interface BaGuaInfo {
25
+ name: BaGuaName;
26
+ symbol: string;
27
+ wuXing: WuXing;
28
+ number: number;
29
+ }
30
+ /** 卦象信息 */
31
+ export interface GuaXiang {
32
+ name: string;
33
+ upperGua: BaGuaInfo;
34
+ lowerGua: BaGuaInfo;
35
+ }
36
+ /** 體用關係 */
37
+ export type TiYongRelation = '生' | '剋' | '比和' | '洩' | '耗';
38
+ /** 體用分析 */
39
+ export interface TiYongAnalysis {
40
+ tiGua: 'upper' | 'lower';
41
+ yongGua: 'upper' | 'lower';
42
+ tiWuXing: WuXing;
43
+ yongWuXing: WuXing;
44
+ relation: TiYongRelation;
45
+ description: string;
46
+ }
47
+ /** 起卦數據 */
48
+ export interface QiGuaData {
49
+ upperNumber: number;
50
+ lowerNumber: number;
51
+ yaoNumber: number;
52
+ upperGuaIndex: number;
53
+ lowerGuaIndex: number;
54
+ movingYao: number;
55
+ }
56
+ /** 時間起卦詳情 */
57
+ export interface TimeQiGuaDetail {
58
+ lunarYear: number;
59
+ lunarMonth: number;
60
+ lunarDay: number;
61
+ shiChenIndex: number;
62
+ yearZhiIndex: number;
63
+ sumForUpper: number;
64
+ sumForLower: number;
65
+ }
66
+ /** 梅花易數結果 */
67
+ export interface MeihuaResult {
68
+ /** 起卦方式 */
69
+ method: QiGuaMethod;
70
+ /** 起卦數據 */
71
+ qiGuaData: QiGuaData;
72
+ /** 時間起卦詳情(僅 time 模式) */
73
+ timeDetail?: TimeQiGuaDetail;
74
+ /** 時間信息 */
75
+ timeInfo: {
76
+ solarDate: string;
77
+ lunarDate: string;
78
+ yearGanZhi: string;
79
+ };
80
+ /** 本卦 */
81
+ benGua: GuaXiang;
82
+ /** 變卦 */
83
+ bianGua: GuaXiang;
84
+ /** 互卦 */
85
+ huGua: GuaXiang;
86
+ /** 動爻位置(1-6,自下而上) */
87
+ movingYao: number;
88
+ /** 體用分析 */
89
+ tiYong: TiYongAnalysis;
90
+ }
91
+ /** 服務配置 */
92
+ export interface MeihuaServiceConfig {
93
+ debug?: boolean;
94
+ }
95
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/meihua/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * 梅花易數類型定義
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/meihua/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -15,7 +15,6 @@ export interface SubjectData {
15
15
  gender: 'male' | 'female';
16
16
  isLunar?: boolean;
17
17
  longitude?: number;
18
- timezone?: string;
19
18
  birthPlace?: string;
20
19
  relationship?: string;
21
20
  notes?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * 時間歸一化工具
3
+ *
4
+ * 設計原則:
5
+ * 1. 當前階段統一使用北京時間(UTC+8),不對外暴露時區參數
6
+ * 2. 農曆輸入在入口層即轉換為公曆,內部計算統一走公曆
7
+ *
8
+ * TODO: 多時區支持(M4 里程碑)
9
+ * - 新增 timezone 參數
10
+ * - 引入 date-fns-tz 或 @js-temporal/polyfill
11
+ */
12
+ /** 北京時區 IANA 標識(內部使用) */
13
+ export declare const BEIJING_TZ = "Asia/Shanghai";
14
+ export interface BirthDateTimeInput {
15
+ year: number;
16
+ month: number;
17
+ day: number;
18
+ hour: number;
19
+ minute?: number;
20
+ isLunar?: boolean;
21
+ }
22
+ export interface NormalizedBirthDateTime {
23
+ year: number;
24
+ month: number;
25
+ day: number;
26
+ hour: number;
27
+ minute: number;
28
+ /** 標記原始輸入是否為農曆(用於輸出顯示) */
29
+ isLunarInput: boolean;
30
+ }
31
+ /**
32
+ * 歸一化出生日期時間
33
+ *
34
+ * 處理邏輯:
35
+ * 1. 補齊 minute 默認值
36
+ * 2. 如果是農曆輸入,轉換為公曆
37
+ *
38
+ * @example
39
+ * // 公曆輸入
40
+ * normalizeBirthDateTime({ year: 1990, month: 5, day: 15, hour: 10 })
41
+ * // { year: 1990, month: 5, day: 15, hour: 10, minute: 0, isLunarInput: false }
42
+ *
43
+ * // 農曆輸入
44
+ * normalizeBirthDateTime({ year: 1990, month: 4, day: 21, hour: 10, isLunar: true })
45
+ * // { year: 1990, month: 5, day: 15, hour: 10, minute: 0, isLunarInput: true }
46
+ */
47
+ export declare function normalizeBirthDateTime(input: BirthDateTimeInput): NormalizedBirthDateTime;
48
+ //# sourceMappingURL=timeNormalization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeNormalization.d.ts","sourceRoot":"","sources":["../../src/utils/timeNormalization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,yBAAyB;AACzB,eAAO,MAAM,UAAU,kBAAkB,CAAC;AAM1C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,YAAY,EAAE,OAAO,CAAC;CACvB;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,uBAAuB,CA8BzF"}