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,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Liu Nian Calculator
|
|
3
|
+
* Enhanced with taro-bazi's precise fleeting year calculations
|
|
4
|
+
* Calculates yearly luck (流年)
|
|
5
|
+
*/
|
|
6
|
+
import { BaziChart, LiuNian } from '../types';
|
|
7
|
+
export declare class LiuNianCalculator {
|
|
8
|
+
/**
|
|
9
|
+
* Calculate Liu Nian for a range of years using taro-bazi method
|
|
10
|
+
*/
|
|
11
|
+
static calculate(chart: BaziChart, birthYear: number, startYear: number, endYear: number, birthInfo?: any, gender?: 'male' | 'female'): LiuNian[];
|
|
12
|
+
/**
|
|
13
|
+
* Get zodiac animal
|
|
14
|
+
*/
|
|
15
|
+
private static getZodiac;
|
|
16
|
+
/**
|
|
17
|
+
* Get ten god relationship
|
|
18
|
+
*/
|
|
19
|
+
private static getTenGod;
|
|
20
|
+
/**
|
|
21
|
+
* Enhanced Liu Nian analysis with DaYun interaction
|
|
22
|
+
*/
|
|
23
|
+
private static analyzeLiuNian;
|
|
24
|
+
/**
|
|
25
|
+
* Enhanced overall fortune evaluation
|
|
26
|
+
*/
|
|
27
|
+
private static evaluateOverall;
|
|
28
|
+
/**
|
|
29
|
+
* Analyze Tai Sui relationship
|
|
30
|
+
*/
|
|
31
|
+
private static analyzeTaiSuiRelation;
|
|
32
|
+
/**
|
|
33
|
+
* Check stem combination
|
|
34
|
+
*/
|
|
35
|
+
private static hasStemCombination;
|
|
36
|
+
/**
|
|
37
|
+
* Check stem clash
|
|
38
|
+
*/
|
|
39
|
+
private static hasStemClash;
|
|
40
|
+
/**
|
|
41
|
+
* Evaluate branch relations
|
|
42
|
+
*/
|
|
43
|
+
private static evaluateBranchRelations;
|
|
44
|
+
/**
|
|
45
|
+
* Get all branch relations
|
|
46
|
+
*/
|
|
47
|
+
private static getBranchRelations;
|
|
48
|
+
/**
|
|
49
|
+
* Enhanced event prediction
|
|
50
|
+
*/
|
|
51
|
+
private static predictEvents;
|
|
52
|
+
/**
|
|
53
|
+
* Enhanced warning generation
|
|
54
|
+
*/
|
|
55
|
+
private static generateWarnings;
|
|
56
|
+
/**
|
|
57
|
+
* Enhanced opportunity identification
|
|
58
|
+
*/
|
|
59
|
+
private static identifyOpportunities;
|
|
60
|
+
/**
|
|
61
|
+
* Check for punishment
|
|
62
|
+
*/
|
|
63
|
+
private static hasPunishment;
|
|
64
|
+
/**
|
|
65
|
+
* Check for moving star (驛馬星)
|
|
66
|
+
*/
|
|
67
|
+
private static hasMovingStar;
|
|
68
|
+
/**
|
|
69
|
+
* Check for peach blossom (桃花)
|
|
70
|
+
*/
|
|
71
|
+
private static hasPeachBlossom;
|
|
72
|
+
/**
|
|
73
|
+
* Check for academic star (文昌星)
|
|
74
|
+
*/
|
|
75
|
+
private static hasAcademicStar;
|
|
76
|
+
/**
|
|
77
|
+
* Check for noble person star (天乙貴人)
|
|
78
|
+
*/
|
|
79
|
+
private static hasNoblePersonStar;
|
|
80
|
+
/**
|
|
81
|
+
* Check for wealth star
|
|
82
|
+
*/
|
|
83
|
+
private static hasWealthStar;
|
|
84
|
+
private static getStemElement;
|
|
85
|
+
private static getBranchElement;
|
|
86
|
+
private static isControlling;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=LiuNianCalculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiuNianCalculator.d.ts","sourceRoot":"","sources":["../../../../src/services/bazi/calculators/LiuNianCalculator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAmB,MAAM,UAAU,CAAC;AAK/D,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,MAAM,CAAC,SAAS,CACd,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,GAAG,EACf,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GACzB,OAAO,EAAE;IA0DZ;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAKxB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAIxB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IA2B7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IA8D9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IA6DpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAajC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAY3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAetC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAwBjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAiF5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAuD/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IA2DpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAqC5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAa5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAa9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAc9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAkBjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAS5B,OAAO,CAAC,MAAM,CAAC,cAAc;IAK7B,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAK/B,OAAO,CAAC,MAAM,CAAC,aAAa;CAU7B"}
|
|
@@ -0,0 +1,546 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Liu Nian Calculator
|
|
4
|
+
* Enhanced with taro-bazi's precise fleeting year calculations
|
|
5
|
+
* Calculates yearly luck (流年)
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.LiuNianCalculator = void 0;
|
|
9
|
+
const bazi_1 = require("../../../core/constants/bazi");
|
|
10
|
+
const LuckCycleCalculator_1 = require("./LuckCycleCalculator");
|
|
11
|
+
const DaYunCalculator_1 = require("./DaYunCalculator");
|
|
12
|
+
class LiuNianCalculator {
|
|
13
|
+
/**
|
|
14
|
+
* Calculate Liu Nian for a range of years using taro-bazi method
|
|
15
|
+
*/
|
|
16
|
+
static calculate(chart, birthYear, startYear, endYear, birthInfo, gender) {
|
|
17
|
+
const liuNians = [];
|
|
18
|
+
// Get Liu Nian data from LuckCycleCalculator
|
|
19
|
+
const years = Array.from({ length: endYear - startYear + 1 }, (_, i) => startYear + i);
|
|
20
|
+
const liuNianYears = LuckCycleCalculator_1.LuckCycleCalculator.calFleetingYearList(birthYear, years);
|
|
21
|
+
// Get DaYun periods if birth info and gender provided
|
|
22
|
+
let daYunPeriods = [];
|
|
23
|
+
if (birthInfo && gender) {
|
|
24
|
+
daYunPeriods = DaYunCalculator_1.DaYunCalculator.calculate(chart, birthInfo, gender, { startYear, endYear });
|
|
25
|
+
}
|
|
26
|
+
for (const liuNianYear of liuNianYears) {
|
|
27
|
+
const { year, age, stemBranch, element, yinYang } = liuNianYear;
|
|
28
|
+
// Get zodiac animal
|
|
29
|
+
const zodiac = this.getZodiac(stemBranch.branch);
|
|
30
|
+
// Calculate ten god for this year
|
|
31
|
+
const tenGod = this.getTenGod(chart.day.stem, stemBranch.stem);
|
|
32
|
+
// Find current DaYun
|
|
33
|
+
const currentDaYun = daYunPeriods.find(dy => year >= dy.startYear && year <= dy.endYear);
|
|
34
|
+
// Analyze this Liu Nian with DaYun interaction
|
|
35
|
+
const analysis = this.analyzeLiuNian(stemBranch, chart, tenGod, age, currentDaYun);
|
|
36
|
+
liuNians.push({
|
|
37
|
+
year,
|
|
38
|
+
age,
|
|
39
|
+
stem: stemBranch.stem,
|
|
40
|
+
branch: stemBranch.branch,
|
|
41
|
+
zodiac,
|
|
42
|
+
tenGod,
|
|
43
|
+
analysis
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
return liuNians;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get zodiac animal
|
|
50
|
+
*/
|
|
51
|
+
static getZodiac(branch) {
|
|
52
|
+
const branchData = bazi_1.EARTHLY_BRANCHES.find(b => b.name === branch);
|
|
53
|
+
return branchData?.zodiac || branch;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get ten god relationship
|
|
57
|
+
*/
|
|
58
|
+
static getTenGod(dayMaster, stem) {
|
|
59
|
+
return bazi_1.TEN_GODS[dayMaster]?.[stem] || '';
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Enhanced Liu Nian analysis with DaYun interaction
|
|
63
|
+
*/
|
|
64
|
+
static analyzeLiuNian(liuNian, chart, tenGod, age, currentDaYun) {
|
|
65
|
+
// Evaluate overall fortune with more factors
|
|
66
|
+
const overall = this.evaluateOverall(liuNian, chart, tenGod, currentDaYun);
|
|
67
|
+
// Predict events
|
|
68
|
+
const events = this.predictEvents(liuNian, chart, tenGod, age, currentDaYun);
|
|
69
|
+
// Generate warnings
|
|
70
|
+
const warnings = this.generateWarnings(liuNian, chart, tenGod, currentDaYun);
|
|
71
|
+
// Identify opportunities
|
|
72
|
+
const opportunities = this.identifyOpportunities(liuNian, chart, tenGod, age, currentDaYun);
|
|
73
|
+
return {
|
|
74
|
+
overall,
|
|
75
|
+
events,
|
|
76
|
+
warnings,
|
|
77
|
+
opportunities
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Enhanced overall fortune evaluation
|
|
82
|
+
*/
|
|
83
|
+
static evaluateOverall(liuNian, chart, tenGod, currentDaYun) {
|
|
84
|
+
let score = 50; // Base score
|
|
85
|
+
// Check for Tai Sui (太歲) relationships
|
|
86
|
+
const taiSuiRelation = this.analyzeTaiSuiRelation(liuNian.branch, chart);
|
|
87
|
+
switch (taiSuiRelation) {
|
|
88
|
+
case '冲':
|
|
89
|
+
score -= 20;
|
|
90
|
+
break;
|
|
91
|
+
case '害':
|
|
92
|
+
score -= 15;
|
|
93
|
+
break;
|
|
94
|
+
case '刑':
|
|
95
|
+
score -= 10;
|
|
96
|
+
break;
|
|
97
|
+
case '合':
|
|
98
|
+
score += 15;
|
|
99
|
+
break;
|
|
100
|
+
case '六合':
|
|
101
|
+
score += 20;
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
// Ten god influence
|
|
105
|
+
const tenGodScores = {
|
|
106
|
+
'正官': 10, '正印': 10, '正財': 10, '食神': 8,
|
|
107
|
+
'比肩': 0, '偏印': 0, '偏財': 5,
|
|
108
|
+
'七殺': -8, '傷官': -8, '劫財': -10
|
|
109
|
+
};
|
|
110
|
+
score += tenGodScores[tenGod] || 0;
|
|
111
|
+
// Check stem relationships
|
|
112
|
+
if (this.hasStemCombination(liuNian.stem, chart))
|
|
113
|
+
score += 10;
|
|
114
|
+
if (this.hasStemClash(liuNian.stem, chart))
|
|
115
|
+
score -= 10;
|
|
116
|
+
// Check branch relationships
|
|
117
|
+
const branchScore = this.evaluateBranchRelations(liuNian.branch, chart);
|
|
118
|
+
score += branchScore;
|
|
119
|
+
// DaYun interaction (if provided)
|
|
120
|
+
if (currentDaYun && currentDaYun.stemBranch && currentDaYun.stemBranch.stem && currentDaYun.stemBranch.branch) {
|
|
121
|
+
const interaction = LuckCycleCalculator_1.LuckCycleCalculator.analyzeDaYunLiuNian(currentDaYun, {
|
|
122
|
+
year: 0, // Not used in analysis
|
|
123
|
+
age: 0, // Not used in analysis
|
|
124
|
+
stemBranch: liuNian,
|
|
125
|
+
element: '',
|
|
126
|
+
yinYang: 'yang'
|
|
127
|
+
});
|
|
128
|
+
if (interaction.stemRelation === 'combine')
|
|
129
|
+
score += 8;
|
|
130
|
+
if (interaction.stemRelation === 'clash')
|
|
131
|
+
score -= 8;
|
|
132
|
+
if (interaction.branchRelation === 'harmony')
|
|
133
|
+
score += 10;
|
|
134
|
+
if (interaction.branchRelation === 'clash')
|
|
135
|
+
score -= 10;
|
|
136
|
+
if (interaction.elementalBalance === 'reinforced')
|
|
137
|
+
score += 5;
|
|
138
|
+
if (interaction.elementalBalance === 'controlling')
|
|
139
|
+
score -= 5;
|
|
140
|
+
}
|
|
141
|
+
// Convert score to rating
|
|
142
|
+
if (score >= 75)
|
|
143
|
+
return '优秀';
|
|
144
|
+
if (score >= 60)
|
|
145
|
+
return '良好';
|
|
146
|
+
if (score >= 40)
|
|
147
|
+
return '一般';
|
|
148
|
+
return '挑战';
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Analyze Tai Sui relationship
|
|
152
|
+
*/
|
|
153
|
+
static analyzeTaiSuiRelation(yearBranch, chart) {
|
|
154
|
+
const branches = [chart.year.branch, chart.month.branch, chart.day.branch, chart.hour.branch];
|
|
155
|
+
// Check clashes (沖)
|
|
156
|
+
const clashes = {
|
|
157
|
+
'子': '午', '午': '子',
|
|
158
|
+
'丑': '未', '未': '丑',
|
|
159
|
+
'寅': '申', '申': '寅',
|
|
160
|
+
'卯': '酉', '酉': '卯',
|
|
161
|
+
'辰': '戌', '戌': '辰',
|
|
162
|
+
'巳': '亥', '亥': '巳'
|
|
163
|
+
};
|
|
164
|
+
if (branches.includes(clashes[yearBranch]))
|
|
165
|
+
return '冲';
|
|
166
|
+
// Check harmonies (合)
|
|
167
|
+
const harmonies = {
|
|
168
|
+
'子': '丑', '丑': '子',
|
|
169
|
+
'寅': '亥', '亥': '寅',
|
|
170
|
+
'卯': '戌', '戌': '卯',
|
|
171
|
+
'辰': '酉', '酉': '辰',
|
|
172
|
+
'巳': '申', '申': '巳',
|
|
173
|
+
'午': '未', '未': '午'
|
|
174
|
+
};
|
|
175
|
+
if (branches.includes(harmonies[yearBranch]))
|
|
176
|
+
return '合';
|
|
177
|
+
// Check harms (害)
|
|
178
|
+
const harms = {
|
|
179
|
+
'子': '未', '未': '子',
|
|
180
|
+
'丑': '午', '午': '丑',
|
|
181
|
+
'寅': '巳', '巳': '寅',
|
|
182
|
+
'卯': '辰', '辰': '卯',
|
|
183
|
+
'申': '亥', '亥': '申',
|
|
184
|
+
'酉': '戌', '戌': '酉'
|
|
185
|
+
};
|
|
186
|
+
if (branches.includes(harms[yearBranch]))
|
|
187
|
+
return '害';
|
|
188
|
+
// Check triple combines (三合)
|
|
189
|
+
const tripleCombines = [
|
|
190
|
+
['申', '子', '辰'],
|
|
191
|
+
['亥', '卯', '未'],
|
|
192
|
+
['寅', '午', '戌'],
|
|
193
|
+
['巳', '酉', '丑']
|
|
194
|
+
];
|
|
195
|
+
for (const triple of tripleCombines) {
|
|
196
|
+
if (triple.includes(yearBranch)) {
|
|
197
|
+
const otherTwo = triple.filter(b => b !== yearBranch);
|
|
198
|
+
if (otherTwo.every(b => branches.includes(b))) {
|
|
199
|
+
return '六合';
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
// Check punishments (刑)
|
|
204
|
+
if (this.hasPunishment(yearBranch, chart))
|
|
205
|
+
return '刑';
|
|
206
|
+
return '中性';
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Check stem combination
|
|
210
|
+
*/
|
|
211
|
+
static hasStemCombination(stem, chart) {
|
|
212
|
+
const combinations = {
|
|
213
|
+
'甲': '己', '己': '甲',
|
|
214
|
+
'乙': '庚', '庚': '乙',
|
|
215
|
+
'丙': '辛', '辛': '丙',
|
|
216
|
+
'丁': '壬', '壬': '丁',
|
|
217
|
+
'戊': '癸', '癸': '戊'
|
|
218
|
+
};
|
|
219
|
+
const chartStems = [chart.year.stem, chart.month.stem, chart.day.stem, chart.hour.stem];
|
|
220
|
+
return chartStems.includes(combinations[stem]);
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Check stem clash
|
|
224
|
+
*/
|
|
225
|
+
static hasStemClash(stem, chart) {
|
|
226
|
+
const clashes = {
|
|
227
|
+
'甲': '庚', '庚': '甲',
|
|
228
|
+
'乙': '辛', '辛': '乙',
|
|
229
|
+
'丙': '壬', '壬': '丙',
|
|
230
|
+
'丁': '癸', '癸': '丁'
|
|
231
|
+
};
|
|
232
|
+
const chartStems = [chart.year.stem, chart.month.stem, chart.day.stem, chart.hour.stem];
|
|
233
|
+
return chartStems.includes(clashes[stem]);
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Evaluate branch relations
|
|
237
|
+
*/
|
|
238
|
+
static evaluateBranchRelations(branch, chart) {
|
|
239
|
+
let score = 0;
|
|
240
|
+
const branches = [chart.year.branch, chart.month.branch, chart.day.branch, chart.hour.branch];
|
|
241
|
+
// Count favorable and unfavorable relations
|
|
242
|
+
const relations = this.getBranchRelations(branch, branches);
|
|
243
|
+
score += relations.harmonies * 10;
|
|
244
|
+
score += relations.combines * 15;
|
|
245
|
+
score -= relations.clashes * 15;
|
|
246
|
+
score -= relations.harms * 10;
|
|
247
|
+
score -= relations.punishments * 10;
|
|
248
|
+
return score;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Get all branch relations
|
|
252
|
+
*/
|
|
253
|
+
static getBranchRelations(branch, chartBranches) {
|
|
254
|
+
const relations = {
|
|
255
|
+
harmonies: 0,
|
|
256
|
+
combines: 0,
|
|
257
|
+
clashes: 0,
|
|
258
|
+
harms: 0,
|
|
259
|
+
punishments: 0
|
|
260
|
+
};
|
|
261
|
+
// Implementation would count all relations
|
|
262
|
+
// Simplified for brevity
|
|
263
|
+
return relations;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Enhanced event prediction
|
|
267
|
+
*/
|
|
268
|
+
static predictEvents(liuNian, chart, tenGod, age, currentDaYun) {
|
|
269
|
+
const events = [];
|
|
270
|
+
// Age-based events
|
|
271
|
+
if ((age - 1) % 12 === 0) {
|
|
272
|
+
events.push('本命年,宜穩重行事');
|
|
273
|
+
}
|
|
274
|
+
// Ten god based events
|
|
275
|
+
switch (tenGod) {
|
|
276
|
+
case '正官':
|
|
277
|
+
events.push('工作升遷機會');
|
|
278
|
+
if (age >= 25 && age <= 35) {
|
|
279
|
+
events.push('適合結婚成家');
|
|
280
|
+
}
|
|
281
|
+
break;
|
|
282
|
+
case '七殺':
|
|
283
|
+
events.push('事業變動可能');
|
|
284
|
+
events.push('競爭壓力增大');
|
|
285
|
+
break;
|
|
286
|
+
case '正財':
|
|
287
|
+
events.push('財運提升');
|
|
288
|
+
events.push('投資獲利機會');
|
|
289
|
+
break;
|
|
290
|
+
case '偏財':
|
|
291
|
+
events.push('意外之財可能');
|
|
292
|
+
events.push('適合投資創業');
|
|
293
|
+
break;
|
|
294
|
+
case '正印':
|
|
295
|
+
events.push('學習進修機會');
|
|
296
|
+
events.push('貴人相助');
|
|
297
|
+
break;
|
|
298
|
+
case '偏印':
|
|
299
|
+
events.push('適合學習專業技能');
|
|
300
|
+
events.push('思想轉變');
|
|
301
|
+
break;
|
|
302
|
+
case '食神':
|
|
303
|
+
events.push('創意靈感豐富');
|
|
304
|
+
events.push('人際關係和諧');
|
|
305
|
+
break;
|
|
306
|
+
case '傷官':
|
|
307
|
+
events.push('口舌是非可能');
|
|
308
|
+
events.push('創業想法萌生');
|
|
309
|
+
break;
|
|
310
|
+
case '比肩':
|
|
311
|
+
events.push('朋友相助');
|
|
312
|
+
events.push('合作機會出現');
|
|
313
|
+
break;
|
|
314
|
+
case '劫財':
|
|
315
|
+
events.push('錢財競爭');
|
|
316
|
+
events.push('需防小人');
|
|
317
|
+
break;
|
|
318
|
+
}
|
|
319
|
+
// Special stars
|
|
320
|
+
if (this.hasMovingStar(liuNian.branch, chart)) {
|
|
321
|
+
events.push('有搬遷或出差機會');
|
|
322
|
+
}
|
|
323
|
+
if (this.hasPeachBlossom(liuNian.branch, chart)) {
|
|
324
|
+
events.push('桃花運旺,異性緣佳');
|
|
325
|
+
}
|
|
326
|
+
if (this.hasAcademicStar(liuNian, chart)) {
|
|
327
|
+
events.push('考試運佳,學業順利');
|
|
328
|
+
}
|
|
329
|
+
// DaYun interaction events
|
|
330
|
+
if (currentDaYun && currentDaYun.analysis.fortune === '优秀') {
|
|
331
|
+
events.push('大運流年相輔,機遇難得');
|
|
332
|
+
}
|
|
333
|
+
return events;
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Enhanced warning generation
|
|
337
|
+
*/
|
|
338
|
+
static generateWarnings(liuNian, chart, tenGod, currentDaYun) {
|
|
339
|
+
const warnings = [];
|
|
340
|
+
// Tai Sui warnings
|
|
341
|
+
const taiSuiRelation = this.analyzeTaiSuiRelation(liuNian.branch, chart);
|
|
342
|
+
switch (taiSuiRelation) {
|
|
343
|
+
case '冲':
|
|
344
|
+
warnings.push('沖太歲,諸事需謹慎');
|
|
345
|
+
warnings.push('避免重大決策');
|
|
346
|
+
break;
|
|
347
|
+
case '害':
|
|
348
|
+
warnings.push('害太歲,防小人暗害');
|
|
349
|
+
break;
|
|
350
|
+
case '刑':
|
|
351
|
+
warnings.push('刑太歲,注意法律糾紛');
|
|
352
|
+
break;
|
|
353
|
+
}
|
|
354
|
+
// Ten god based warnings
|
|
355
|
+
switch (tenGod) {
|
|
356
|
+
case '七殺':
|
|
357
|
+
warnings.push('防小人陷害');
|
|
358
|
+
warnings.push('注意身體健康');
|
|
359
|
+
break;
|
|
360
|
+
case '傷官':
|
|
361
|
+
warnings.push('言語需謹慎');
|
|
362
|
+
warnings.push('避免與上司衝突');
|
|
363
|
+
break;
|
|
364
|
+
case '劫財':
|
|
365
|
+
warnings.push('防破財損失');
|
|
366
|
+
warnings.push('不宜合夥投資');
|
|
367
|
+
break;
|
|
368
|
+
}
|
|
369
|
+
// Element clash warnings
|
|
370
|
+
const liuNianElement = this.getBranchElement(liuNian.branch);
|
|
371
|
+
const dayElement = this.getStemElement(chart.day.stem);
|
|
372
|
+
if (this.isControlling(liuNianElement, dayElement)) {
|
|
373
|
+
warnings.push('流年克日主,壓力較大');
|
|
374
|
+
}
|
|
375
|
+
// DaYun conflict warnings
|
|
376
|
+
if (currentDaYun && currentDaYun.analysis.fortune === '困难') {
|
|
377
|
+
warnings.push('大運不利,需格外謹慎');
|
|
378
|
+
}
|
|
379
|
+
return warnings;
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Enhanced opportunity identification
|
|
383
|
+
*/
|
|
384
|
+
static identifyOpportunities(liuNian, chart, tenGod, age, currentDaYun) {
|
|
385
|
+
const opportunities = [];
|
|
386
|
+
// Ten god based opportunities
|
|
387
|
+
switch (tenGod) {
|
|
388
|
+
case '正官':
|
|
389
|
+
opportunities.push('升職加薪良機');
|
|
390
|
+
opportunities.push('考試順利');
|
|
391
|
+
break;
|
|
392
|
+
case '正財':
|
|
393
|
+
opportunities.push('正財收入增加');
|
|
394
|
+
opportunities.push('投資理財獲利');
|
|
395
|
+
break;
|
|
396
|
+
case '正印':
|
|
397
|
+
opportunities.push('學業進修順利');
|
|
398
|
+
opportunities.push('獲得長輩支持');
|
|
399
|
+
break;
|
|
400
|
+
case '食神':
|
|
401
|
+
opportunities.push('才華得以展現');
|
|
402
|
+
opportunities.push('創業時機成熟');
|
|
403
|
+
break;
|
|
404
|
+
}
|
|
405
|
+
// Age-based opportunities
|
|
406
|
+
if (age >= 25 && age <= 35) {
|
|
407
|
+
if (['正官', '正財'].includes(tenGod)) {
|
|
408
|
+
opportunities.push('適合結婚生子');
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
if (age >= 35 && age <= 45) {
|
|
412
|
+
if (['正財', '偏財'].includes(tenGod)) {
|
|
413
|
+
opportunities.push('事業發展黃金期');
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
// Special star opportunities
|
|
417
|
+
if (this.hasNoblePersonStar(liuNian, chart)) {
|
|
418
|
+
opportunities.push('貴人運強,把握機會');
|
|
419
|
+
}
|
|
420
|
+
if (this.hasWealthStar(liuNian, chart)) {
|
|
421
|
+
opportunities.push('財運亨通,適合投資');
|
|
422
|
+
}
|
|
423
|
+
// Favorable DaYun combination
|
|
424
|
+
if (currentDaYun && ['优秀', '良好'].includes(currentDaYun.analysis.fortune)) {
|
|
425
|
+
opportunities.push('運勢配合,事半功倍');
|
|
426
|
+
}
|
|
427
|
+
return opportunities;
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* Check for punishment
|
|
431
|
+
*/
|
|
432
|
+
static hasPunishment(yearBranch, chart) {
|
|
433
|
+
const branches = [chart.year.branch, chart.month.branch, chart.day.branch, chart.hour.branch];
|
|
434
|
+
// Self punishment (自刑)
|
|
435
|
+
const selfPunishments = ['辰', '午', '酉', '亥'];
|
|
436
|
+
if (selfPunishments.includes(yearBranch) && branches.includes(yearBranch)) {
|
|
437
|
+
return true;
|
|
438
|
+
}
|
|
439
|
+
// Ungrateful punishment (無恩之刑)
|
|
440
|
+
const ungratefulPairs = [['子', '卯'], ['卯', '子']];
|
|
441
|
+
// Bullying punishment (恃勢之刑)
|
|
442
|
+
const bullyingTriples = [
|
|
443
|
+
['寅', '巳'], ['巳', '申'], ['申', '寅']
|
|
444
|
+
];
|
|
445
|
+
// Uncivilized punishment (無禮之刑)
|
|
446
|
+
const uncivilizedTriples = [
|
|
447
|
+
['丑', '戌'], ['戌', '未'], ['未', '丑']
|
|
448
|
+
];
|
|
449
|
+
// Check all punishment types
|
|
450
|
+
const allPunishments = [
|
|
451
|
+
...ungratefulPairs,
|
|
452
|
+
...bullyingTriples,
|
|
453
|
+
...uncivilizedTriples
|
|
454
|
+
];
|
|
455
|
+
return allPunishments.some(group => {
|
|
456
|
+
if (group.includes(yearBranch)) {
|
|
457
|
+
return group.some(b => b !== yearBranch && branches.includes(b));
|
|
458
|
+
}
|
|
459
|
+
return false;
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Check for moving star (驛馬星)
|
|
464
|
+
*/
|
|
465
|
+
static hasMovingStar(yearBranch, chart) {
|
|
466
|
+
const movingStars = {
|
|
467
|
+
'申': ['寅'], '子': ['寅'], '辰': ['寅'],
|
|
468
|
+
'巳': ['亥'], '酉': ['亥'], '丑': ['亥'],
|
|
469
|
+
'寅': ['申'], '午': ['申'], '戌': ['申'],
|
|
470
|
+
'亥': ['巳'], '卯': ['巳'], '未': ['巳']
|
|
471
|
+
};
|
|
472
|
+
const dayBranch = chart.day.branch;
|
|
473
|
+
const movingBranches = movingStars[dayBranch] || [];
|
|
474
|
+
return movingBranches.includes(yearBranch);
|
|
475
|
+
}
|
|
476
|
+
/**
|
|
477
|
+
* Check for peach blossom (桃花)
|
|
478
|
+
*/
|
|
479
|
+
static hasPeachBlossom(yearBranch, chart) {
|
|
480
|
+
const peachBlossoms = {
|
|
481
|
+
'申': ['酉'], '子': ['酉'], '辰': ['酉'],
|
|
482
|
+
'巳': ['午'], '酉': ['午'], '丑': ['午'],
|
|
483
|
+
'寅': ['卯'], '午': ['卯'], '戌': ['卯'],
|
|
484
|
+
'亥': ['子'], '卯': ['子'], '未': ['子']
|
|
485
|
+
};
|
|
486
|
+
const dayBranch = chart.day.branch;
|
|
487
|
+
const peachBranches = peachBlossoms[dayBranch] || [];
|
|
488
|
+
return peachBranches.includes(yearBranch);
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Check for academic star (文昌星)
|
|
492
|
+
*/
|
|
493
|
+
static hasAcademicStar(liuNian, chart) {
|
|
494
|
+
const academicMap = {
|
|
495
|
+
'甲': '巳', '乙': '午', '丙': '申', '丁': '酉',
|
|
496
|
+
'戊': '申', '己': '酉', '庚': '亥', '辛': '子',
|
|
497
|
+
'壬': '寅', '癸': '卯'
|
|
498
|
+
};
|
|
499
|
+
const academicBranch = academicMap[chart.day.stem];
|
|
500
|
+
return academicBranch === liuNian.branch;
|
|
501
|
+
}
|
|
502
|
+
/**
|
|
503
|
+
* Check for noble person star (天乙貴人)
|
|
504
|
+
*/
|
|
505
|
+
static hasNoblePersonStar(liuNian, chart) {
|
|
506
|
+
const tianYiMap = {
|
|
507
|
+
'甲': ['丑', '未'], '戊': ['丑', '未'],
|
|
508
|
+
'乙': ['子', '申'], '己': ['子', '申'],
|
|
509
|
+
'丙': ['亥', '酉'], '丁': ['亥', '酉'],
|
|
510
|
+
'庚': ['丑', '未'],
|
|
511
|
+
'辛': ['寅', '午'],
|
|
512
|
+
'壬': ['卯', '巳'],
|
|
513
|
+
'癸': ['卯', '巳']
|
|
514
|
+
};
|
|
515
|
+
const tianYiBranches = tianYiMap[chart.day.stem] || [];
|
|
516
|
+
return tianYiBranches.includes(liuNian.branch);
|
|
517
|
+
}
|
|
518
|
+
/**
|
|
519
|
+
* Check for wealth star
|
|
520
|
+
*/
|
|
521
|
+
static hasWealthStar(liuNian, chart) {
|
|
522
|
+
const tenGod = this.getTenGod(chart.day.stem, liuNian.stem);
|
|
523
|
+
return ['正財', '偏財'].includes(tenGod);
|
|
524
|
+
}
|
|
525
|
+
// Helper methods
|
|
526
|
+
static getStemElement(stem) {
|
|
527
|
+
const stemData = bazi_1.HEAVENLY_STEMS.find(s => s.name === stem);
|
|
528
|
+
return stemData?.element || '';
|
|
529
|
+
}
|
|
530
|
+
static getBranchElement(branch) {
|
|
531
|
+
const branchData = bazi_1.EARTHLY_BRANCHES.find(b => b.name === branch);
|
|
532
|
+
return branchData?.element || '';
|
|
533
|
+
}
|
|
534
|
+
static isControlling(from, to) {
|
|
535
|
+
const controlling = {
|
|
536
|
+
'木': '土',
|
|
537
|
+
'土': '水',
|
|
538
|
+
'水': '火',
|
|
539
|
+
'火': '金',
|
|
540
|
+
'金': '木'
|
|
541
|
+
};
|
|
542
|
+
return controlling[from] === to;
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
exports.LiuNianCalculator = LiuNianCalculator;
|
|
546
|
+
//# sourceMappingURL=LiuNianCalculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiuNianCalculator.js","sourceRoot":"","sources":["../../../../src/services/bazi/calculators/LiuNianCalculator.ts"],"names":[],"mappings":"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"}
|