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,66 @@
|
|
|
1
|
+
import { Stem, Branch, FiveElement, LiuRiInfo } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Calculator for Liu Ri (流日) - Daily Fortune Cycles
|
|
4
|
+
* Provides day-by-day analysis within a Liu Yue month
|
|
5
|
+
*/
|
|
6
|
+
export declare class LiuRiCalculator {
|
|
7
|
+
private luckCalculator;
|
|
8
|
+
constructor();
|
|
9
|
+
/**
|
|
10
|
+
* Calculate all Liu Ri for a specific month (based on solar terms)
|
|
11
|
+
*/
|
|
12
|
+
calculateLiuRi(monthStem: Stem, monthBranch: Branch, yearStem: Stem, yearBranch: Branch, dayMasterElement: FiveElement, yongShen: FiveElement[], year: number, month: number): LiuRiInfo[];
|
|
13
|
+
/**
|
|
14
|
+
* Calculate day stem and branch for a given date
|
|
15
|
+
*/
|
|
16
|
+
private calculateDayStemBranch;
|
|
17
|
+
/**
|
|
18
|
+
* Analyze day fortune
|
|
19
|
+
*/
|
|
20
|
+
private analyzeDay;
|
|
21
|
+
/**
|
|
22
|
+
* Calculate hourly fortunes for a day
|
|
23
|
+
*/
|
|
24
|
+
private calculateHourlyFortunes;
|
|
25
|
+
/**
|
|
26
|
+
* Calculate the stem for the first hour based on day stem
|
|
27
|
+
*/
|
|
28
|
+
private calculateFirstHourStem;
|
|
29
|
+
/**
|
|
30
|
+
* Calculate lucky hours for the day
|
|
31
|
+
*/
|
|
32
|
+
private calculateLuckyHours;
|
|
33
|
+
/**
|
|
34
|
+
* Get activity recommendations based on element and rating
|
|
35
|
+
*/
|
|
36
|
+
private getActivityRecommendations;
|
|
37
|
+
/**
|
|
38
|
+
* Get hour activity recommendation
|
|
39
|
+
*/
|
|
40
|
+
private getHourActivity;
|
|
41
|
+
/**
|
|
42
|
+
* Check if three branches form a harmony
|
|
43
|
+
*/
|
|
44
|
+
private isTripleHarmony;
|
|
45
|
+
/**
|
|
46
|
+
* Check if two branches clash
|
|
47
|
+
*/
|
|
48
|
+
private isClash;
|
|
49
|
+
/**
|
|
50
|
+
* Check if two branches are in harmony
|
|
51
|
+
*/
|
|
52
|
+
private isHarmony;
|
|
53
|
+
/**
|
|
54
|
+
* Get energy level description
|
|
55
|
+
*/
|
|
56
|
+
private getEnergyLevel;
|
|
57
|
+
/**
|
|
58
|
+
* Get mood indicator
|
|
59
|
+
*/
|
|
60
|
+
private getMoodIndicator;
|
|
61
|
+
/**
|
|
62
|
+
* Get fortune description based on rating
|
|
63
|
+
*/
|
|
64
|
+
private getFortuneDescription;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=LiuRiCalculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiuRiCalculator.d.ts","sourceRoot":"","sources":["../../../../src/services/bazi/calculators/LiuRiCalculator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,MAAM,EACN,WAAW,EACX,SAAS,EAEV,MAAM,UAAU,CAAC;AAsBlB;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,cAAc,CAAsB;;IAM5C;;OAEG;IACH,cAAc,CACZ,SAAS,EAAE,IAAI,EACf,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,IAAI,EACd,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,WAAW,EAC7B,QAAQ,EAAE,WAAW,EAAE,EACvB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,SAAS,EAAE;IAsKd;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkB9B;;OAEG;IACH,OAAO,CAAC,UAAU;IA6HlB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAgD/B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAiB9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAc3B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAsClC;;OAEG;IACH,OAAO,CAAC,eAAe;IAuBvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,OAAO,CAAC,OAAO;IAYf;;OAEG;IACH,OAAO,CAAC,SAAS;IAYjB;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgBxB;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAQ9B"}
|
|
@@ -0,0 +1,497 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LiuRiCalculator = void 0;
|
|
4
|
+
const bazi_1 = require("../../../core/constants/bazi");
|
|
5
|
+
const LuckCycleCalculator_1 = require("./LuckCycleCalculator");
|
|
6
|
+
const solarTerms_1 = require("../../../core/calendar/solarTerms");
|
|
7
|
+
const lunar_javascript_1 = require("lunar-javascript");
|
|
8
|
+
// Extract simple arrays for easier usage
|
|
9
|
+
const STEMS = bazi_1.HEAVENLY_STEMS.map(s => s.name);
|
|
10
|
+
const BRANCHES = bazi_1.EARTHLY_BRANCHES.map(b => b.name);
|
|
11
|
+
// Create stem-element mapping
|
|
12
|
+
const STEM_ELEMENTS = bazi_1.HEAVENLY_STEMS.reduce((acc, stem) => {
|
|
13
|
+
acc[stem.name] = stem.element;
|
|
14
|
+
return acc;
|
|
15
|
+
}, {});
|
|
16
|
+
// Create branch-element mapping
|
|
17
|
+
const BRANCH_ELEMENTS = bazi_1.EARTHLY_BRANCHES.reduce((acc, branch) => {
|
|
18
|
+
acc[branch.name] = branch.element;
|
|
19
|
+
return acc;
|
|
20
|
+
}, {});
|
|
21
|
+
/**
|
|
22
|
+
* Calculator for Liu Ri (流日) - Daily Fortune Cycles
|
|
23
|
+
* Provides day-by-day analysis within a Liu Yue month
|
|
24
|
+
*/
|
|
25
|
+
class LiuRiCalculator {
|
|
26
|
+
luckCalculator;
|
|
27
|
+
constructor() {
|
|
28
|
+
this.luckCalculator = new LuckCycleCalculator_1.LuckCycleCalculator();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Calculate all Liu Ri for a specific month (based on solar terms)
|
|
32
|
+
*/
|
|
33
|
+
calculateLiuRi(monthStem, monthBranch, yearStem, yearBranch, dayMasterElement, yongShen, year, month // This is the Gregorian month (1-12)
|
|
34
|
+
) {
|
|
35
|
+
const days = [];
|
|
36
|
+
// Map of month branches to solar term names
|
|
37
|
+
const BRANCH_TO_SOLAR_TERM = {
|
|
38
|
+
'寅': '立春',
|
|
39
|
+
'卯': '惊蛰',
|
|
40
|
+
'辰': '清明',
|
|
41
|
+
'巳': '立夏',
|
|
42
|
+
'午': '芒种',
|
|
43
|
+
'未': '小暑',
|
|
44
|
+
'申': '立秋',
|
|
45
|
+
'酉': '白露',
|
|
46
|
+
'戌': '寒露',
|
|
47
|
+
'亥': '立冬',
|
|
48
|
+
'子': '大雪',
|
|
49
|
+
'丑': '小寒'
|
|
50
|
+
};
|
|
51
|
+
// Map of branches to next solar term
|
|
52
|
+
const BRANCH_TO_NEXT_TERM = {
|
|
53
|
+
'寅': '惊蛰',
|
|
54
|
+
'卯': '清明',
|
|
55
|
+
'辰': '立夏',
|
|
56
|
+
'巳': '芒种',
|
|
57
|
+
'午': '小暑',
|
|
58
|
+
'未': '立秋',
|
|
59
|
+
'申': '白露',
|
|
60
|
+
'酉': '寒露',
|
|
61
|
+
'戌': '立冬',
|
|
62
|
+
'亥': '大雪',
|
|
63
|
+
'子': '小寒',
|
|
64
|
+
'丑': '立春'
|
|
65
|
+
};
|
|
66
|
+
// Get the solar term boundaries based on the month branch
|
|
67
|
+
const startSolarTerm = BRANCH_TO_SOLAR_TERM[monthBranch];
|
|
68
|
+
const nextSolarTerm = BRANCH_TO_NEXT_TERM[monthBranch];
|
|
69
|
+
// Calculate solar terms for this year and next year
|
|
70
|
+
const yearSolarTerms = solarTerms_1.PreciseSolarTermCalculator.calculateYearSolarTerms(year);
|
|
71
|
+
const nextYearSolarTerms = solarTerms_1.PreciseSolarTermCalculator.calculateYearSolarTerms(year + 1);
|
|
72
|
+
// Find the start date of this month
|
|
73
|
+
// 注意:八字年从立春开始到次年立春前结束
|
|
74
|
+
// 子月(大雪)在公历12月,仍属于当年
|
|
75
|
+
// 丑月(小寒)在公历1月5日左右,属于公历下一年,需要从下一年节气表查找
|
|
76
|
+
let startDate = null;
|
|
77
|
+
// 丑月(monthBranch === '丑')的开始节气"小寒"在公历次年1月初
|
|
78
|
+
// 需要从下一年节气表查找
|
|
79
|
+
if (monthBranch === '丑') {
|
|
80
|
+
for (const term of nextYearSolarTerms) {
|
|
81
|
+
if (term.name === startSolarTerm) {
|
|
82
|
+
startDate = term.date;
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
// 其他月份先从当年查找
|
|
89
|
+
for (const term of yearSolarTerms) {
|
|
90
|
+
if (term.name === startSolarTerm) {
|
|
91
|
+
startDate = term.date;
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// 如果是寅月(立春),可能在前一年
|
|
96
|
+
if (!startDate && monthBranch === '寅') {
|
|
97
|
+
const prevYearTerms = solarTerms_1.PreciseSolarTermCalculator.calculateYearSolarTerms(year - 1);
|
|
98
|
+
for (const term of prevYearTerms) {
|
|
99
|
+
if (term.name === startSolarTerm) {
|
|
100
|
+
startDate = term.date;
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Find the end date of this month
|
|
107
|
+
let endDate = null;
|
|
108
|
+
// First check current year
|
|
109
|
+
for (const term of yearSolarTerms) {
|
|
110
|
+
if (term.name === nextSolarTerm) {
|
|
111
|
+
endDate = term.date;
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// If end date is before start date (cross-year case like 子月 or 丑月),
|
|
116
|
+
// or if not found, check next year
|
|
117
|
+
// 例如:子月从大雪(12/7)到小寒(次年1/5),当年1月的小寒比大雪早,需要用次年的小寒
|
|
118
|
+
if (!endDate || (startDate && endDate.getTime() <= startDate.getTime())) {
|
|
119
|
+
for (const term of nextYearSolarTerms) {
|
|
120
|
+
if (term.name === nextSolarTerm) {
|
|
121
|
+
endDate = term.date;
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Fallback if solar terms not found
|
|
127
|
+
if (!startDate || !endDate) {
|
|
128
|
+
console.warn('Solar term boundaries not found, falling back to gregorian month');
|
|
129
|
+
startDate = new Date(year, month - 1, 1);
|
|
130
|
+
endDate = new Date(year, month, 0);
|
|
131
|
+
}
|
|
132
|
+
// Calculate all days within this solar term month
|
|
133
|
+
const currentDate = new Date(startDate);
|
|
134
|
+
// Normalize end date to start of day to ensure we don't include the day the next solar term starts
|
|
135
|
+
const endDateStartOfDay = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate());
|
|
136
|
+
while (currentDate.getTime() < endDateStartOfDay.getTime()) {
|
|
137
|
+
const iterDate = new Date(currentDate);
|
|
138
|
+
// Calculate day stem and branch for each day individually
|
|
139
|
+
const { dayStem: currentDayStem, dayBranch: currentDayBranch } = this.calculateDayStemBranch(currentDate);
|
|
140
|
+
// Analyze day fortune
|
|
141
|
+
const analysis = this.analyzeDay(currentDayStem, currentDayBranch, monthStem, monthBranch, yearStem, yearBranch, dayMasterElement, yongShen);
|
|
142
|
+
// Calculate hourly fortunes
|
|
143
|
+
const hourlyFortunes = this.calculateHourlyFortunes(currentDayStem, currentDayBranch, dayMasterElement, yongShen);
|
|
144
|
+
days.push({
|
|
145
|
+
date: iterDate,
|
|
146
|
+
day: iterDate.getDate(), // Use the actual day of month
|
|
147
|
+
stem: currentDayStem,
|
|
148
|
+
branch: currentDayBranch,
|
|
149
|
+
fortune: analysis.fortune,
|
|
150
|
+
rating: analysis.rating,
|
|
151
|
+
mainInfluences: analysis.mainInfluences,
|
|
152
|
+
activities: {
|
|
153
|
+
favorable: analysis.favorableActivities,
|
|
154
|
+
avoid: analysis.avoidActivities
|
|
155
|
+
},
|
|
156
|
+
luckyHours: analysis.luckyHours,
|
|
157
|
+
hourlyFortunes,
|
|
158
|
+
energy: analysis.energyLevel,
|
|
159
|
+
mood: analysis.moodIndicator,
|
|
160
|
+
opportunities: analysis.opportunities,
|
|
161
|
+
warnings: analysis.warnings
|
|
162
|
+
});
|
|
163
|
+
// Move to next day
|
|
164
|
+
currentDate.setDate(currentDate.getDate() + 1);
|
|
165
|
+
}
|
|
166
|
+
return days;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Calculate day stem and branch for a given date
|
|
170
|
+
*/
|
|
171
|
+
calculateDayStemBranch(date) {
|
|
172
|
+
// Use lunar-javascript for accurate day pillar calculation
|
|
173
|
+
const solar = lunar_javascript_1.Solar.fromYmd(date.getFullYear(), date.getMonth() + 1, date.getDate());
|
|
174
|
+
const lunar = solar.getLunar();
|
|
175
|
+
// Get day GanZhi directly from lunar-javascript
|
|
176
|
+
const dayGanZhi = lunar.getDayInGanZhi();
|
|
177
|
+
return {
|
|
178
|
+
dayStem: dayGanZhi.substring(0, 1),
|
|
179
|
+
dayBranch: dayGanZhi.substring(1, 2)
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Analyze day fortune
|
|
184
|
+
*/
|
|
185
|
+
analyzeDay(dayStem, dayBranch, monthStem, monthBranch, yearStem, yearBranch, dayMasterElement, yongShen) {
|
|
186
|
+
const dayElement = STEM_ELEMENTS[dayStem];
|
|
187
|
+
const dayBranchElement = BRANCH_ELEMENTS[dayBranch];
|
|
188
|
+
// Calculate fortune rating based on element compatibility
|
|
189
|
+
let rating = 50; // Base rating
|
|
190
|
+
// YongShen bonus
|
|
191
|
+
if (yongShen.includes(dayElement)) {
|
|
192
|
+
rating += 30;
|
|
193
|
+
}
|
|
194
|
+
// Element cycle bonus/penalty
|
|
195
|
+
const elementCycle = {
|
|
196
|
+
'木': '火', // Wood generates Fire
|
|
197
|
+
'火': '土', // Fire generates Earth
|
|
198
|
+
'土': '金', // Earth generates Metal
|
|
199
|
+
'金': '水', // Metal generates Water
|
|
200
|
+
'水': '木' // Water generates Wood
|
|
201
|
+
};
|
|
202
|
+
const elementControl = {
|
|
203
|
+
'木': '土', // Wood controls Earth
|
|
204
|
+
'土': '水', // Earth controls Water
|
|
205
|
+
'水': '火', // Water controls Fire
|
|
206
|
+
'火': '金', // Fire controls Metal
|
|
207
|
+
'金': '木' // Metal controls Wood
|
|
208
|
+
};
|
|
209
|
+
if (elementCycle[dayMasterElement] === dayElement) {
|
|
210
|
+
rating += 10; // Day supports day master
|
|
211
|
+
}
|
|
212
|
+
else if (elementCycle[dayElement] === dayMasterElement) {
|
|
213
|
+
rating += 15; // Day master receives support
|
|
214
|
+
}
|
|
215
|
+
else if (elementControl[dayElement] === dayMasterElement) {
|
|
216
|
+
rating -= 20; // Day master is controlled
|
|
217
|
+
}
|
|
218
|
+
else if (elementControl[dayMasterElement] === dayElement) {
|
|
219
|
+
rating += 5; // Day master controls day
|
|
220
|
+
}
|
|
221
|
+
// Branch relationships bonus/penalty
|
|
222
|
+
if (this.isClash(dayBranch, monthBranch)) {
|
|
223
|
+
rating -= 15;
|
|
224
|
+
}
|
|
225
|
+
if (this.isTripleHarmony(dayBranch, monthBranch, yearBranch)) {
|
|
226
|
+
rating += 20;
|
|
227
|
+
}
|
|
228
|
+
// Ensure rating is within bounds
|
|
229
|
+
rating = Math.max(0, Math.min(100, rating));
|
|
230
|
+
// Analyze influences
|
|
231
|
+
const mainInfluences = [];
|
|
232
|
+
const favorableActivities = [];
|
|
233
|
+
const avoidActivities = [];
|
|
234
|
+
const opportunities = [];
|
|
235
|
+
const warnings = [];
|
|
236
|
+
// Day-Month-Year interactions
|
|
237
|
+
if (this.isTripleHarmony(dayBranch, monthBranch, yearBranch)) {
|
|
238
|
+
mainInfluences.push('triple_harmony');
|
|
239
|
+
opportunities.push('exceptional_luck');
|
|
240
|
+
favorableActivities.push('important_decisions', 'new_ventures');
|
|
241
|
+
}
|
|
242
|
+
if (this.isClash(dayBranch, monthBranch)) {
|
|
243
|
+
mainInfluences.push('day_month_clash');
|
|
244
|
+
warnings.push('avoid_conflicts');
|
|
245
|
+
avoidActivities.push('negotiations', 'confrontations');
|
|
246
|
+
}
|
|
247
|
+
// Element analysis
|
|
248
|
+
if (yongShen.includes(dayElement)) {
|
|
249
|
+
opportunities.push('favorable_energy');
|
|
250
|
+
favorableActivities.push('career_advancement', 'financial_decisions');
|
|
251
|
+
}
|
|
252
|
+
// Activity recommendations based on element
|
|
253
|
+
const activities = this.getActivityRecommendations(dayElement, rating);
|
|
254
|
+
favorableActivities.push(...activities.favorable);
|
|
255
|
+
avoidActivities.push(...activities.avoid);
|
|
256
|
+
// Lucky hours
|
|
257
|
+
const luckyHours = this.calculateLuckyHours(dayStem, dayMasterElement, yongShen);
|
|
258
|
+
// Energy and mood
|
|
259
|
+
const energyLevel = this.getEnergyLevel(rating);
|
|
260
|
+
const moodIndicator = this.getMoodIndicator(dayElement, rating);
|
|
261
|
+
// Fortune description
|
|
262
|
+
const fortune = this.getFortuneDescription(rating);
|
|
263
|
+
return {
|
|
264
|
+
fortune,
|
|
265
|
+
rating,
|
|
266
|
+
mainInfluences,
|
|
267
|
+
favorableActivities,
|
|
268
|
+
avoidActivities,
|
|
269
|
+
luckyHours,
|
|
270
|
+
energyLevel,
|
|
271
|
+
moodIndicator,
|
|
272
|
+
opportunities,
|
|
273
|
+
warnings
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Calculate hourly fortunes for a day
|
|
278
|
+
*/
|
|
279
|
+
calculateHourlyFortunes(dayStem, dayBranch, dayMasterElement, yongShen) {
|
|
280
|
+
const hourlyFortunes = [];
|
|
281
|
+
const hourBranches = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥'];
|
|
282
|
+
const hourRanges = [
|
|
283
|
+
'23:00-01:00', '01:00-03:00', '03:00-05:00', '05:00-07:00',
|
|
284
|
+
'07:00-09:00', '09:00-11:00', '11:00-13:00', '13:00-15:00',
|
|
285
|
+
'15:00-17:00', '17:00-19:00', '19:00-21:00', '21:00-23:00'
|
|
286
|
+
];
|
|
287
|
+
// Calculate hour stem based on day stem
|
|
288
|
+
const firstHourStem = this.calculateFirstHourStem(dayStem);
|
|
289
|
+
for (let i = 0; i < 12; i++) {
|
|
290
|
+
const hourBranch = hourBranches[i];
|
|
291
|
+
const hourStemIndex = (STEMS.indexOf(firstHourStem) + i) % 10;
|
|
292
|
+
const hourStem = STEMS[hourStemIndex];
|
|
293
|
+
const hourElement = STEM_ELEMENTS[hourStem];
|
|
294
|
+
// Simple rating calculation
|
|
295
|
+
let rating = 50;
|
|
296
|
+
if (yongShen.includes(hourElement))
|
|
297
|
+
rating += 30;
|
|
298
|
+
if (this.isClash(hourBranch, dayBranch))
|
|
299
|
+
rating -= 20;
|
|
300
|
+
if (this.isHarmony(hourBranch, dayBranch))
|
|
301
|
+
rating += 20;
|
|
302
|
+
// Activity recommendation
|
|
303
|
+
const activity = this.getHourActivity(i, rating);
|
|
304
|
+
hourlyFortunes.push({
|
|
305
|
+
hour: hourRanges[i],
|
|
306
|
+
branch: hourBranch,
|
|
307
|
+
rating: Math.max(0, Math.min(100, rating)),
|
|
308
|
+
activity
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
return hourlyFortunes;
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Calculate the stem for the first hour based on day stem
|
|
315
|
+
*/
|
|
316
|
+
calculateFirstHourStem(dayStem) {
|
|
317
|
+
const dayStemIndex = STEMS.indexOf(dayStem);
|
|
318
|
+
const rules = {
|
|
319
|
+
0: '甲', // 甲日
|
|
320
|
+
1: '丙', // 乙日
|
|
321
|
+
2: '戊', // 丙日
|
|
322
|
+
3: '庚', // 丁日
|
|
323
|
+
4: '壬', // 戊日
|
|
324
|
+
5: '甲', // 己日
|
|
325
|
+
6: '丙', // 庚日
|
|
326
|
+
7: '戊', // 辛日
|
|
327
|
+
8: '庚', // 壬日
|
|
328
|
+
9: '壬' // 癸日
|
|
329
|
+
};
|
|
330
|
+
return rules[dayStemIndex % 5 * 2];
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Calculate lucky hours for the day
|
|
334
|
+
*/
|
|
335
|
+
calculateLuckyHours(dayStem, dayMasterElement, yongShen) {
|
|
336
|
+
const luckyHours = [];
|
|
337
|
+
const dayElement = STEM_ELEMENTS[dayStem];
|
|
338
|
+
// Hours that support yong shen
|
|
339
|
+
if (yongShen.includes('木'))
|
|
340
|
+
luckyHours.push(3, 4); // 寅卯時
|
|
341
|
+
if (yongShen.includes('火'))
|
|
342
|
+
luckyHours.push(5, 6); // 巳午時
|
|
343
|
+
if (yongShen.includes('土'))
|
|
344
|
+
luckyHours.push(2, 5, 8, 11); // 丑辰未戌時
|
|
345
|
+
if (yongShen.includes('金'))
|
|
346
|
+
luckyHours.push(8, 9); // 申酉時
|
|
347
|
+
if (yongShen.includes('水'))
|
|
348
|
+
luckyHours.push(0, 10); // 子亥時
|
|
349
|
+
return [...new Set(luckyHours)].sort((a, b) => a - b);
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Get activity recommendations based on element and rating
|
|
353
|
+
*/
|
|
354
|
+
getActivityRecommendations(element, rating) {
|
|
355
|
+
const elementActivities = {
|
|
356
|
+
'木': {
|
|
357
|
+
favorable: ['planning', 'creative_work', 'networking'],
|
|
358
|
+
avoid: ['metal_work', 'cutting', 'surgery']
|
|
359
|
+
},
|
|
360
|
+
'火': {
|
|
361
|
+
favorable: ['presentations', 'celebrations', 'marketing'],
|
|
362
|
+
avoid: ['water_activities', 'emotional_decisions']
|
|
363
|
+
},
|
|
364
|
+
'土': {
|
|
365
|
+
favorable: ['real_estate', 'building', 'stability_focus'],
|
|
366
|
+
avoid: ['risky_ventures', 'speculation']
|
|
367
|
+
},
|
|
368
|
+
'金': {
|
|
369
|
+
favorable: ['financial_planning', 'legal_matters', 'precision_work'],
|
|
370
|
+
avoid: ['fire_activities', 'impulsive_actions']
|
|
371
|
+
},
|
|
372
|
+
'水': {
|
|
373
|
+
favorable: ['travel', 'learning', 'communication'],
|
|
374
|
+
avoid: ['earth_work', 'stubborn_positions']
|
|
375
|
+
}
|
|
376
|
+
};
|
|
377
|
+
const base = elementActivities[element];
|
|
378
|
+
if (rating >= 70) {
|
|
379
|
+
base.favorable.push('important_meetings', 'contract_signing');
|
|
380
|
+
}
|
|
381
|
+
else if (rating < 40) {
|
|
382
|
+
base.avoid.push('major_decisions', 'investments');
|
|
383
|
+
}
|
|
384
|
+
return base;
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Get hour activity recommendation
|
|
388
|
+
*/
|
|
389
|
+
getHourActivity(hour, rating) {
|
|
390
|
+
const activities = [
|
|
391
|
+
'rest_meditation', // 子時
|
|
392
|
+
'sleep_rejuvenation', // 丑時
|
|
393
|
+
'early_exercise', // 寅時
|
|
394
|
+
'planning_strategy', // 卯時
|
|
395
|
+
'focused_work', // 辰時
|
|
396
|
+
'communication', // 巳時
|
|
397
|
+
'peak_performance', // 午時
|
|
398
|
+
'creative_tasks', // 未時
|
|
399
|
+
'analysis_review', // 申時
|
|
400
|
+
'social_networking', // 酉時
|
|
401
|
+
'relaxation', // 戌時
|
|
402
|
+
'preparation_rest' // 亥時
|
|
403
|
+
];
|
|
404
|
+
if (rating < 30) {
|
|
405
|
+
return 'avoid_important_tasks';
|
|
406
|
+
}
|
|
407
|
+
return activities[hour];
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Check if three branches form a harmony
|
|
411
|
+
*/
|
|
412
|
+
isTripleHarmony(branch1, branch2, branch3) {
|
|
413
|
+
const harmonies = [
|
|
414
|
+
['申', '子', '辰'], // Water
|
|
415
|
+
['寅', '午', '戌'], // Fire
|
|
416
|
+
['巳', '酉', '丑'], // Metal
|
|
417
|
+
['亥', '卯', '未'] // Wood
|
|
418
|
+
];
|
|
419
|
+
return harmonies.some(group => group.includes(branch1) && group.includes(branch2) && group.includes(branch3));
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Check if two branches clash
|
|
423
|
+
*/
|
|
424
|
+
isClash(branch1, branch2) {
|
|
425
|
+
const clashes = {
|
|
426
|
+
'子': '午', '午': '子',
|
|
427
|
+
'丑': '未', '未': '丑',
|
|
428
|
+
'寅': '申', '申': '寅',
|
|
429
|
+
'卯': '酉', '酉': '卯',
|
|
430
|
+
'辰': '戌', '戌': '辰',
|
|
431
|
+
'巳': '亥', '亥': '巳'
|
|
432
|
+
};
|
|
433
|
+
return clashes[branch1] === branch2;
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Check if two branches are in harmony
|
|
437
|
+
*/
|
|
438
|
+
isHarmony(branch1, branch2) {
|
|
439
|
+
const harmonies = {
|
|
440
|
+
'子': '丑', '丑': '子',
|
|
441
|
+
'寅': '亥', '亥': '寅',
|
|
442
|
+
'卯': '戌', '戌': '卯',
|
|
443
|
+
'辰': '酉', '酉': '辰',
|
|
444
|
+
'巳': '申', '申': '巳',
|
|
445
|
+
'午': '未', '未': '午'
|
|
446
|
+
};
|
|
447
|
+
return harmonies[branch1] === branch2;
|
|
448
|
+
}
|
|
449
|
+
/**
|
|
450
|
+
* Get energy level description
|
|
451
|
+
*/
|
|
452
|
+
getEnergyLevel(rating) {
|
|
453
|
+
if (rating >= 80)
|
|
454
|
+
return 'high_energy';
|
|
455
|
+
if (rating >= 60)
|
|
456
|
+
return 'good_energy';
|
|
457
|
+
if (rating >= 40)
|
|
458
|
+
return 'moderate_energy';
|
|
459
|
+
if (rating >= 20)
|
|
460
|
+
return 'low_energy';
|
|
461
|
+
return 'very_low_energy';
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* Get mood indicator
|
|
465
|
+
*/
|
|
466
|
+
getMoodIndicator(element, rating) {
|
|
467
|
+
const elementMoods = {
|
|
468
|
+
'木': 'growth_oriented',
|
|
469
|
+
'火': 'enthusiastic',
|
|
470
|
+
'土': '稳定',
|
|
471
|
+
'金': 'determined',
|
|
472
|
+
'水': 'adaptable'
|
|
473
|
+
};
|
|
474
|
+
if (rating < 30) {
|
|
475
|
+
return 'challenging_mood';
|
|
476
|
+
}
|
|
477
|
+
return elementMoods[element];
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* Get fortune description based on rating
|
|
481
|
+
*/
|
|
482
|
+
getFortuneDescription(rating) {
|
|
483
|
+
if (rating >= 85)
|
|
484
|
+
return '优秀';
|
|
485
|
+
if (rating >= 70)
|
|
486
|
+
return 'very_good';
|
|
487
|
+
if (rating >= 55)
|
|
488
|
+
return '良好';
|
|
489
|
+
if (rating >= 40)
|
|
490
|
+
return '一般';
|
|
491
|
+
if (rating >= 25)
|
|
492
|
+
return '挑战';
|
|
493
|
+
return '困难';
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
exports.LiuRiCalculator = LiuRiCalculator;
|
|
497
|
+
//# sourceMappingURL=LiuRiCalculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiuRiCalculator.js","sourceRoot":"","sources":["../../../../src/services/bazi/calculators/LiuRiCalculator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Stem, Branch, FiveElement, LiuYueInfo, ChineseDate } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Calculator for Liu Yue (流月) - Monthly Fortune Cycles
|
|
4
|
+
* Provides month-by-month analysis within a Liu Nian year
|
|
5
|
+
*/
|
|
6
|
+
export declare class LiuYueCalculator {
|
|
7
|
+
private luckCalculator;
|
|
8
|
+
constructor();
|
|
9
|
+
/**
|
|
10
|
+
* Calculate all Liu Yue for a specific year
|
|
11
|
+
*/
|
|
12
|
+
calculateLiuYue(yearStem: Stem, yearBranch: Branch, dayMasterElement: FiveElement, yongShen: FiveElement[], birthDate: ChineseDate, currentYear: number): LiuYueInfo[];
|
|
13
|
+
/**
|
|
14
|
+
* Calculate the stem for the first month based on year stem
|
|
15
|
+
*/
|
|
16
|
+
private calculateFirstMonthStem;
|
|
17
|
+
/**
|
|
18
|
+
* Get solar calendar dates for a Chinese month based on solar terms
|
|
19
|
+
*/
|
|
20
|
+
private getMonthDates;
|
|
21
|
+
/**
|
|
22
|
+
* Analyze month fortune
|
|
23
|
+
*/
|
|
24
|
+
private analyzeMonth;
|
|
25
|
+
/**
|
|
26
|
+
* Calculate lucky days within a month
|
|
27
|
+
*/
|
|
28
|
+
private calculateLuckyDays;
|
|
29
|
+
/**
|
|
30
|
+
* Check if two stems are in harmony
|
|
31
|
+
*/
|
|
32
|
+
private isHarmony;
|
|
33
|
+
/**
|
|
34
|
+
* Check if two branches clash
|
|
35
|
+
*/
|
|
36
|
+
private isClash;
|
|
37
|
+
/**
|
|
38
|
+
* Check if element is unfavorable
|
|
39
|
+
*/
|
|
40
|
+
private isUnfavorable;
|
|
41
|
+
/**
|
|
42
|
+
* Get health focus areas based on element
|
|
43
|
+
*/
|
|
44
|
+
private getHealthFocus;
|
|
45
|
+
/**
|
|
46
|
+
* Get fortune description based on rating
|
|
47
|
+
*/
|
|
48
|
+
private getFortuneDescription;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=LiuYueCalculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiuYueCalculator.d.ts","sourceRoot":"","sources":["../../../../src/services/bazi/calculators/LiuYueCalculator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,MAAM,EACN,WAAW,EACX,UAAU,EACV,WAAW,EACZ,MAAM,UAAU,CAAC;AAqClB;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,cAAc,CAAsB;;IAM5C;;OAEG;IACH,eAAe,CACb,QAAQ,EAAE,IAAI,EACd,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,WAAW,EAC7B,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,WAAW,EACtB,WAAW,EAAE,MAAM,GAClB,UAAU,EAAE;IAsDf;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAiB/B;;OAEG;IACH,OAAO,CAAC,aAAa;IAwFrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAqGpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmB1B;;OAEG;IACH,OAAO,CAAC,SAAS;IAWjB;;OAEG;IACH,OAAO,CAAC,OAAO;IAYf;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAQ9B"}
|