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