mingpan 0.1.1

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 (231) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +118 -0
  3. package/dist/core/bazi/BaziCore.d.ts +112 -0
  4. package/dist/core/bazi/BaziCore.d.ts.map +1 -0
  5. package/dist/core/bazi/BaziCore.js +606 -0
  6. package/dist/core/bazi/BaziCore.js.map +1 -0
  7. package/dist/core/bazi/SolarTermCalculator.d.ts +46 -0
  8. package/dist/core/bazi/SolarTermCalculator.d.ts.map +1 -0
  9. package/dist/core/bazi/SolarTermCalculator.js +452 -0
  10. package/dist/core/bazi/SolarTermCalculator.js.map +1 -0
  11. package/dist/core/bazi/TrueSolarTime.d.ts +64 -0
  12. package/dist/core/bazi/TrueSolarTime.d.ts.map +1 -0
  13. package/dist/core/bazi/TrueSolarTime.js +210 -0
  14. package/dist/core/bazi/TrueSolarTime.js.map +1 -0
  15. package/dist/core/bazi/ephemerisData.d.ts +10 -0
  16. package/dist/core/bazi/ephemerisData.d.ts.map +1 -0
  17. package/dist/core/bazi/ephemerisData.js +88 -0
  18. package/dist/core/bazi/ephemerisData.js.map +1 -0
  19. package/dist/core/bazi/index.d.ts +8 -0
  20. package/dist/core/bazi/index.d.ts.map +1 -0
  21. package/dist/core/bazi/index.js +30 -0
  22. package/dist/core/bazi/index.js.map +1 -0
  23. package/dist/core/bazi/types.d.ts +116 -0
  24. package/dist/core/bazi/types.d.ts.map +1 -0
  25. package/dist/core/bazi/types.js +7 -0
  26. package/dist/core/bazi/types.js.map +1 -0
  27. package/dist/core/calendar/SolarTermsCalculator.d.ts +33 -0
  28. package/dist/core/calendar/SolarTermsCalculator.d.ts.map +1 -0
  29. package/dist/core/calendar/SolarTermsCalculator.js +111 -0
  30. package/dist/core/calendar/SolarTermsCalculator.js.map +1 -0
  31. package/dist/core/calendar/astronomicalCalendar.d.ts +74 -0
  32. package/dist/core/calendar/astronomicalCalendar.d.ts.map +1 -0
  33. package/dist/core/calendar/astronomicalCalendar.js +276 -0
  34. package/dist/core/calendar/astronomicalCalendar.js.map +1 -0
  35. package/dist/core/calendar/calendar.d.ts +81 -0
  36. package/dist/core/calendar/calendar.d.ts.map +1 -0
  37. package/dist/core/calendar/calendar.js +223 -0
  38. package/dist/core/calendar/calendar.js.map +1 -0
  39. package/dist/core/calendar/constants.d.ts +151 -0
  40. package/dist/core/calendar/constants.d.ts.map +1 -0
  41. package/dist/core/calendar/constants.js +97 -0
  42. package/dist/core/calendar/constants.js.map +1 -0
  43. package/dist/core/calendar/julian.d.ts +54 -0
  44. package/dist/core/calendar/julian.d.ts.map +1 -0
  45. package/dist/core/calendar/julian.js +142 -0
  46. package/dist/core/calendar/julian.js.map +1 -0
  47. package/dist/core/calendar/lunarCalendar.d.ts +79 -0
  48. package/dist/core/calendar/lunarCalendar.d.ts.map +1 -0
  49. package/dist/core/calendar/lunarCalendar.js +164 -0
  50. package/dist/core/calendar/lunarCalendar.js.map +1 -0
  51. package/dist/core/calendar/solarTerms.d.ts +105 -0
  52. package/dist/core/calendar/solarTerms.d.ts.map +1 -0
  53. package/dist/core/calendar/solarTerms.js +487 -0
  54. package/dist/core/calendar/solarTerms.js.map +1 -0
  55. package/dist/core/constants/bazi.d.ts +138 -0
  56. package/dist/core/constants/bazi.d.ts.map +1 -0
  57. package/dist/core/constants/bazi.js +332 -0
  58. package/dist/core/constants/bazi.js.map +1 -0
  59. package/dist/core/constants/index.d.ts +6 -0
  60. package/dist/core/constants/index.d.ts.map +1 -0
  61. package/dist/core/constants/index.js +37 -0
  62. package/dist/core/constants/index.js.map +1 -0
  63. package/dist/core/constants/positions.d.ts +27 -0
  64. package/dist/core/constants/positions.d.ts.map +1 -0
  65. package/dist/core/constants/positions.js +39 -0
  66. package/dist/core/constants/positions.js.map +1 -0
  67. package/dist/core/ziwei/BrightnessSystem.d.ts +53 -0
  68. package/dist/core/ziwei/BrightnessSystem.d.ts.map +1 -0
  69. package/dist/core/ziwei/BrightnessSystem.js +278 -0
  70. package/dist/core/ziwei/BrightnessSystem.js.map +1 -0
  71. package/dist/core/ziwei/IztroAdapter.d.ts +78 -0
  72. package/dist/core/ziwei/IztroAdapter.d.ts.map +1 -0
  73. package/dist/core/ziwei/IztroAdapter.js +314 -0
  74. package/dist/core/ziwei/IztroAdapter.js.map +1 -0
  75. package/dist/core/ziwei/MutagenCore.d.ts +81 -0
  76. package/dist/core/ziwei/MutagenCore.d.ts.map +1 -0
  77. package/dist/core/ziwei/MutagenCore.js +246 -0
  78. package/dist/core/ziwei/MutagenCore.js.map +1 -0
  79. package/dist/index.d.ts +13 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +1101 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/output/fortuneTextRenderer.d.ts +63 -0
  84. package/dist/output/fortuneTextRenderer.d.ts.map +1 -0
  85. package/dist/output/fortuneTextRenderer.js +384 -0
  86. package/dist/output/fortuneTextRenderer.js.map +1 -0
  87. package/dist/output/listTextRenderer.d.ts +298 -0
  88. package/dist/output/listTextRenderer.d.ts.map +1 -0
  89. package/dist/output/listTextRenderer.js +942 -0
  90. package/dist/output/listTextRenderer.js.map +1 -0
  91. package/dist/services/bazi/BaziService.d.ts +83 -0
  92. package/dist/services/bazi/BaziService.d.ts.map +1 -0
  93. package/dist/services/bazi/BaziService.js +635 -0
  94. package/dist/services/bazi/BaziService.js.map +1 -0
  95. package/dist/services/bazi/analyzers/ClimateAnalyzer.d.ts +31 -0
  96. package/dist/services/bazi/analyzers/ClimateAnalyzer.d.ts.map +1 -0
  97. package/dist/services/bazi/analyzers/ClimateAnalyzer.js +194 -0
  98. package/dist/services/bazi/analyzers/ClimateAnalyzer.js.map +1 -0
  99. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.d.ts +16 -0
  100. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.d.ts.map +1 -0
  101. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.js +60 -0
  102. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.js.map +1 -0
  103. package/dist/services/bazi/analyzers/NaYinAnalyzer.d.ts +33 -0
  104. package/dist/services/bazi/analyzers/NaYinAnalyzer.d.ts.map +1 -0
  105. package/dist/services/bazi/analyzers/NaYinAnalyzer.js +209 -0
  106. package/dist/services/bazi/analyzers/NaYinAnalyzer.js.map +1 -0
  107. package/dist/services/bazi/analyzers/PatternAnalyzer.d.ts +159 -0
  108. package/dist/services/bazi/analyzers/PatternAnalyzer.d.ts.map +1 -0
  109. package/dist/services/bazi/analyzers/PatternAnalyzer.js +1150 -0
  110. package/dist/services/bazi/analyzers/PatternAnalyzer.js.map +1 -0
  111. package/dist/services/bazi/analyzers/RelationsAnalyzer.d.ts +114 -0
  112. package/dist/services/bazi/analyzers/RelationsAnalyzer.d.ts.map +1 -0
  113. package/dist/services/bazi/analyzers/RelationsAnalyzer.js +704 -0
  114. package/dist/services/bazi/analyzers/RelationsAnalyzer.js.map +1 -0
  115. package/dist/services/bazi/analyzers/ShenShaAnalyzer.d.ts +236 -0
  116. package/dist/services/bazi/analyzers/ShenShaAnalyzer.d.ts.map +1 -0
  117. package/dist/services/bazi/analyzers/ShenShaAnalyzer.js +2079 -0
  118. package/dist/services/bazi/analyzers/ShenShaAnalyzer.js.map +1 -0
  119. package/dist/services/bazi/analyzers/StrengthAnalyzer.d.ts +181 -0
  120. package/dist/services/bazi/analyzers/StrengthAnalyzer.d.ts.map +1 -0
  121. package/dist/services/bazi/analyzers/StrengthAnalyzer.js +1119 -0
  122. package/dist/services/bazi/analyzers/StrengthAnalyzer.js.map +1 -0
  123. package/dist/services/bazi/analyzers/TenGodsAnalyzer.d.ts +78 -0
  124. package/dist/services/bazi/analyzers/TenGodsAnalyzer.d.ts.map +1 -0
  125. package/dist/services/bazi/analyzers/TenGodsAnalyzer.js +383 -0
  126. package/dist/services/bazi/analyzers/TenGodsAnalyzer.js.map +1 -0
  127. package/dist/services/bazi/analyzers/TraditionalAnalyzer.d.ts +46 -0
  128. package/dist/services/bazi/analyzers/TraditionalAnalyzer.d.ts.map +1 -0
  129. package/dist/services/bazi/analyzers/TraditionalAnalyzer.js +260 -0
  130. package/dist/services/bazi/analyzers/TraditionalAnalyzer.js.map +1 -0
  131. package/dist/services/bazi/analyzers/YongShenAnalyzer.d.ts +70 -0
  132. package/dist/services/bazi/analyzers/YongShenAnalyzer.d.ts.map +1 -0
  133. package/dist/services/bazi/analyzers/YongShenAnalyzer.js +858 -0
  134. package/dist/services/bazi/analyzers/YongShenAnalyzer.js.map +1 -0
  135. package/dist/services/bazi/calculators/DaYunCalculator.d.ts +71 -0
  136. package/dist/services/bazi/calculators/DaYunCalculator.d.ts.map +1 -0
  137. package/dist/services/bazi/calculators/DaYunCalculator.js +496 -0
  138. package/dist/services/bazi/calculators/DaYunCalculator.js.map +1 -0
  139. package/dist/services/bazi/calculators/LiuNianCalculator.d.ts +88 -0
  140. package/dist/services/bazi/calculators/LiuNianCalculator.d.ts.map +1 -0
  141. package/dist/services/bazi/calculators/LiuNianCalculator.js +546 -0
  142. package/dist/services/bazi/calculators/LiuNianCalculator.js.map +1 -0
  143. package/dist/services/bazi/calculators/LiuRiCalculator.d.ts +66 -0
  144. package/dist/services/bazi/calculators/LiuRiCalculator.d.ts.map +1 -0
  145. package/dist/services/bazi/calculators/LiuRiCalculator.js +497 -0
  146. package/dist/services/bazi/calculators/LiuRiCalculator.js.map +1 -0
  147. package/dist/services/bazi/calculators/LiuYueCalculator.d.ts +50 -0
  148. package/dist/services/bazi/calculators/LiuYueCalculator.d.ts.map +1 -0
  149. package/dist/services/bazi/calculators/LiuYueCalculator.js +338 -0
  150. package/dist/services/bazi/calculators/LiuYueCalculator.js.map +1 -0
  151. package/dist/services/bazi/calculators/LuckCycleCalculator.d.ts +123 -0
  152. package/dist/services/bazi/calculators/LuckCycleCalculator.d.ts.map +1 -0
  153. package/dist/services/bazi/calculators/LuckCycleCalculator.js +414 -0
  154. package/dist/services/bazi/calculators/LuckCycleCalculator.js.map +1 -0
  155. package/dist/services/bazi/index.d.ts +21 -0
  156. package/dist/services/bazi/index.d.ts.map +1 -0
  157. package/dist/services/bazi/index.js +83 -0
  158. package/dist/services/bazi/index.js.map +1 -0
  159. package/dist/services/bazi/types.d.ts +597 -0
  160. package/dist/services/bazi/types.d.ts.map +1 -0
  161. package/dist/services/bazi/types.js +123 -0
  162. package/dist/services/bazi/types.js.map +1 -0
  163. package/dist/services/ziwei/ZiweiService.d.ts +86 -0
  164. package/dist/services/ziwei/ZiweiService.d.ts.map +1 -0
  165. package/dist/services/ziwei/ZiweiService.js +343 -0
  166. package/dist/services/ziwei/ZiweiService.js.map +1 -0
  167. package/dist/services/ziwei/calculators/BrightnessCalculator.d.ts +38 -0
  168. package/dist/services/ziwei/calculators/BrightnessCalculator.d.ts.map +1 -0
  169. package/dist/services/ziwei/calculators/BrightnessCalculator.js +142 -0
  170. package/dist/services/ziwei/calculators/BrightnessCalculator.js.map +1 -0
  171. package/dist/services/ziwei/calculators/DailyCalculator.d.ts +27 -0
  172. package/dist/services/ziwei/calculators/DailyCalculator.d.ts.map +1 -0
  173. package/dist/services/ziwei/calculators/DailyCalculator.js +55 -0
  174. package/dist/services/ziwei/calculators/DailyCalculator.js.map +1 -0
  175. package/dist/services/ziwei/calculators/DecadeCalculator.d.ts +46 -0
  176. package/dist/services/ziwei/calculators/DecadeCalculator.d.ts.map +1 -0
  177. package/dist/services/ziwei/calculators/DecadeCalculator.js +181 -0
  178. package/dist/services/ziwei/calculators/DecadeCalculator.js.map +1 -0
  179. package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.d.ts +28 -0
  180. package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.d.ts.map +1 -0
  181. package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.js +84 -0
  182. package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.js.map +1 -0
  183. package/dist/services/ziwei/calculators/HourlyCalculator.d.ts +41 -0
  184. package/dist/services/ziwei/calculators/HourlyCalculator.d.ts.map +1 -0
  185. package/dist/services/ziwei/calculators/HourlyCalculator.js +139 -0
  186. package/dist/services/ziwei/calculators/HourlyCalculator.js.map +1 -0
  187. package/dist/services/ziwei/calculators/MinorLimitCalculator.d.ts +30 -0
  188. package/dist/services/ziwei/calculators/MinorLimitCalculator.d.ts.map +1 -0
  189. package/dist/services/ziwei/calculators/MinorLimitCalculator.js +90 -0
  190. package/dist/services/ziwei/calculators/MinorLimitCalculator.js.map +1 -0
  191. package/dist/services/ziwei/calculators/MonthlyCalculator.d.ts +39 -0
  192. package/dist/services/ziwei/calculators/MonthlyCalculator.d.ts.map +1 -0
  193. package/dist/services/ziwei/calculators/MonthlyCalculator.js +128 -0
  194. package/dist/services/ziwei/calculators/MonthlyCalculator.js.map +1 -0
  195. package/dist/services/ziwei/calculators/MutagenCalculator.d.ts +20 -0
  196. package/dist/services/ziwei/calculators/MutagenCalculator.d.ts.map +1 -0
  197. package/dist/services/ziwei/calculators/MutagenCalculator.js +121 -0
  198. package/dist/services/ziwei/calculators/MutagenCalculator.js.map +1 -0
  199. package/dist/services/ziwei/calculators/PalaceDynamicCalculator.d.ts +35 -0
  200. package/dist/services/ziwei/calculators/PalaceDynamicCalculator.d.ts.map +1 -0
  201. package/dist/services/ziwei/calculators/PalaceDynamicCalculator.js +55 -0
  202. package/dist/services/ziwei/calculators/PalaceDynamicCalculator.js.map +1 -0
  203. package/dist/services/ziwei/calculators/YearlyCalculator.d.ts +35 -0
  204. package/dist/services/ziwei/calculators/YearlyCalculator.d.ts.map +1 -0
  205. package/dist/services/ziwei/calculators/YearlyCalculator.js +119 -0
  206. package/dist/services/ziwei/calculators/YearlyCalculator.js.map +1 -0
  207. package/dist/services/ziwei/index.d.ts +15 -0
  208. package/dist/services/ziwei/index.d.ts.map +1 -0
  209. package/dist/services/ziwei/index.js +48 -0
  210. package/dist/services/ziwei/index.js.map +1 -0
  211. package/dist/services/ziwei/transformers/PalaceTransformer.d.ts +62 -0
  212. package/dist/services/ziwei/transformers/PalaceTransformer.d.ts.map +1 -0
  213. package/dist/services/ziwei/transformers/PalaceTransformer.js +153 -0
  214. package/dist/services/ziwei/transformers/PalaceTransformer.js.map +1 -0
  215. package/dist/services/ziwei/types.d.ts +185 -0
  216. package/dist/services/ziwei/types.d.ts.map +1 -0
  217. package/dist/services/ziwei/types.js +54 -0
  218. package/dist/services/ziwei/types.js.map +1 -0
  219. package/dist/shared/logger.d.ts +51 -0
  220. package/dist/shared/logger.d.ts.map +1 -0
  221. package/dist/shared/logger.js +136 -0
  222. package/dist/shared/logger.js.map +1 -0
  223. package/dist/shared/types.d.ts +91 -0
  224. package/dist/shared/types.d.ts.map +1 -0
  225. package/dist/shared/types.js +7 -0
  226. package/dist/shared/types.js.map +1 -0
  227. package/dist/utils/ageCalculator.d.ts +30 -0
  228. package/dist/utils/ageCalculator.d.ts.map +1 -0
  229. package/dist/utils/ageCalculator.js +51 -0
  230. package/dist/utils/ageCalculator.js.map +1 -0
  231. package/package.json +54 -0
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Climate Analyzer
3
+ * Analyzes climate conditions (寒暖燥濕) in BaZi chart
4
+ */
5
+ import { BaziChart, ClimateAnalysis } from '../types';
6
+ export declare class ClimateAnalyzer {
7
+ /**
8
+ * Analyze climate conditions of the chart
9
+ */
10
+ static analyze(chart: BaziChart, birthInfo: any): ClimateAnalysis;
11
+ /**
12
+ * Analyze temperature of the chart
13
+ */
14
+ private static analyzeTemperature;
15
+ /**
16
+ * Analyze humidity of the chart
17
+ */
18
+ private static analyzeHumidity;
19
+ /**
20
+ * Get adjustment recommendation
21
+ */
22
+ private static getAdjustment;
23
+ /**
24
+ * Generate specific suggestions
25
+ */
26
+ private static generateSuggestions;
27
+ private static getStemElement;
28
+ private static getBranchElement;
29
+ private static getSeason;
30
+ }
31
+ //# sourceMappingURL=ClimateAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClimateAnalyzer.d.ts","sourceRoot":"","sources":["../../../../src/services/bazi/analyzers/ClimateAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAQtD,qBAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,GAAG,eAAe;IAyBjE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAyCjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAqC9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAQ5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAiClC,OAAO,CAAC,MAAM,CAAC,cAAc;IAK7B,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAK/B,OAAO,CAAC,MAAM,CAAC,SAAS;CAazB"}
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ /**
3
+ * Climate Analyzer
4
+ * Analyzes climate conditions (寒暖燥濕) in BaZi chart
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ClimateAnalyzer = void 0;
8
+ const bazi_1 = require("../../../core/constants/bazi");
9
+ class ClimateAnalyzer {
10
+ /**
11
+ * Analyze climate conditions of the chart
12
+ */
13
+ static analyze(chart, birthInfo) {
14
+ // Analyze temperature
15
+ const temperature = this.analyzeTemperature(chart);
16
+ // Analyze humidity
17
+ const humidity = this.analyzeHumidity(chart);
18
+ // Get season
19
+ const season = this.getSeason(chart.month.branch);
20
+ // Generate adjustment suggestions
21
+ const adjustment = this.getAdjustment(temperature, humidity);
22
+ // Generate specific suggestions
23
+ const suggestions = this.generateSuggestions(temperature, humidity, chart);
24
+ return {
25
+ temperature,
26
+ humidity,
27
+ season,
28
+ adjustment,
29
+ suggestions
30
+ };
31
+ }
32
+ /**
33
+ * Analyze temperature of the chart
34
+ */
35
+ static analyzeTemperature(chart) {
36
+ let score = 0;
37
+ // Check stems
38
+ const stems = [chart.year.stem, chart.month.stem, chart.day.stem, chart.hour.stem];
39
+ stems.forEach(stem => {
40
+ const element = this.getStemElement(stem);
41
+ if (element === bazi_1.FIVE_ELEMENTS_ARRAY[1])
42
+ score += 2; // 火 (fire)
43
+ if (element === bazi_1.FIVE_ELEMENTS_ARRAY[4])
44
+ score -= 2; // 水 (water)
45
+ if (element === bazi_1.FIVE_ELEMENTS_ARRAY[0])
46
+ score += 0.5; // 木 (wood) generates fire
47
+ if (element === bazi_1.FIVE_ELEMENTS_ARRAY[3])
48
+ score -= 0.5; // 金 (metal) is cold
49
+ });
50
+ // Check branches
51
+ const branches = [chart.year.branch, chart.month.branch, chart.day.branch, chart.hour.branch];
52
+ branches.forEach(branch => {
53
+ const element = this.getBranchElement(branch);
54
+ if (element === bazi_1.FIVE_ELEMENTS_ARRAY[1])
55
+ score += 1.5; // 火 (fire)
56
+ if (element === bazi_1.FIVE_ELEMENTS_ARRAY[4])
57
+ score -= 1.5; // 水 (water)
58
+ // Special branches - summer: 巳(5), 午(6), 未(7)
59
+ const summerBranches = [bazi_1.EARTHLY_BRANCHES_ARRAY[5], bazi_1.EARTHLY_BRANCHES_ARRAY[6], bazi_1.EARTHLY_BRANCHES_ARRAY[7]];
60
+ if (summerBranches.includes(branch))
61
+ score += 1;
62
+ // Winter branches - 亥(11), 子(0), 丑(1)
63
+ const winterBranches = [bazi_1.EARTHLY_BRANCHES_ARRAY[11], bazi_1.EARTHLY_BRANCHES_ARRAY[0], bazi_1.EARTHLY_BRANCHES_ARRAY[1]];
64
+ if (winterBranches.includes(branch))
65
+ score -= 1;
66
+ });
67
+ // Check season
68
+ const season = this.getSeason(chart.month.branch);
69
+ if (season === 'summer')
70
+ score += 2;
71
+ if (season === 'winter')
72
+ score -= 2;
73
+ // Categorize
74
+ if (score <= -4)
75
+ return '寒';
76
+ if (score <= -2)
77
+ return '凉';
78
+ if (score <= 2)
79
+ return '中性';
80
+ if (score <= 4)
81
+ return '暖';
82
+ return '热';
83
+ }
84
+ /**
85
+ * Analyze humidity of the chart
86
+ */
87
+ static analyzeHumidity(chart) {
88
+ let score = 0;
89
+ // Check stems
90
+ const stems = [chart.year.stem, chart.month.stem, chart.day.stem, chart.hour.stem];
91
+ stems.forEach(stem => {
92
+ const element = this.getStemElement(stem);
93
+ if (element === bazi_1.FIVE_ELEMENTS_ARRAY[4])
94
+ score += 2; // 水 (water)
95
+ if (element === bazi_1.FIVE_ELEMENTS_ARRAY[1])
96
+ score -= 2; // 火 (fire)
97
+ if (element === bazi_1.FIVE_ELEMENTS_ARRAY[2])
98
+ score -= 0.5; // 土 (earth) absorbs water
99
+ if (element === bazi_1.FIVE_ELEMENTS_ARRAY[3])
100
+ score += 0.5; // 金 (metal) generates water
101
+ });
102
+ // Check branches
103
+ const branches = [chart.year.branch, chart.month.branch, chart.day.branch, chart.hour.branch];
104
+ branches.forEach(branch => {
105
+ const element = this.getBranchElement(branch);
106
+ if (element === bazi_1.FIVE_ELEMENTS_ARRAY[4])
107
+ score += 1.5; // 水 (water)
108
+ if (element === bazi_1.FIVE_ELEMENTS_ARRAY[1])
109
+ score -= 1.5; // 火 (fire)
110
+ if (element === bazi_1.FIVE_ELEMENTS_ARRAY[2])
111
+ score -= 0.5; // 土 (earth)
112
+ // Earth branches are dry: 辰(4), 丑(1), 未(7), 戌(10)
113
+ const earthBranches = [bazi_1.EARTHLY_BRANCHES_ARRAY[4], bazi_1.EARTHLY_BRANCHES_ARRAY[1], bazi_1.EARTHLY_BRANCHES_ARRAY[7], bazi_1.EARTHLY_BRANCHES_ARRAY[10]];
114
+ if (earthBranches.includes(branch))
115
+ score -= 0.5;
116
+ // Water branches: 亥(11), 子(0)
117
+ const waterBranches = [bazi_1.EARTHLY_BRANCHES_ARRAY[11], bazi_1.EARTHLY_BRANCHES_ARRAY[0]];
118
+ if (waterBranches.includes(branch))
119
+ score += 1;
120
+ });
121
+ // Categorize
122
+ if (score <= -3)
123
+ return '燥';
124
+ if (score <= -1)
125
+ return '偏燥';
126
+ if (score <= 1)
127
+ return '平衡';
128
+ if (score <= 3)
129
+ return '偏湿';
130
+ return '湿';
131
+ }
132
+ /**
133
+ * Get adjustment recommendation
134
+ */
135
+ static getAdjustment(temperature, humidity) {
136
+ // Return a translation key that can be processed by ContentTranslator
137
+ return `climate_adjustment:${temperature}:${humidity}`;
138
+ }
139
+ /**
140
+ * Generate specific suggestions
141
+ */
142
+ static generateSuggestions(temperature, humidity, chart) {
143
+ const suggestions = [];
144
+ // Temperature-based suggestions
145
+ if (temperature === 'cold' || temperature === 'cool') {
146
+ suggestions.push('climate_suggestion:temp:cold:living');
147
+ suggestions.push('climate_suggestion:temp:cold:career');
148
+ suggestions.push('climate_suggestion:temp:cold:clothing');
149
+ }
150
+ else if (temperature === 'hot' || temperature === 'warm') {
151
+ suggestions.push('climate_suggestion:temp:hot:living');
152
+ suggestions.push('climate_suggestion:temp:hot:career');
153
+ suggestions.push('climate_suggestion:temp:hot:clothing');
154
+ }
155
+ // Humidity-based suggestions
156
+ if (humidity === 'dry' || humidity === 'slightly-dry') {
157
+ suggestions.push('climate_suggestion:humidity:dry:hydration');
158
+ suggestions.push('climate_suggestion:humidity:dry:environment');
159
+ suggestions.push('climate_suggestion:humidity:dry:diet');
160
+ }
161
+ else if (humidity === 'wet' || humidity === 'slightly-wet') {
162
+ suggestions.push('climate_suggestion:humidity:wet:environment');
163
+ suggestions.push('climate_suggestion:humidity:wet:exercise');
164
+ suggestions.push('climate_suggestion:humidity:wet:diet');
165
+ }
166
+ return suggestions;
167
+ }
168
+ // Helper methods
169
+ static getStemElement(stem) {
170
+ const stemData = bazi_1.HEAVENLY_STEMS.find(s => s.name === stem);
171
+ return stemData?.element || '';
172
+ }
173
+ static getBranchElement(branch) {
174
+ const branchData = bazi_1.EARTHLY_BRANCHES.find(b => b.name === branch);
175
+ return branchData?.element || '';
176
+ }
177
+ static getSeason(monthBranch) {
178
+ // Map branch to season using constants
179
+ const branchIndex = bazi_1.EARTHLY_BRANCHES_ARRAY.indexOf(monthBranch);
180
+ // Spring: 寅(2), 卯(3), 辰(4)
181
+ if (branchIndex >= 2 && branchIndex <= 4)
182
+ return 'spring';
183
+ // Summer: 巳(5), 午(6), 未(7)
184
+ if (branchIndex >= 5 && branchIndex <= 7)
185
+ return 'summer';
186
+ // Autumn: 申(8), 酉(9), 戌(10)
187
+ if (branchIndex >= 8 && branchIndex <= 10)
188
+ return 'autumn';
189
+ // Winter: 亥(11), 子(0), 丑(1)
190
+ return 'winter';
191
+ }
192
+ }
193
+ exports.ClimateAnalyzer = ClimateAnalyzer;
194
+ //# sourceMappingURL=ClimateAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClimateAnalyzer.js","sourceRoot":"","sources":["../../../../src/services/bazi/analyzers/ClimateAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Hidden Stems Analyzer
3
+ * Analyzes hidden stems (藏干) in earthly branches
4
+ */
5
+ import { BaziChart, HiddenStemsAnalysis } from '../types';
6
+ export declare class HiddenStemsAnalyzer {
7
+ /**
8
+ * Analyze hidden stems in the BaZi chart
9
+ */
10
+ static analyze(chart: BaziChart): HiddenStemsAnalysis;
11
+ /**
12
+ * Get element of a stem
13
+ */
14
+ private static getStemElement;
15
+ }
16
+ //# sourceMappingURL=HiddenStemsAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HiddenStemsAnalyzer.d.ts","sourceRoot":"","sources":["../../../../src/services/bazi/analyzers/HiddenStemsAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAG1D,qBAAa,mBAAmB;IAC9B;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,mBAAmB;IA2CrD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;CAI9B"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ /**
3
+ * Hidden Stems Analyzer
4
+ * Analyzes hidden stems (藏干) in earthly branches
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.HiddenStemsAnalyzer = void 0;
8
+ const bazi_1 = require("../../../core/constants/bazi");
9
+ class HiddenStemsAnalyzer {
10
+ /**
11
+ * Analyze hidden stems in the BaZi chart
12
+ */
13
+ static analyze(chart) {
14
+ const byElement = {
15
+ [bazi_1.FIVE_ELEMENTS_ARRAY[0]]: 0, // 木 (wood)
16
+ [bazi_1.FIVE_ELEMENTS_ARRAY[1]]: 0, // 火 (fire)
17
+ [bazi_1.FIVE_ELEMENTS_ARRAY[2]]: 0, // 土 (earth)
18
+ [bazi_1.FIVE_ELEMENTS_ARRAY[3]]: 0, // 金 (metal)
19
+ [bazi_1.FIVE_ELEMENTS_ARRAY[4]]: 0 // 水 (water)
20
+ };
21
+ const mainQi = [];
22
+ const residualQi = [];
23
+ let total = 0;
24
+ // Analyze each pillar
25
+ const pillars = [chart.year, chart.month, chart.day, chart.hour];
26
+ pillars.forEach(pillar => {
27
+ if (pillar.hiddenStems && pillar.hiddenStems.length > 0) {
28
+ pillar.hiddenStems.forEach((hidden, index) => {
29
+ const element = this.getStemElement(hidden.stem);
30
+ if (element) {
31
+ byElement[element] += hidden.power;
32
+ total += hidden.power;
33
+ }
34
+ // First hidden stem is main qi (本氣)
35
+ if (index === 0) {
36
+ mainQi.push(hidden.stem);
37
+ }
38
+ else {
39
+ residualQi.push(hidden.stem);
40
+ }
41
+ });
42
+ }
43
+ });
44
+ return {
45
+ total,
46
+ byElement,
47
+ mainQi,
48
+ residualQi
49
+ };
50
+ }
51
+ /**
52
+ * Get element of a stem
53
+ */
54
+ static getStemElement(stem) {
55
+ const stemData = bazi_1.HEAVENLY_STEMS.find(s => s.name === stem);
56
+ return stemData?.element || '';
57
+ }
58
+ }
59
+ exports.HiddenStemsAnalyzer = HiddenStemsAnalyzer;
60
+ //# sourceMappingURL=HiddenStemsAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HiddenStemsAnalyzer.js","sourceRoot":"","sources":["../../../../src/services/bazi/analyzers/HiddenStemsAnalyzer.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,uDAAmF;AAEnF,MAAa,mBAAmB;IAC9B;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,KAAgB;QAC7B,MAAM,SAAS,GAA2B;YACxC,CAAC,0BAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAG,WAAW;YACzC,CAAC,0BAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAG,WAAW;YACzC,CAAC,0BAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAG,YAAY;YAC1C,CAAC,0BAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAG,YAAY;YAC1C,CAAC,0BAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAG,YAAY;SAC3C,CAAC;QAEF,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,sBAAsB;QACtB,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEjE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACvB,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxD,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACjD,IAAI,OAAO,EAAE,CAAC;wBACZ,SAAS,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC;wBACnC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;oBACxB,CAAC;oBAED,oCAAoC;oBACpC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;wBAChB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC3B,CAAC;yBAAM,CAAC;wBACN,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC/B,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,KAAK;YACL,SAAS;YACT,MAAM;YACN,UAAU;SACX,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,cAAc,CAAC,IAAY;QACxC,MAAM,QAAQ,GAAG,qBAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC3D,OAAO,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC;IACjC,CAAC;CACF;AAtDD,kDAsDC"}
@@ -0,0 +1,33 @@
1
+ import { BaziChart } from '../types';
2
+ export interface NaYinElement {
3
+ name: string;
4
+ element: string;
5
+ quality: string;
6
+ description: string;
7
+ }
8
+ export interface NaYinAnalysis {
9
+ year: NaYinElement;
10
+ month: NaYinElement;
11
+ day: NaYinElement;
12
+ hour: NaYinElement | null;
13
+ summary: {
14
+ dominantElement: string;
15
+ characteristics: string[];
16
+ interactions: string[];
17
+ };
18
+ }
19
+ export declare class NaYinAnalyzer {
20
+ /**
21
+ * Get NaYin element for a stem-branch combination
22
+ */
23
+ private static getNaYin;
24
+ /**
25
+ * Analyze element interactions between NaYin elements
26
+ */
27
+ private static analyzeInteractions;
28
+ /**
29
+ * Analyze NaYin elements for a BaZi chart
30
+ */
31
+ static analyze(chart: BaziChart): NaYinAnalysis;
32
+ }
33
+ //# sourceMappingURL=NaYinAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NaYinAnalyzer.d.ts","sourceRoot":"","sources":["../../../../src/services/bazi/analyzers/NaYinAnalyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AA6GrC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,YAAY,CAAC;IACpB,GAAG,EAAE,YAAY,CAAC;IAClB,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE;QACP,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;CACH;AAED,qBAAa,aAAa;IACxB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ;IAevB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAwDlC;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa;CAqChD"}
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NaYinAnalyzer = void 0;
4
+ /**
5
+ * 六十甲子纳音五行表
6
+ * Each pair of stems and branches has a specific NaYin element
7
+ */
8
+ const NAYIN_MAP = {
9
+ // 甲子乙丑海中金
10
+ '甲子': '海中金', '乙丑': '海中金',
11
+ // 丙寅丁卯炉中火
12
+ '丙寅': '炉中火', '丁卯': '炉中火',
13
+ // 戊辰己巳大林木
14
+ '戊辰': '大林木', '己巳': '大林木',
15
+ // 庚午辛未路旁土
16
+ '庚午': '路旁土', '辛未': '路旁土',
17
+ // 壬申癸酉剑锋金
18
+ '壬申': '剑锋金', '癸酉': '剑锋金',
19
+ // 甲戌乙亥山头火
20
+ '甲戌': '山头火', '乙亥': '山头火',
21
+ // 丙子丁丑涧下水
22
+ '丙子': '涧下水', '丁丑': '涧下水',
23
+ // 戊寅己卯城头土
24
+ '戊寅': '城头土', '己卯': '城头土',
25
+ // 庚辰辛巳白蜡金
26
+ '庚辰': '白蜡金', '辛巳': '白蜡金',
27
+ // 壬午癸未杨柳木
28
+ '壬午': '杨柳木', '癸未': '杨柳木',
29
+ // 甲申乙酉泉中水
30
+ '甲申': '泉中水', '乙酉': '泉中水',
31
+ // 丙戌丁亥屋上土
32
+ '丙戌': '屋上土', '丁亥': '屋上土',
33
+ // 戊子己丑霹雳火
34
+ '戊子': '霹雳火', '己丑': '霹雳火',
35
+ // 庚寅辛卯松柏木
36
+ '庚寅': '松柏木', '辛卯': '松柏木',
37
+ // 壬辰癸巳长流水
38
+ '壬辰': '长流水', '癸巳': '长流水',
39
+ // 甲午乙未沙中金
40
+ '甲午': '沙中金', '乙未': '沙中金',
41
+ // 丙申丁酉山下火
42
+ '丙申': '山下火', '丁酉': '山下火',
43
+ // 戊戌己亥平地木
44
+ '戊戌': '平地木', '己亥': '平地木',
45
+ // 庚子辛丑壁上土
46
+ '庚子': '壁上土', '辛丑': '壁上土',
47
+ // 壬寅癸卯金箔金
48
+ '壬寅': '金箔金', '癸卯': '金箔金',
49
+ // 甲辰乙巳覆灯火
50
+ '甲辰': '覆灯火', '乙巳': '覆灯火',
51
+ // 丙午丁未天河水
52
+ '丙午': '天河水', '丁未': '天河水',
53
+ // 戊申己酉大驿土
54
+ '戊申': '大驿土', '己酉': '大驿土',
55
+ // 庚戌辛亥钗钏金
56
+ '庚戌': '钗钏金', '辛亥': '钗钏金',
57
+ // 壬子癸丑桑柘木
58
+ '壬子': '桑柘木', '癸丑': '桑柘木',
59
+ // 甲寅乙卯大溪水
60
+ '甲寅': '大溪水', '乙卯': '大溪水',
61
+ // 丙辰丁巳沙中土
62
+ '丙辰': '沙中土', '丁巳': '沙中土',
63
+ // 戊午己未天上火
64
+ '戊午': '天上火', '己未': '天上火',
65
+ // 庚申辛酉石榴木
66
+ '庚申': '石榴木', '辛酉': '石榴木',
67
+ // 壬戌癸亥大海水
68
+ '壬戌': '大海水', '癸亥': '大海水'
69
+ };
70
+ /**
71
+ * NaYin element characteristics
72
+ */
73
+ const NAYIN_CHARACTERISTICS = {
74
+ '海中金': { element: '金', quality: '深藏', description: '金在海中,宝藏深藏,需要挖掘' },
75
+ '炉中火': { element: '火', quality: '炼化', description: '炉中之火,可炼金成器' },
76
+ '大林木': { element: '木', quality: '茂盛', description: '大林之木,枝繁叶茂' },
77
+ '路旁土': { element: '土', quality: '承载', description: '路旁之土,承载万物' },
78
+ '剑锋金': { element: '金', quality: '锋利', description: '剑锋之金,锋芒毕露' },
79
+ '山头火': { element: '火', quality: '光明', description: '山头之火,照亮四方' },
80
+ '涧下水': { element: '水', quality: '清澈', description: '涧下之水,清澈见底' },
81
+ '城头土': { element: '土', quality: '坚固', description: '城头之土,固若金汤' },
82
+ '白蜡金': { element: '金', quality: '精纯', description: '白蜡之金,纯净精致' },
83
+ '杨柳木': { element: '木', quality: '柔韧', description: '杨柳之木,柔韧多姿' },
84
+ '泉中水': { element: '水', quality: '涌动', description: '泉中之水,源源不断' },
85
+ '屋上土': { element: '土', quality: '庇护', description: '屋上之土,遮风挡雨' },
86
+ '霹雳火': { element: '火', quality: '迅猛', description: '霹雳之火,雷厉风行' },
87
+ '松柏木': { element: '木', quality: '坚韧', description: '松柏之木,傲雪凌霜' },
88
+ '长流水': { element: '水', quality: '绵延', description: '长流之水,绵延不绝' },
89
+ '沙中金': { element: '金', quality: '散布', description: '沙中之金,需要淘洗' },
90
+ '山下火': { element: '火', quality: '温暖', description: '山下之火,温暖如春' },
91
+ '平地木': { element: '木', quality: '平稳', description: '平地之木,根基稳固' },
92
+ '壁上土': { element: '土', quality: '装饰', description: '壁上之土,美化环境' },
93
+ '金箔金': { element: '金', quality: '华丽', description: '金箔之金,华丽装饰' },
94
+ '覆灯火': { element: '火', quality: '照明', description: '覆灯之火,照亮前程' },
95
+ '天河水': { element: '水', quality: '浩瀚', description: '天河之水,浩瀚无垠' },
96
+ '大驿土': { element: '土', quality: '通达', description: '大驿之土,四通八达' },
97
+ '钗钏金': { element: '金', quality: '精美', description: '钗钏之金,精美饰品' },
98
+ '桑柘木': { element: '木', quality: '实用', description: '桑柘之木,养蚕织布' },
99
+ '大溪水': { element: '水', quality: '汇聚', description: '大溪之水,百川汇聚' },
100
+ '沙中土': { element: '土', quality: '松软', description: '沙中之土,松软易变' },
101
+ '天上火': { element: '火', quality: '崇高', description: '天上之火,高不可攀' },
102
+ '石榴木': { element: '木', quality: '多子', description: '石榴之木,多子多福' },
103
+ '大海水': { element: '水', quality: '包容', description: '大海之水,包容万物' }
104
+ };
105
+ class NaYinAnalyzer {
106
+ /**
107
+ * Get NaYin element for a stem-branch combination
108
+ */
109
+ static getNaYin(stem, branch) {
110
+ const key = stem + branch;
111
+ const nayin = NAYIN_MAP[key];
112
+ if (!nayin)
113
+ return null;
114
+ const characteristics = NAYIN_CHARACTERISTICS[nayin];
115
+ return {
116
+ name: nayin,
117
+ element: characteristics.element,
118
+ quality: characteristics.quality,
119
+ description: characteristics.description
120
+ };
121
+ }
122
+ /**
123
+ * Analyze element interactions between NaYin elements
124
+ */
125
+ static analyzeInteractions(elements) {
126
+ const interactions = [];
127
+ const validElements = elements.filter(e => e !== null);
128
+ // Check for same element reinforcement
129
+ const elementCounts = {};
130
+ validElements.forEach(e => {
131
+ elementCounts[e.element] = (elementCounts[e.element] || 0) + 1;
132
+ });
133
+ Object.entries(elementCounts).forEach(([element, count]) => {
134
+ if (count >= 3) {
135
+ interactions.push(`strong_${element}_convergence`);
136
+ }
137
+ else if (count === 2) {
138
+ interactions.push(`${element}_reinforcement`);
139
+ }
140
+ });
141
+ // Check generation cycles
142
+ const generationMap = {
143
+ '木': '火',
144
+ '火': '土',
145
+ '土': '金',
146
+ '金': '水',
147
+ '水': '木'
148
+ };
149
+ for (let i = 0; i < validElements.length - 1; i++) {
150
+ const current = validElements[i];
151
+ const next = validElements[i + 1];
152
+ if (generationMap[current.element] === next.element) {
153
+ interactions.push(`${current.element}_generates_${next.element}`);
154
+ }
155
+ }
156
+ // Check control cycles
157
+ const controlMap = {
158
+ '木': '土',
159
+ '土': '水',
160
+ '水': '火',
161
+ '火': '金',
162
+ '金': '木'
163
+ };
164
+ for (let i = 0; i < validElements.length; i++) {
165
+ for (let j = i + 1; j < validElements.length; j++) {
166
+ if (controlMap[validElements[i].element] === validElements[j].element) {
167
+ interactions.push(`${validElements[i].element}_controls_${validElements[j].element}`);
168
+ }
169
+ }
170
+ }
171
+ return interactions;
172
+ }
173
+ /**
174
+ * Analyze NaYin elements for a BaZi chart
175
+ */
176
+ static analyze(chart) {
177
+ const yearNaYin = this.getNaYin(chart.year.stem, chart.year.branch);
178
+ const monthNaYin = this.getNaYin(chart.month.stem, chart.month.branch);
179
+ const dayNaYin = this.getNaYin(chart.day.stem, chart.day.branch);
180
+ const hourNaYin = chart.hour ?
181
+ this.getNaYin(chart.hour.stem, chart.hour.branch) : null;
182
+ const allElements = [yearNaYin, monthNaYin, dayNaYin, hourNaYin];
183
+ const validElements = allElements.filter(e => e !== null);
184
+ // Find dominant element
185
+ const elementCounts = {};
186
+ validElements.forEach(e => {
187
+ elementCounts[e.element] = (elementCounts[e.element] || 0) + 1;
188
+ });
189
+ const dominantElement = Object.entries(elementCounts)
190
+ .sort(([, a], [, b]) => b - a)[0][0];
191
+ // Collect unique characteristics
192
+ const characteristics = [...new Set(validElements.map(e => e.quality))];
193
+ // Analyze interactions
194
+ const interactions = this.analyzeInteractions(allElements);
195
+ return {
196
+ year: yearNaYin,
197
+ month: monthNaYin,
198
+ day: dayNaYin,
199
+ hour: hourNaYin,
200
+ summary: {
201
+ dominantElement,
202
+ characteristics,
203
+ interactions
204
+ }
205
+ };
206
+ }
207
+ }
208
+ exports.NaYinAnalyzer = NaYinAnalyzer;
209
+ //# sourceMappingURL=NaYinAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NaYinAnalyzer.js","sourceRoot":"","sources":["../../../../src/services/bazi/analyzers/NaYinAnalyzer.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACH,MAAM,SAAS,GAA2B;IACxC,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IACxB,UAAU;IACV,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,qBAAqB,GAItB;IACH,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,gBAAgB,EAAE;IACrE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE;IACjE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IAChE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IAChE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IAChE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IAChE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IAChE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IAChE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IAChE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IAChE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IAChE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IAChE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IAChE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IAChE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IAChE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IAChE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IAChE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IAChE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IAChE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IAChE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IAChE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IAChE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IAChE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;IAChE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAA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"}