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.
- package/LICENSE +201 -0
- package/README.md +118 -0
- package/dist/core/bazi/BaziCore.d.ts +112 -0
- package/dist/core/bazi/BaziCore.d.ts.map +1 -0
- package/dist/core/bazi/BaziCore.js +606 -0
- package/dist/core/bazi/BaziCore.js.map +1 -0
- package/dist/core/bazi/SolarTermCalculator.d.ts +46 -0
- package/dist/core/bazi/SolarTermCalculator.d.ts.map +1 -0
- package/dist/core/bazi/SolarTermCalculator.js +452 -0
- package/dist/core/bazi/SolarTermCalculator.js.map +1 -0
- package/dist/core/bazi/TrueSolarTime.d.ts +64 -0
- package/dist/core/bazi/TrueSolarTime.d.ts.map +1 -0
- package/dist/core/bazi/TrueSolarTime.js +210 -0
- package/dist/core/bazi/TrueSolarTime.js.map +1 -0
- package/dist/core/bazi/ephemerisData.d.ts +10 -0
- package/dist/core/bazi/ephemerisData.d.ts.map +1 -0
- package/dist/core/bazi/ephemerisData.js +88 -0
- package/dist/core/bazi/ephemerisData.js.map +1 -0
- package/dist/core/bazi/index.d.ts +8 -0
- package/dist/core/bazi/index.d.ts.map +1 -0
- package/dist/core/bazi/index.js +30 -0
- package/dist/core/bazi/index.js.map +1 -0
- package/dist/core/bazi/types.d.ts +116 -0
- package/dist/core/bazi/types.d.ts.map +1 -0
- package/dist/core/bazi/types.js +7 -0
- package/dist/core/bazi/types.js.map +1 -0
- package/dist/core/calendar/SolarTermsCalculator.d.ts +33 -0
- package/dist/core/calendar/SolarTermsCalculator.d.ts.map +1 -0
- package/dist/core/calendar/SolarTermsCalculator.js +111 -0
- package/dist/core/calendar/SolarTermsCalculator.js.map +1 -0
- package/dist/core/calendar/astronomicalCalendar.d.ts +74 -0
- package/dist/core/calendar/astronomicalCalendar.d.ts.map +1 -0
- package/dist/core/calendar/astronomicalCalendar.js +276 -0
- package/dist/core/calendar/astronomicalCalendar.js.map +1 -0
- package/dist/core/calendar/calendar.d.ts +81 -0
- package/dist/core/calendar/calendar.d.ts.map +1 -0
- package/dist/core/calendar/calendar.js +223 -0
- package/dist/core/calendar/calendar.js.map +1 -0
- package/dist/core/calendar/constants.d.ts +151 -0
- package/dist/core/calendar/constants.d.ts.map +1 -0
- package/dist/core/calendar/constants.js +97 -0
- package/dist/core/calendar/constants.js.map +1 -0
- package/dist/core/calendar/julian.d.ts +54 -0
- package/dist/core/calendar/julian.d.ts.map +1 -0
- package/dist/core/calendar/julian.js +142 -0
- package/dist/core/calendar/julian.js.map +1 -0
- package/dist/core/calendar/lunarCalendar.d.ts +79 -0
- package/dist/core/calendar/lunarCalendar.d.ts.map +1 -0
- package/dist/core/calendar/lunarCalendar.js +164 -0
- package/dist/core/calendar/lunarCalendar.js.map +1 -0
- package/dist/core/calendar/solarTerms.d.ts +105 -0
- package/dist/core/calendar/solarTerms.d.ts.map +1 -0
- package/dist/core/calendar/solarTerms.js +487 -0
- package/dist/core/calendar/solarTerms.js.map +1 -0
- package/dist/core/constants/bazi.d.ts +138 -0
- package/dist/core/constants/bazi.d.ts.map +1 -0
- package/dist/core/constants/bazi.js +332 -0
- package/dist/core/constants/bazi.js.map +1 -0
- package/dist/core/constants/index.d.ts +6 -0
- package/dist/core/constants/index.d.ts.map +1 -0
- package/dist/core/constants/index.js +37 -0
- package/dist/core/constants/index.js.map +1 -0
- package/dist/core/constants/positions.d.ts +27 -0
- package/dist/core/constants/positions.d.ts.map +1 -0
- package/dist/core/constants/positions.js +39 -0
- package/dist/core/constants/positions.js.map +1 -0
- package/dist/core/ziwei/BrightnessSystem.d.ts +53 -0
- package/dist/core/ziwei/BrightnessSystem.d.ts.map +1 -0
- package/dist/core/ziwei/BrightnessSystem.js +278 -0
- package/dist/core/ziwei/BrightnessSystem.js.map +1 -0
- package/dist/core/ziwei/IztroAdapter.d.ts +78 -0
- package/dist/core/ziwei/IztroAdapter.d.ts.map +1 -0
- package/dist/core/ziwei/IztroAdapter.js +314 -0
- package/dist/core/ziwei/IztroAdapter.js.map +1 -0
- package/dist/core/ziwei/MutagenCore.d.ts +81 -0
- package/dist/core/ziwei/MutagenCore.d.ts.map +1 -0
- package/dist/core/ziwei/MutagenCore.js +246 -0
- package/dist/core/ziwei/MutagenCore.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1101 -0
- package/dist/index.js.map +1 -0
- package/dist/output/fortuneTextRenderer.d.ts +63 -0
- package/dist/output/fortuneTextRenderer.d.ts.map +1 -0
- package/dist/output/fortuneTextRenderer.js +384 -0
- package/dist/output/fortuneTextRenderer.js.map +1 -0
- package/dist/output/listTextRenderer.d.ts +298 -0
- package/dist/output/listTextRenderer.d.ts.map +1 -0
- package/dist/output/listTextRenderer.js +942 -0
- package/dist/output/listTextRenderer.js.map +1 -0
- package/dist/services/bazi/BaziService.d.ts +83 -0
- package/dist/services/bazi/BaziService.d.ts.map +1 -0
- package/dist/services/bazi/BaziService.js +635 -0
- package/dist/services/bazi/BaziService.js.map +1 -0
- package/dist/services/bazi/analyzers/ClimateAnalyzer.d.ts +31 -0
- package/dist/services/bazi/analyzers/ClimateAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/ClimateAnalyzer.js +194 -0
- package/dist/services/bazi/analyzers/ClimateAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.d.ts +16 -0
- package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.js +60 -0
- package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/NaYinAnalyzer.d.ts +33 -0
- package/dist/services/bazi/analyzers/NaYinAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/NaYinAnalyzer.js +209 -0
- package/dist/services/bazi/analyzers/NaYinAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/PatternAnalyzer.d.ts +159 -0
- package/dist/services/bazi/analyzers/PatternAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/PatternAnalyzer.js +1150 -0
- package/dist/services/bazi/analyzers/PatternAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/RelationsAnalyzer.d.ts +114 -0
- package/dist/services/bazi/analyzers/RelationsAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/RelationsAnalyzer.js +704 -0
- package/dist/services/bazi/analyzers/RelationsAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/ShenShaAnalyzer.d.ts +236 -0
- package/dist/services/bazi/analyzers/ShenShaAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/ShenShaAnalyzer.js +2079 -0
- package/dist/services/bazi/analyzers/ShenShaAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/StrengthAnalyzer.d.ts +181 -0
- package/dist/services/bazi/analyzers/StrengthAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/StrengthAnalyzer.js +1119 -0
- package/dist/services/bazi/analyzers/StrengthAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/TenGodsAnalyzer.d.ts +78 -0
- package/dist/services/bazi/analyzers/TenGodsAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/TenGodsAnalyzer.js +383 -0
- package/dist/services/bazi/analyzers/TenGodsAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/TraditionalAnalyzer.d.ts +46 -0
- package/dist/services/bazi/analyzers/TraditionalAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/TraditionalAnalyzer.js +260 -0
- package/dist/services/bazi/analyzers/TraditionalAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/YongShenAnalyzer.d.ts +70 -0
- package/dist/services/bazi/analyzers/YongShenAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/YongShenAnalyzer.js +858 -0
- package/dist/services/bazi/analyzers/YongShenAnalyzer.js.map +1 -0
- package/dist/services/bazi/calculators/DaYunCalculator.d.ts +71 -0
- package/dist/services/bazi/calculators/DaYunCalculator.d.ts.map +1 -0
- package/dist/services/bazi/calculators/DaYunCalculator.js +496 -0
- package/dist/services/bazi/calculators/DaYunCalculator.js.map +1 -0
- package/dist/services/bazi/calculators/LiuNianCalculator.d.ts +88 -0
- package/dist/services/bazi/calculators/LiuNianCalculator.d.ts.map +1 -0
- package/dist/services/bazi/calculators/LiuNianCalculator.js +546 -0
- package/dist/services/bazi/calculators/LiuNianCalculator.js.map +1 -0
- package/dist/services/bazi/calculators/LiuRiCalculator.d.ts +66 -0
- package/dist/services/bazi/calculators/LiuRiCalculator.d.ts.map +1 -0
- package/dist/services/bazi/calculators/LiuRiCalculator.js +497 -0
- package/dist/services/bazi/calculators/LiuRiCalculator.js.map +1 -0
- package/dist/services/bazi/calculators/LiuYueCalculator.d.ts +50 -0
- package/dist/services/bazi/calculators/LiuYueCalculator.d.ts.map +1 -0
- package/dist/services/bazi/calculators/LiuYueCalculator.js +338 -0
- package/dist/services/bazi/calculators/LiuYueCalculator.js.map +1 -0
- package/dist/services/bazi/calculators/LuckCycleCalculator.d.ts +123 -0
- package/dist/services/bazi/calculators/LuckCycleCalculator.d.ts.map +1 -0
- package/dist/services/bazi/calculators/LuckCycleCalculator.js +414 -0
- package/dist/services/bazi/calculators/LuckCycleCalculator.js.map +1 -0
- package/dist/services/bazi/index.d.ts +21 -0
- package/dist/services/bazi/index.d.ts.map +1 -0
- package/dist/services/bazi/index.js +83 -0
- package/dist/services/bazi/index.js.map +1 -0
- package/dist/services/bazi/types.d.ts +597 -0
- package/dist/services/bazi/types.d.ts.map +1 -0
- package/dist/services/bazi/types.js +123 -0
- package/dist/services/bazi/types.js.map +1 -0
- package/dist/services/ziwei/ZiweiService.d.ts +86 -0
- package/dist/services/ziwei/ZiweiService.d.ts.map +1 -0
- package/dist/services/ziwei/ZiweiService.js +343 -0
- package/dist/services/ziwei/ZiweiService.js.map +1 -0
- package/dist/services/ziwei/calculators/BrightnessCalculator.d.ts +38 -0
- package/dist/services/ziwei/calculators/BrightnessCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/BrightnessCalculator.js +142 -0
- package/dist/services/ziwei/calculators/BrightnessCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/DailyCalculator.d.ts +27 -0
- package/dist/services/ziwei/calculators/DailyCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/DailyCalculator.js +55 -0
- package/dist/services/ziwei/calculators/DailyCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/DecadeCalculator.d.ts +46 -0
- package/dist/services/ziwei/calculators/DecadeCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/DecadeCalculator.js +181 -0
- package/dist/services/ziwei/calculators/DecadeCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.d.ts +28 -0
- package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.js +84 -0
- package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/HourlyCalculator.d.ts +41 -0
- package/dist/services/ziwei/calculators/HourlyCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/HourlyCalculator.js +139 -0
- package/dist/services/ziwei/calculators/HourlyCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/MinorLimitCalculator.d.ts +30 -0
- package/dist/services/ziwei/calculators/MinorLimitCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/MinorLimitCalculator.js +90 -0
- package/dist/services/ziwei/calculators/MinorLimitCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/MonthlyCalculator.d.ts +39 -0
- package/dist/services/ziwei/calculators/MonthlyCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/MonthlyCalculator.js +128 -0
- package/dist/services/ziwei/calculators/MonthlyCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/MutagenCalculator.d.ts +20 -0
- package/dist/services/ziwei/calculators/MutagenCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/MutagenCalculator.js +121 -0
- package/dist/services/ziwei/calculators/MutagenCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/PalaceDynamicCalculator.d.ts +35 -0
- package/dist/services/ziwei/calculators/PalaceDynamicCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/PalaceDynamicCalculator.js +55 -0
- package/dist/services/ziwei/calculators/PalaceDynamicCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/YearlyCalculator.d.ts +35 -0
- package/dist/services/ziwei/calculators/YearlyCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/YearlyCalculator.js +119 -0
- package/dist/services/ziwei/calculators/YearlyCalculator.js.map +1 -0
- package/dist/services/ziwei/index.d.ts +15 -0
- package/dist/services/ziwei/index.d.ts.map +1 -0
- package/dist/services/ziwei/index.js +48 -0
- package/dist/services/ziwei/index.js.map +1 -0
- package/dist/services/ziwei/transformers/PalaceTransformer.d.ts +62 -0
- package/dist/services/ziwei/transformers/PalaceTransformer.d.ts.map +1 -0
- package/dist/services/ziwei/transformers/PalaceTransformer.js +153 -0
- package/dist/services/ziwei/transformers/PalaceTransformer.js.map +1 -0
- package/dist/services/ziwei/types.d.ts +185 -0
- package/dist/services/ziwei/types.d.ts.map +1 -0
- package/dist/services/ziwei/types.js +54 -0
- package/dist/services/ziwei/types.js.map +1 -0
- package/dist/shared/logger.d.ts +51 -0
- package/dist/shared/logger.d.ts.map +1 -0
- package/dist/shared/logger.js +136 -0
- package/dist/shared/logger.js.map +1 -0
- package/dist/shared/types.d.ts +91 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +7 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/utils/ageCalculator.d.ts +30 -0
- package/dist/utils/ageCalculator.d.ts.map +1 -0
- package/dist/utils/ageCalculator.js +51 -0
- package/dist/utils/ageCalculator.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Traditional BaZi Analyzer
|
|
4
|
+
* Analyzes Yong Shen (用神) and Ge Ju (格局)
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.TraditionalAnalyzer = void 0;
|
|
8
|
+
const bazi_1 = require("../../../core/constants/bazi");
|
|
9
|
+
const StrengthAnalyzer_1 = require("./StrengthAnalyzer");
|
|
10
|
+
class TraditionalAnalyzer {
|
|
11
|
+
/**
|
|
12
|
+
* Perform traditional BaZi analysis
|
|
13
|
+
*/
|
|
14
|
+
static analyze(chart, fiveElements, dayMasterElement) {
|
|
15
|
+
// Use StrengthAnalyzer for consistent strength calculation
|
|
16
|
+
const strengthAnalysis = StrengthAnalyzer_1.StrengthAnalyzer.analyzeDayMasterStrength(chart);
|
|
17
|
+
const strength = strengthAnalysis.strength;
|
|
18
|
+
// Analyze Yong Shen based on strength
|
|
19
|
+
const yongShen = this.analyzeYongShen(chart, fiveElements, dayMasterElement, strength);
|
|
20
|
+
// Analyze Ge Ju (pattern)
|
|
21
|
+
const geJu = this.analyzeGeJu(chart, dayMasterElement);
|
|
22
|
+
return {
|
|
23
|
+
yongShen,
|
|
24
|
+
geJu,
|
|
25
|
+
strength
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Analyze day master strength based on five elements distribution
|
|
30
|
+
*/
|
|
31
|
+
static analyzeDayMasterStrength(fiveElements, dayMasterElement) {
|
|
32
|
+
// Create element map using constants
|
|
33
|
+
const elementMap = {
|
|
34
|
+
[bazi_1.FIVE_ELEMENTS_ARRAY[0]]: fiveElements.木, // 木
|
|
35
|
+
[bazi_1.FIVE_ELEMENTS_ARRAY[1]]: fiveElements.火, // 火
|
|
36
|
+
[bazi_1.FIVE_ELEMENTS_ARRAY[2]]: fiveElements.土, // 土
|
|
37
|
+
[bazi_1.FIVE_ELEMENTS_ARRAY[3]]: fiveElements.金, // 金
|
|
38
|
+
[bazi_1.FIVE_ELEMENTS_ARRAY[4]]: fiveElements.水 // 水
|
|
39
|
+
};
|
|
40
|
+
const dayMasterCount = elementMap[dayMasterElement] || 0;
|
|
41
|
+
const total = fiveElements.total;
|
|
42
|
+
const percentage = (dayMasterCount / total) * 100;
|
|
43
|
+
// Consider supporting elements
|
|
44
|
+
const supportingElement = this.getGeneratingElement(dayMasterElement);
|
|
45
|
+
const supportCount = elementMap[supportingElement] || 0;
|
|
46
|
+
const totalSupport = dayMasterCount + supportCount * 0.7;
|
|
47
|
+
const supportPercentage = (totalSupport / total) * 100;
|
|
48
|
+
if (supportPercentage < 15)
|
|
49
|
+
return '衰极';
|
|
50
|
+
if (supportPercentage < 25)
|
|
51
|
+
return '偏弱';
|
|
52
|
+
if (supportPercentage < 35)
|
|
53
|
+
return '中和';
|
|
54
|
+
if (supportPercentage < 45)
|
|
55
|
+
return '身旺';
|
|
56
|
+
return '旺极';
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Analyze Yong Shen (用神)
|
|
60
|
+
*/
|
|
61
|
+
static analyzeYongShen(chart, fiveElements, dayMasterElement, strength) {
|
|
62
|
+
const yongShen = [];
|
|
63
|
+
const xiShen = [];
|
|
64
|
+
const jiShen = [];
|
|
65
|
+
const xianShen = [];
|
|
66
|
+
// Determine Yong Shen based on day master strength
|
|
67
|
+
if (strength === '衰极') {
|
|
68
|
+
// Too weak - use same element and generating element
|
|
69
|
+
yongShen.push(dayMasterElement);
|
|
70
|
+
const generating = this.getGeneratingElement(dayMasterElement);
|
|
71
|
+
yongShen.push(generating);
|
|
72
|
+
xiShen.push(generating);
|
|
73
|
+
// Ji Shen - controlling and draining elements
|
|
74
|
+
jiShen.push(this.getControllingElement(dayMasterElement));
|
|
75
|
+
jiShen.push(this.getDrainingElement(dayMasterElement));
|
|
76
|
+
jiShen.push(this.getControlledElement(dayMasterElement));
|
|
77
|
+
}
|
|
78
|
+
else if (strength === '偏弱' || strength === '身弱') {
|
|
79
|
+
// Weak - primarily use generating element
|
|
80
|
+
const generating = this.getGeneratingElement(dayMasterElement);
|
|
81
|
+
yongShen.push(generating);
|
|
82
|
+
xiShen.push(dayMasterElement);
|
|
83
|
+
// Ji Shen - controlling element
|
|
84
|
+
jiShen.push(this.getControllingElement(dayMasterElement));
|
|
85
|
+
// Xian Shen - neutral elements
|
|
86
|
+
xianShen.push(this.getDrainingElement(dayMasterElement));
|
|
87
|
+
xianShen.push(this.getControlledElement(dayMasterElement));
|
|
88
|
+
}
|
|
89
|
+
else if (strength === '中和') {
|
|
90
|
+
// Normal - need balance based on what's missing
|
|
91
|
+
if (fiveElements.balance.missing.length > 0) {
|
|
92
|
+
yongShen.push(...fiveElements.balance.missing);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
// Use elements that create circulation
|
|
96
|
+
const controlled = this.getControlledElement(dayMasterElement);
|
|
97
|
+
yongShen.push(controlled);
|
|
98
|
+
xiShen.push(this.getDrainingElement(dayMasterElement));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
else if (strength === '偏强' || strength === '身旺') {
|
|
102
|
+
// Strong - use draining and controlled elements
|
|
103
|
+
yongShen.push(this.getDrainingElement(dayMasterElement));
|
|
104
|
+
xiShen.push(this.getControlledElement(dayMasterElement));
|
|
105
|
+
// Ji Shen - same and generating elements
|
|
106
|
+
jiShen.push(dayMasterElement);
|
|
107
|
+
jiShen.push(this.getGeneratingElement(dayMasterElement));
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
// Too strong - follow the strength
|
|
111
|
+
yongShen.push(dayMasterElement);
|
|
112
|
+
xiShen.push(this.getGeneratingElement(dayMasterElement));
|
|
113
|
+
// Ji Shen - controlling element
|
|
114
|
+
jiShen.push(this.getControllingElement(dayMasterElement));
|
|
115
|
+
}
|
|
116
|
+
// Generate explanation
|
|
117
|
+
const explanation = this.generateYongShenExplanation(strength, dayMasterElement, yongShen);
|
|
118
|
+
return {
|
|
119
|
+
yongShen: [...new Set(yongShen)],
|
|
120
|
+
xiShen: [...new Set(xiShen)],
|
|
121
|
+
jiShen: [...new Set(jiShen)],
|
|
122
|
+
xianShen: [...new Set(xianShen)],
|
|
123
|
+
explanation
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Analyze Ge Ju (格局)
|
|
128
|
+
*/
|
|
129
|
+
static analyzeGeJu(chart, dayMasterElement) {
|
|
130
|
+
// Check for special patterns first
|
|
131
|
+
const specialPattern = this.checkSpecialPatterns(chart);
|
|
132
|
+
if (specialPattern) {
|
|
133
|
+
return specialPattern;
|
|
134
|
+
}
|
|
135
|
+
// Check regular patterns based on month branch
|
|
136
|
+
const monthBranch = chart.month.branch;
|
|
137
|
+
const monthElement = this.getBranchElement(monthBranch);
|
|
138
|
+
// Determine pattern based on relationship between day master and month branch
|
|
139
|
+
let pattern = '';
|
|
140
|
+
let type = '';
|
|
141
|
+
let quality = '一般';
|
|
142
|
+
if (monthElement === dayMasterElement) {
|
|
143
|
+
pattern = 'jianlu';
|
|
144
|
+
type = 'strong_body';
|
|
145
|
+
quality = '良好';
|
|
146
|
+
}
|
|
147
|
+
else if (this.isGenerating(monthElement, dayMasterElement)) {
|
|
148
|
+
pattern = 'seal';
|
|
149
|
+
type = 'seal';
|
|
150
|
+
quality = '良好';
|
|
151
|
+
}
|
|
152
|
+
else if (this.isControlling(dayMasterElement, monthElement)) {
|
|
153
|
+
pattern = 'wealth';
|
|
154
|
+
type = 'wealth';
|
|
155
|
+
quality = '良好';
|
|
156
|
+
}
|
|
157
|
+
else if (this.isControlling(monthElement, dayMasterElement)) {
|
|
158
|
+
pattern = 'officer';
|
|
159
|
+
type = 'officer';
|
|
160
|
+
quality = '良好';
|
|
161
|
+
}
|
|
162
|
+
else if (this.isGenerating(dayMasterElement, monthElement)) {
|
|
163
|
+
pattern = 'output';
|
|
164
|
+
type = 'output';
|
|
165
|
+
quality = '一般';
|
|
166
|
+
}
|
|
167
|
+
// Check pattern quality
|
|
168
|
+
if (this.hasGoodCombination(chart)) {
|
|
169
|
+
quality = quality === '良好' ? '优秀' : '良好';
|
|
170
|
+
}
|
|
171
|
+
const description = this.generateGeJuDescription(pattern, type, quality);
|
|
172
|
+
return {
|
|
173
|
+
pattern,
|
|
174
|
+
type,
|
|
175
|
+
quality,
|
|
176
|
+
description
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Check for special patterns
|
|
181
|
+
*/
|
|
182
|
+
static checkSpecialPatterns(chart) {
|
|
183
|
+
// Check for Cong Ge (從格) - following pattern
|
|
184
|
+
const stems = [chart.year.stem, chart.month.stem, chart.day.stem, chart.hour.stem];
|
|
185
|
+
const elements = stems.map(s => this.getStemElement(s));
|
|
186
|
+
const uniqueElements = new Set(elements);
|
|
187
|
+
if (uniqueElements.size === 2) {
|
|
188
|
+
// Possible Cong Ge
|
|
189
|
+
const dayElement = this.getStemElement(chart.day.stem);
|
|
190
|
+
const otherElements = elements.filter(e => e !== dayElement);
|
|
191
|
+
if (otherElements.length >= 3) {
|
|
192
|
+
const dominantElement = otherElements[0];
|
|
193
|
+
if (otherElements.every(e => e === dominantElement)) {
|
|
194
|
+
return {
|
|
195
|
+
pattern: `follow_${dominantElement}`,
|
|
196
|
+
type: '从格',
|
|
197
|
+
quality: '优秀',
|
|
198
|
+
description: `follow_pattern_${dominantElement}`
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
// Check for Zhuan Wang Ge (專旺格)
|
|
204
|
+
if (elements.filter(e => e === elements[2]).length >= 3) {
|
|
205
|
+
return {
|
|
206
|
+
pattern: 'specialized_strong',
|
|
207
|
+
type: 'specialized_strong',
|
|
208
|
+
quality: '优秀',
|
|
209
|
+
description: 'specialized_strong_pattern'
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Check if chart has good combinations
|
|
216
|
+
*/
|
|
217
|
+
static hasGoodCombination(chart) {
|
|
218
|
+
// Simplified check - in reality would check for specific combinations
|
|
219
|
+
const branches = [chart.year.branch, chart.month.branch, chart.day.branch, chart.hour.branch];
|
|
220
|
+
// Check for three harmony
|
|
221
|
+
return bazi_1.BRANCH_RELATIONS.threeHarmony.some((harmony) => harmony.filter(h => branches.includes(h)).length >= 2);
|
|
222
|
+
}
|
|
223
|
+
// Helper methods
|
|
224
|
+
static getStemElement(stem) {
|
|
225
|
+
const stemData = bazi_1.HEAVENLY_STEMS.find(s => s.name === stem);
|
|
226
|
+
return stemData?.element || '';
|
|
227
|
+
}
|
|
228
|
+
static getBranchElement(branch) {
|
|
229
|
+
const branchData = bazi_1.EARTHLY_BRANCHES.find(b => b.name === branch);
|
|
230
|
+
return branchData?.element || '';
|
|
231
|
+
}
|
|
232
|
+
static getGeneratingElement(element) {
|
|
233
|
+
return bazi_1.FIVE_ELEMENTS_RELATIONS.generateBy[element] || '';
|
|
234
|
+
}
|
|
235
|
+
static getControllingElement(element) {
|
|
236
|
+
return bazi_1.FIVE_ELEMENTS_RELATIONS.restrictBy[element] || '';
|
|
237
|
+
}
|
|
238
|
+
static getControlledElement(element) {
|
|
239
|
+
return bazi_1.FIVE_ELEMENTS_RELATIONS.controlling[element] || '';
|
|
240
|
+
}
|
|
241
|
+
static getDrainingElement(element) {
|
|
242
|
+
return bazi_1.FIVE_ELEMENTS_RELATIONS.generating[element] || '';
|
|
243
|
+
}
|
|
244
|
+
static isGenerating(from, to) {
|
|
245
|
+
return this.getGeneratingElement(to) === from;
|
|
246
|
+
}
|
|
247
|
+
static isControlling(from, to) {
|
|
248
|
+
return this.getControlledElement(from) === to;
|
|
249
|
+
}
|
|
250
|
+
static generateYongShenExplanation(strength, dayMasterElement, yongShen) {
|
|
251
|
+
// Return a key that can be translated at the display layer
|
|
252
|
+
return `yongshen_explanation:${strength}:${dayMasterElement}:${yongShen.join(',')}`;
|
|
253
|
+
}
|
|
254
|
+
static generateGeJuDescription(pattern, type, quality) {
|
|
255
|
+
// Return a key that can be translated at the display layer
|
|
256
|
+
return `geju_description:${pattern}:${type}:${quality}`;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
exports.TraditionalAnalyzer = TraditionalAnalyzer;
|
|
260
|
+
//# sourceMappingURL=TraditionalAnalyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TraditionalAnalyzer.js","sourceRoot":"","sources":["../../../../src/services/bazi/analyzers/TraditionalAnalyzer.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AASH,uDAMsC;AACtC,yDAAsD;AAEtD,MAAa,mBAAmB;IAC9B;;OAEG;IACH,MAAM,CAAC,OAAO,CACZ,KAAgB,EAChB,YAAkC,EAClC,gBAAwB;QAMxB,2DAA2D;QAC3D,MAAM,gBAAgB,GAAG,mCAAgB,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC;QAE3C,sCAAsC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAEvF,0BAA0B;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAEvD,OAAO;YACL,QAAQ;YACR,IAAI;YACJ,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,wBAAwB,CACrC,YAAkC,EAClC,gBAAwB;QAExB,qCAAqC;QACrC,MAAM,UAAU,GAA2B;YACzC,CAAC,0BAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAI,IAAI;YAChD,CAAC,0BAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAI,IAAI;YAChD,CAAC,0BAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAG,IAAI;YAC/C,CAAC,0BAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAG,IAAI;YAC/C,CAAC,0BAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAG,IAAI;SAChD,CAAC;QAEF,MAAM,cAAc,GAAG,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QACjC,MAAM,UAAU,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;QAElD,+BAA+B;QAC/B,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;QACtE,MAAM,YAAY,GAAG,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,YAAY,GAAG,cAAc,GAAG,YAAY,GAAG,GAAG,CAAC;QACzD,MAAM,iBAAiB,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;QAEvD,IAAI,iBAAiB,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC;QACxC,IAAI,iBAAiB,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC;QACxC,IAAI,iBAAiB,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC;QACxC,IAAI,iBAAiB,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,eAAe,CAC5B,KAAgB,EAChB,YAAkC,EAClC,gBAAwB,EACxB,QAA2B;QAE3B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,mDAAmD;QACnD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,qDAAqD;YACrD,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAChC,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;YAC/D,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAExB,8CAA8C;YAC9C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC1D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC3D,CAAC;aAAM,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAClD,0CAA0C;YAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;YAC/D,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAE9B,gCAAgC;YAChC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAE1D,+BAA+B;YAC/B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACzD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC7D,CAAC;aAAM,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC7B,gDAAgD;YAChD,IAAI,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,uCAAuC;gBACvC,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;gBAC/D,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;aAAM,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAClD,gDAAgD;YAChD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAEzD,yCAAyC;YACzC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,mCAAmC;YACnC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAEzD,gCAAgC;YAChC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC5D,CAAC;QAED,uBAAuB;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAE3F,OAAO;YACL,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChC,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;YAC5B,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;YAC5B,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChC,WAAW;SACZ,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,WAAW,CAAC,KAAgB,EAAE,gBAAwB;QACnE,mCAAmC;QACnC,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,+CAA+C;QAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QACvC,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAExD,8EAA8E;QAC9E,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,OAAO,GAA8B,IAAI,CAAC;QAE9C,IAAI,YAAY,KAAK,gBAAgB,EAAE,CAAC;YACtC,OAAO,GAAG,QAAQ,CAAC;YACnB,IAAI,GAAG,aAAa,CAAC;YACrB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAE,CAAC;YAC7D,OAAO,GAAG,MAAM,CAAC;YACjB,IAAI,GAAG,MAAM,CAAC;YACd,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,IAAI,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,YAAY,CAAC,EAAE,CAAC;YAC9D,OAAO,GAAG,QAAQ,CAAC;YACnB,IAAI,GAAG,QAAQ,CAAC;YAChB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAE,CAAC;YAC9D,OAAO,GAAG,SAAS,CAAC;YACpB,IAAI,GAAG,SAAS,CAAC;YACjB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,IAAI,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,YAAY,CAAC,EAAE,CAAC;YAC7D,OAAO,GAAG,QAAQ,CAAC;YACnB,IAAI,GAAG,QAAQ,CAAC;YAChB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,wBAAwB;QACxB,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3C,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAEzE,OAAO;YACL,OAAO;YACP,IAAI;YACJ,OAAO;YACP,WAAW;SACZ,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,oBAAoB,CAAC,KAAgB;QAClD,6CAA6C;QAC7C,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnF,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEzC,IAAI,cAAc,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC9B,mBAAmB;YACnB,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC;YAE7D,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAC9B,MAAM,eAAe,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBACzC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,eAAe,CAAC,EAAE,CAAC;oBACpD,OAAO;wBACL,OAAO,EAAE,UAAU,eAAe,EAAE;wBACpC,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,IAAI;wBACb,WAAW,EAAE,kBAAkB,eAAe,EAAE;qBACjD,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACxD,OAAO;gBACL,OAAO,EAAE,oBAAoB;gBAC7B,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,4BAA4B;aAC1C,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,kBAAkB,CAAC,KAAgB;QAChD,sEAAsE;QACtE,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE9F,0BAA0B;QAC1B,OAAO,uBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,OAAiB,EAAE,EAAE,CAC9D,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CACtD,CAAC;IACJ,CAAC;IAED,iBAAiB;IACT,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;IAEO,MAAM,CAAC,gBAAgB,CAAC,MAAc;QAC5C,MAAM,UAAU,GAAG,uBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QACjE,OAAO,UAAU,EAAE,OAAO,IAAI,EAAE,CAAC;IACnC,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,OAAe;QACjD,OAAO,8BAAuB,CAAC,UAAU,CAAC,OAA0D,CAAC,IAAI,EAAE,CAAC;IAC9G,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,OAAe;QAClD,OAAO,8BAAuB,CAAC,UAAU,CAAC,OAA0D,CAAC,IAAI,EAAE,CAAC;IAC9G,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,OAAe;QACjD,OAAO,8BAAuB,CAAC,WAAW,CAAC,OAA2D,CAAC,IAAI,EAAE,CAAC;IAChH,CAAC;IAEO,MAAM,CAAC,kBAAkB,CAAC,OAAe;QAC/C,OAAO,8BAAuB,CAAC,UAAU,CAAC,OAA0D,CAAC,IAAI,EAAE,CAAC;IAC9G,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,IAAY,EAAE,EAAU;QAClD,OAAO,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;IAChD,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,IAAY,EAAE,EAAU;QACnD,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAChD,CAAC;IAEO,MAAM,CAAC,2BAA2B,CACxC,QAA2B,EAC3B,gBAAwB,EACxB,QAAkB;QAElB,2DAA2D;QAC3D,OAAO,wBAAwB,QAAQ,IAAI,gBAAgB,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACtF,CAAC;IAEO,MAAM,CAAC,uBAAuB,CAAC,OAAe,EAAE,IAAY,EAAE,OAAe;QACnF,2DAA2D;QAC3D,OAAO,oBAAoB,OAAO,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;IAC1D,CAAC;CACF;AAzSD,kDAySC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YongShen Analyzer (用神分析器)
|
|
3
|
+
* Implements taro-bazi's comprehensive YongShen (Useful God) analysis system
|
|
4
|
+
* Determines the most beneficial elements based on chart balance and patterns
|
|
5
|
+
* Returns language-agnostic data with translation keys
|
|
6
|
+
*/
|
|
7
|
+
import { BaziChart, YongShenAnalysis, YongShenRecommendations } from '../types';
|
|
8
|
+
export declare class YongShenAnalyzer {
|
|
9
|
+
/**
|
|
10
|
+
* Main analysis method - determines useful and harmful gods
|
|
11
|
+
*/
|
|
12
|
+
static analyze(chart: BaziChart, strengthAnalysis: any, patternAnalysis: any, climateAnalysis: any): YongShenAnalysis;
|
|
13
|
+
/**
|
|
14
|
+
* Analyze normal patterns (正格)
|
|
15
|
+
*/
|
|
16
|
+
private static analyzeNormalPattern;
|
|
17
|
+
/**
|
|
18
|
+
* Analyze based on pattern recommendations from PatternAnalyzer
|
|
19
|
+
*/
|
|
20
|
+
private static analyzeByPatternRecommendations;
|
|
21
|
+
/**
|
|
22
|
+
* Analyze special patterns (從格)
|
|
23
|
+
*/
|
|
24
|
+
private static analyzeSpecialPattern;
|
|
25
|
+
/**
|
|
26
|
+
* Analyze when climate adjustment is urgent
|
|
27
|
+
*/
|
|
28
|
+
private static analyzeClimateFirst;
|
|
29
|
+
/**
|
|
30
|
+
* Generate explanation for the YongShen analysis
|
|
31
|
+
*/
|
|
32
|
+
private static generateExplanation;
|
|
33
|
+
/**
|
|
34
|
+
* Generate comprehensive actionable recommendations based on YongShen analysis
|
|
35
|
+
*/
|
|
36
|
+
static generateRecommendations(analysis: YongShenAnalysis, dayMasterElement: string, strengthAnalysis: any, patternAnalysis: any, climateAnalysis: any): YongShenRecommendations;
|
|
37
|
+
/**
|
|
38
|
+
* Generate career recommendations based on favorable elements
|
|
39
|
+
*/
|
|
40
|
+
private static generateCareerRecommendations;
|
|
41
|
+
/**
|
|
42
|
+
* Generate lifestyle recommendations
|
|
43
|
+
*/
|
|
44
|
+
private static generateLifestyleRecommendations;
|
|
45
|
+
/**
|
|
46
|
+
* Generate relationship recommendations
|
|
47
|
+
*/
|
|
48
|
+
private static generateRelationshipRecommendations;
|
|
49
|
+
/**
|
|
50
|
+
* Generate health recommendations
|
|
51
|
+
*/
|
|
52
|
+
private static generateHealthRecommendations;
|
|
53
|
+
/**
|
|
54
|
+
* Generate luck enhancers
|
|
55
|
+
*/
|
|
56
|
+
private static generateLuckEnhancers;
|
|
57
|
+
/**
|
|
58
|
+
* Generate Feng Shui suggestions
|
|
59
|
+
*/
|
|
60
|
+
private static generateFengShuiSuggestions;
|
|
61
|
+
/**
|
|
62
|
+
* Helper: Get day master element
|
|
63
|
+
*/
|
|
64
|
+
private static getDayMasterElement;
|
|
65
|
+
/**
|
|
66
|
+
* Helper: Count elements in the chart
|
|
67
|
+
*/
|
|
68
|
+
private static count;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=YongShenAnalyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"YongShenAnalyzer.d.ts","sourceRoot":"","sources":["../../../../src/services/bazi/analyzers/YongShenAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,uBAAuB,EAOxB,MAAM,UAAU,CAAC;AAMlB,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,MAAM,CAAC,OAAO,CACZ,KAAK,EAAE,SAAS,EAChB,gBAAgB,EAAE,GAAG,EACrB,eAAe,EAAE,GAAG,EACpB,eAAe,EAAE,GAAG,GACnB,gBAAgB;IA4BnB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAmGnC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,+BAA+B;IAmE9C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IA6HpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAsElC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAiClC;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAC5B,QAAQ,EAAE,gBAAgB,EAC1B,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,GAAG,EACrB,eAAe,EAAE,GAAG,EACpB,eAAe,EAAE,GAAG,GACnB,uBAAuB;IAa1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,6BAA6B;IAkI5C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gCAAgC;IAgJ/C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mCAAmC;IAoHlD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,6BAA6B;IA6I5C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAqEpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,2BAA2B;IA+J1C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAWlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,KAAK;CA2BrB"}
|