// 八字分析服务模块 // 基于传统四柱八字理论的动态分析系统 const SolarTermsCalculator = require('../utils/solarTerms.cjs'); const WanNianLi = require('../utils/wanNianLi.cjs'); class BaziAnalyzer { constructor() { this.heavenlyStems = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸']; this.earthlyBranches = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']; // 初始化节气计算器和万年历 this.solarTermsCalculator = new SolarTermsCalculator(); this.wanNianLi = new WanNianLi(); // 地支藏干表 - 传统命理核心数据 this.branchHiddenStems = { '子': ['癸'], '丑': ['己', '癸', '辛'], '寅': ['甲', '丙', '戊'], '卯': ['乙'], '辰': ['戊', '乙', '癸'], '巳': ['丙', '庚', '戊'], '午': ['丁', '己'], '未': ['己', '丁', '乙'], '申': ['庚', '壬', '戊'], '酉': ['辛'], '戌': ['戊', '辛', '丁'], '亥': ['壬', '甲'] }; // 十神关系表 this.tenGods = { '比肩': { same: true, description: '同我者为比肩' }, '劫财': { same: true, description: '同我者为劫财' }, '食神': { generate: true, description: '我生者为食神' }, '伤官': { generate: true, description: '我生者为伤官' }, '正财': { overcome: true, description: '我克者为正财' }, '偏财': { overcome: true, description: '我克者为偏财' }, '正官': { beOvercome: true, description: '克我者为正官' }, '七杀': { beOvercome: true, description: '克我者为七杀' }, '正印': { beGenerate: true, description: '生我者为正印' }, '偏印': { beGenerate: true, description: '生我者为偏印' } }; // 二十四节气表(简化版) this.solarTerms = { 1: { start: 4, name: '立春' }, // 2月4日左右立春 2: { start: 19, name: '雨水' }, 3: { start: 6, name: '惊蛰' }, 4: { start: 21, name: '春分' }, 5: { start: 5, name: '清明' }, 6: { start: 21, name: '谷雨' }, 7: { start: 6, name: '立夏' }, 8: { start: 21, name: '小满' }, 9: { start: 6, name: '芒种' }, 10: { start: 22, name: '夏至' }, 11: { start: 7, name: '小暑' }, 12: { start: 23, name: '大暑' } }; } // 完全个性化的八字分析主函数 - 基于真实用户数据 async performFullBaziAnalysis(birth_data) { try { const { birth_date, birth_time, gender, birth_place, name } = birth_data; const personalizedName = name || '您'; // 1. 精确计算八字四柱 const baziChart = this.calculatePreciseBazi(birth_date, birth_time); // 2. 详细五行分析 const wuxingAnalysis = this.performDetailedWuxingAnalysis(baziChart, gender, personalizedName); // 3. 精确格局判定 const patternAnalysis = this.determineAccuratePattern(baziChart, gender, personalizedName); // 4. 精准大运流年分析 const fortuneAnalysis = this.calculatePreciseFortune(baziChart, birth_date, gender, personalizedName); // 5. 综合人生指导 const lifeGuidance = this.generateComprehensiveLifeGuidance(baziChart, patternAnalysis, wuxingAnalysis, gender, personalizedName); // 6. 现代应用建议 const modernGuidance = this.generateModernApplications(baziChart, patternAnalysis, gender, personalizedName); return { analysis_type: 'bazi', analysis_date: new Date().toISOString(), basic_info: { personal_data: { name: personalizedName, birth_date: birth_date, birth_time: birth_time || '12:00', gender: gender === 'male' || gender === '男' ? '男性' : '女性', birth_place: birth_place || '未提供' }, bazi_chart: baziChart, pillar_interpretations: this.generatePillarInterpretations(baziChart, gender, personalizedName), lunar_info: this.calculateLunarInfo(birth_date) }, wuxing_analysis: { element_distribution: wuxingAnalysis.distribution, balance_analysis: wuxingAnalysis.detailed_analysis, personality_traits: wuxingAnalysis.personality_traits, improvement_suggestions: wuxingAnalysis.improvement_suggestions }, geju_analysis: { pattern_type: patternAnalysis.pattern_name, pattern_strength: patternAnalysis.strength, characteristics: patternAnalysis.detailed_traits, career_path: patternAnalysis.suitable_careers, life_meaning: patternAnalysis.philosophical_meaning, development_strategy: patternAnalysis.action_plan }, dayun_analysis: { current_age: fortuneAnalysis.current_age, start_luck_age: fortuneAnalysis.start_luck_age, current_dayun: fortuneAnalysis.current_dayun, dayun_sequence: fortuneAnalysis.life_periods, yearly_fortune: fortuneAnalysis.current_year_analysis, future_outlook: fortuneAnalysis.next_decade_forecast, dayun_influence: fortuneAnalysis.dayun_analysis, detailed_yearly_analysis: fortuneAnalysis.detailed_yearly_analysis }, life_guidance: { overall_summary: lifeGuidance.comprehensive_summary, career_development: lifeGuidance.career_guidance, wealth_management: lifeGuidance.wealth_guidance, marriage_relationships: lifeGuidance.relationship_guidance, health_wellness: lifeGuidance.health_guidance, personal_development: lifeGuidance.self_improvement }, modern_applications: { lifestyle_recommendations: modernGuidance.daily_life, career_strategies: modernGuidance.professional_development, relationship_advice: modernGuidance.interpersonal_skills, decision_making: modernGuidance.timing_guidance } }; } catch (error) { console.error('Complete Bazi analysis error:', error); throw error; } } // 精确计算八字四柱 - 基于传统万年历算法 calculatePreciseBazi(birth_date, birth_time) { const birthDate = new Date(birth_date); const birthYear = birthDate.getFullYear(); const birthMonth = birthDate.getMonth() + 1; const birthDay = birthDate.getDate(); const birthHour = birth_time ? parseInt(birth_time.split(':')[0]) : 12; const birthMinute = birth_time ? parseInt(birth_time.split(':')[1]) : 0; // 1. 年柱计算 - 基于精确立春节气 const yearPillar = this.calculateYearPillar(birthYear, birthMonth, birthDay, birthHour, birthMinute); // 2. 月柱计算 - 基于精确节气交替 const monthPillar = this.calculateMonthPillar(birthYear, birthMonth, birthDay, yearPillar.stemIndex, birthHour, birthMinute); // 3. 日柱计算 - 基于万年历推算 const dayPillar = this.calculateDayPillar(birthYear, birthMonth, birthDay); // 4. 时柱计算 - 基于日干推时干 const hourPillar = this.calculateHourPillar(birthHour, dayPillar.stemIndex); const result = { year_pillar: { stem: yearPillar.stem, branch: yearPillar.branch, element: this.getElementFromStem(yearPillar.stem), hidden_stems: this.branchHiddenStems[yearPillar.branch], ten_god: this.calculateTenGod(dayPillar.stem, yearPillar.stem) }, month_pillar: { stem: monthPillar.stem, branch: monthPillar.branch, element: this.getElementFromStem(monthPillar.stem), hidden_stems: this.branchHiddenStems[monthPillar.branch], ten_god: this.calculateTenGod(dayPillar.stem, monthPillar.stem), is_month_order: true // 月令为提纲 }, day_pillar: { stem: dayPillar.stem, branch: dayPillar.branch, element: this.getElementFromStem(dayPillar.stem), hidden_stems: this.branchHiddenStems[dayPillar.branch], ten_god: '日主', // 日主本身 is_day_master: true }, hour_pillar: { stem: hourPillar.stem, branch: hourPillar.branch, element: this.getElementFromStem(hourPillar.stem), hidden_stems: this.branchHiddenStems[hourPillar.branch], ten_god: this.calculateTenGod(dayPillar.stem, hourPillar.stem) }, day_master: dayPillar.stem, day_master_element: this.getElementFromStem(dayPillar.stem), month_order: monthPillar.branch, complete_chart: `${yearPillar.stem}${yearPillar.branch} ${monthPillar.stem}${monthPillar.branch} ${dayPillar.stem}${dayPillar.branch} ${hourPillar.stem}${hourPillar.branch}`, // 添加五行旺衰分析 element_strength: this.analyzeElementStrength(dayPillar.stem, monthPillar.branch, { year: yearPillar, month: monthPillar, day: dayPillar, hour: hourPillar }) }; return result; } // 年柱计算 - 基于精确立春节气 calculateYearPillar(year, month, day, hour = 12, minute = 0) { let actualYear = year; // 使用精确的立春时间判断 const currentDate = new Date(year, month - 1, day, hour, minute); const isAfterSpring = this.solarTermsCalculator.isAfterSpringBeginning(currentDate); if (!isAfterSpring) { actualYear = year - 1; } // 修正年份计算基准(以1984年甲子年为基准) const stemIndex = (actualYear - 1984) % 10; const branchIndex = (actualYear - 1984) % 12; // 确保索引为正数 const finalStemIndex = ((stemIndex % 10) + 10) % 10; const finalBranchIndex = ((branchIndex % 12) + 12) % 12; return { stem: this.heavenlyStems[finalStemIndex], branch: this.earthlyBranches[finalBranchIndex], stemIndex: finalStemIndex, branchIndex: finalBranchIndex }; } // 月柱计算 - 基于精确节气 calculateMonthPillar(year, month, day, yearStemIndex, hour = 12, minute = 0) { // 使用精确的节气时间确定月支 const currentDate = new Date(year, month - 1, day, hour, minute); const solarTermMonth = this.solarTermsCalculator.getSolarTermMonth(currentDate); // 获取月支索引 const branchNames = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']; const monthBranchIndex = branchNames.indexOf(solarTermMonth.monthBranch); // 月干推算:甲己之年丙作首,乙庚之年戊为头,丙辛之年庚寅上,丁壬壬位顺行流,戊癸甲寅好追求 const monthStemBase = { 0: 2, // 甲年从丙开始(寅月丙寅) 1: 4, // 乙年从戊开始(寅月戊寅) 2: 6, // 丙年从庚开始(寅月庚寅) 3: 8, // 丁年从壬开始(寅月壬寅) 4: 0, // 戊年从甲开始(寅月甲寅) 5: 2, // 己年从丙开始(寅月丙寅) 6: 4, // 庚年从戊开始(寅月戊寅) 7: 6, // 辛年从庚开始(寅月庚寅) 8: 8, // 壬年从壬开始(寅月壬寅) 9: 0 // 癸年从甲开始(寅月甲寅) }; // 月支索引:寅=2, 卯=3, 辰=4, 巳=5, 午=6, 未=7, 申=8, 酉=9, 戌=10, 亥=11, 子=0, 丑=1 // 月干 = 年干对应的起始月干 + (月支索引 - 寅月索引) const monthStemIndex = (monthStemBase[yearStemIndex] + (monthBranchIndex - 2 + 12) % 12) % 10; return { stem: this.heavenlyStems[monthStemIndex], branch: this.earthlyBranches[monthBranchIndex], stemIndex: monthStemIndex, branchIndex: monthBranchIndex }; } // 日柱计算 - 权威万年历查表法 calculateDayPillar(year, month, day) { // 使用权威万年历数据获取精确日柱 return this.wanNianLi.getAccurateDayPillar(year, month, day); } // 时柱计算 - 日干推时干 calculateHourPillar(hour, dayStemIndex) { // 时支计算 const hourBranchIndex = Math.floor((hour + 1) / 2) % 12; // 时干推算:甲己还加甲 const hourStemBase = { 0: 0, // 甲日、己日从甲开始 1: 2, // 乙日、庚日从丙开始 2: 4, // 丙日、辛日从戊开始 3: 6, // 丁日、壬日从庚开始 4: 8, // 戊日、癸日从壬开始 5: 0, // 己日从甲开始 6: 2, // 庚日从丙开始 7: 4, // 辛日从戊开始 8: 6, // 壬日从庚开始 9: 8 // 癸日从壬开始 }; const hourStemIndex = (hourStemBase[dayStemIndex] + hourBranchIndex) % 10; return { stem: this.heavenlyStems[hourStemIndex], branch: this.earthlyBranches[hourBranchIndex], stemIndex: hourStemIndex, branchIndex: hourBranchIndex }; } // 计算十神关系 calculateTenGod(dayMaster, targetStem) { if (dayMaster === targetStem) { return '比肩'; } const dayElement = this.getElementFromStem(dayMaster); const targetElement = this.getElementFromStem(targetStem); const relation = this.getElementRelation(dayElement, targetElement); // 根据阴阳和五行关系确定十神 const dayYinYang = this.getStemYinYang(dayMaster); const targetYinYang = this.getStemYinYang(targetStem); const sameYinYang = dayYinYang === targetYinYang; switch (relation) { case 'same': return sameYinYang ? '比肩' : '劫财'; case 'generate': // 我生者 return sameYinYang ? '食神' : '伤官'; case 'overcome': // 我克者 return sameYinYang ? '偏财' : '正财'; case 'beOvercome': // 克我者 return sameYinYang ? '七杀' : '正官'; case 'beGenerated': // 生我者 return sameYinYang ? '偏印' : '正印'; default: return '未知'; } } // 获取天干阴阳属性 getStemYinYang(stem) { const yangStems = ['甲', '丙', '戊', '庚', '壬']; return yangStems.includes(stem) ? '阳' : '阴'; } // 五行旺衰分析 - 核心算法 analyzeElementStrength(dayMaster, monthBranch, pillars) { const dayElement = this.getElementFromStem(dayMaster); // 1. 月令旺衰 - 最重要的因素 const monthStrength = this.getMonthStrength(dayElement, monthBranch); // 2. 地支藏干分析 const hiddenStemSupport = this.analyzeHiddenStemSupport(dayElement, pillars); // 3. 天干通根分析 const stemSupport = this.analyzeStemSupport(dayElement, pillars); // 4. 综合旺衰判断 const overallStrength = this.calculateOverallStrength(monthStrength, hiddenStemSupport, stemSupport); return { month_strength: monthStrength, hidden_stem_support: hiddenStemSupport, stem_support: stemSupport, overall_strength: overallStrength, strength_level: this.getStrengthLevel(overallStrength), use_god_analysis: this.analyzeUseGod(dayElement, overallStrength, pillars) }; } // 月令旺衰判断 getMonthStrength(element, monthBranch) { const seasonStrength = { '木': { '寅': '旺', '卯': '旺', '辰': '余气', '巳': '死', '午': '死', '未': '死', '申': '绝', '酉': '绝', '戌': '墓', '亥': '生', '子': '生', '丑': '休' }, '火': { '寅': '生', '卯': '生', '辰': '休', '巳': '旺', '午': '旺', '未': '余气', '申': '死', '酉': '死', '戌': '墓', '亥': '绝', '子': '绝', '丑': '死' }, '土': { '寅': '死', '卯': '死', '辰': '旺', '巳': '相', '午': '相', '未': '旺', '申': '休', '酉': '休', '戌': '旺', '亥': '死', '子': '死', '丑': '旺' }, '金': { '寅': '绝', '卯': '绝', '辰': '墓', '巳': '死', '午': '死', '未': '死', '申': '旺', '酉': '旺', '戌': '余气', '亥': '生', '子': '生', '丑': '相' }, '水': { '寅': '死', '卯': '死', '辰': '墓', '巳': '绝', '午': '绝', '未': '死', '申': '生', '酉': '生', '戌': '死', '亥': '旺', '子': '旺', '丑': '余气' } }; return seasonStrength[element]?.[monthBranch] || '平'; } // 地支藏干支持度分析 analyzeHiddenStemSupport(dayElement, pillars) { let supportScore = 0; const supportDetails = []; Object.values(pillars).forEach(pillar => { const hiddenStems = this.branchHiddenStems[pillar.branch]; hiddenStems.forEach((hiddenStem, index) => { const hiddenElement = this.getElementFromStem(hiddenStem); const relation = this.getElementRelation(hiddenElement, dayElement); let score = 0; if (relation === 'same') score = 3; else if (relation === 'beGenerated') score = 2; else if (relation === 'generate') score = -1; else if (relation === 'overcome') score = -2; else if (relation === 'beOvercome') score = -3; // 本气得分最高,中气次之,余气最低 const positionMultiplier = index === 0 ? 1.0 : index === 1 ? 0.6 : 0.3; const finalScore = score * positionMultiplier; supportScore += finalScore; if (Math.abs(finalScore) > 0.5) { supportDetails.push({ branch: pillar.branch, hidden_stem: hiddenStem, relation: relation, score: finalScore }); } }); }); return { total_score: supportScore, details: supportDetails, level: supportScore > 3 ? '强' : supportScore > 0 ? '中' : supportScore > -3 ? '弱' : '很弱' }; } // 天干支持度分析 analyzeStemSupport(dayElement, pillars) { let supportScore = 0; const supportDetails = []; Object.entries(pillars).forEach(([position, pillar]) => { if (position === 'day') return; // 跳过日主本身 const stemElement = this.getElementFromStem(pillar.stem); const relation = this.getElementRelation(stemElement, dayElement); let score = 0; if (relation === 'same') score = 2; else if (relation === 'beGenerated') score = 1.5; else if (relation === 'generate') score = -0.5; else if (relation === 'overcome') score = -1; else if (relation === 'beOvercome') score = -1.5; supportScore += score; if (Math.abs(score) > 0) { supportDetails.push({ position: position, stem: pillar.stem, relation: relation, score: score }); } }); return { total_score: supportScore, details: supportDetails, level: supportScore > 2 ? '强' : supportScore > 0 ? '中' : supportScore > -2 ? '弱' : '很弱' }; } // 综合旺衰计算 calculateOverallStrength(monthStrength, hiddenSupport, stemSupport) { const monthScore = { '旺': 4, '相': 2, '休': 0, '囚': -2, '死': -3, '绝': -4, '墓': -1, '生': 1, '余气': 1 }[monthStrength] || 0; const totalScore = monthScore + hiddenSupport.total_score + stemSupport.total_score; return { month_score: monthScore, hidden_score: hiddenSupport.total_score, stem_score: stemSupport.total_score, total_score: totalScore }; } // 旺衰等级判断 getStrengthLevel(overallStrength) { const score = overallStrength.total_score; if (score >= 6) return '太旺'; if (score >= 3) return '偏旺'; if (score >= -1) return '中和'; if (score >= -4) return '偏弱'; return '太弱'; } // 用神分析 analyzeUseGod(dayElement, strengthAnalysis, pillars) { const strengthLevel = this.getStrengthLevel(strengthAnalysis); let useGod = ''; let avoidGod = ''; let analysis = ''; if (strengthLevel === '太旺' || strengthLevel === '偏旺') { // 身旺用官杀、食伤、财星 const restrainElements = this.getRestrainElements(dayElement); const drainElements = this.getDrainElements(dayElement); const consumeElements = this.getConsumeElements(dayElement); useGod = `${restrainElements.join('、')}(官杀)、${drainElements.join('、')}(食伤)、${consumeElements.join('、')}(财星)`; avoidGod = `${dayElement}(比劫)、${this.getGenerateElements(dayElement).join('、')}(印星)`; analysis = `日主${dayElement}${strengthLevel},需要克泄耗来平衡,宜用官杀制身、食伤泄秀、财星耗身。`; } else if (strengthLevel === '太弱' || strengthLevel === '偏弱') { // 身弱用印星、比劫 const generateElements = this.getGenerateElements(dayElement); useGod = `${generateElements.join('、')}(印星)、${dayElement}(比劫)`; avoidGod = `${this.getRestrainElements(dayElement).join('、')}(官杀)、${this.getDrainElements(dayElement).join('、')}(食伤)、${this.getConsumeElements(dayElement).join('、')}(财星)`; analysis = `日主${dayElement}${strengthLevel},需要生扶来增强,宜用印星生身、比劫助身。`; } else { // 中和命格 useGod = '因时制宜,随运而变'; avoidGod = '过旺过弱之五行'; analysis = `日主${dayElement}中和,命格平衡,宜顺其自然,忌大起大落。`; } return { use_god: useGod, avoid_god: avoidGod, analysis: analysis, strength_level: strengthLevel }; } // 获取克制元素 getRestrainElements(element) { const restrainMap = { '木': ['金'], '火': ['水'], '土': ['木'], '金': ['火'], '水': ['土'] }; return restrainMap[element] || []; } // 获取泄秀元素 getDrainElements(element) { const drainMap = { '木': ['火'], '火': ['土'], '土': ['金'], '金': ['水'], '水': ['木'] }; return drainMap[element] || []; } // 获取耗身元素 getConsumeElements(element) { const consumeMap = { '木': ['土'], '火': ['金'], '土': ['水'], '金': ['木'], '水': ['火'] }; return consumeMap[element] || []; } // 获取生扶元素 getGenerateElements(element) { const generateMap = { '木': ['水'], '火': ['木'], '土': ['火'], '金': ['土'], '水': ['金'] }; return generateMap[element] || []; } // 详细五行分析 - 基于真实旺衰 performDetailedWuxingAnalysis(baziChart, gender, name) { const dayMaster = baziChart.day_master; const dayMasterElement = baziChart.day_master_element; const strengthAnalysis = baziChart.element_strength; // 统计五行分布(包含地支藏干) const elements = { '木': 0, '火': 0, '土': 0, '金': 0, '水': 0 }; const elementDetails = { '木': [], '火': [], '土': [], '金': [], '水': [] }; // 统计天干 ['year_pillar', 'month_pillar', 'day_pillar', 'hour_pillar'].forEach(pillar => { const stemElement = baziChart[pillar].element; elements[stemElement] += 2; // 天干力量较强 elementDetails[stemElement].push(`${pillar.replace('_pillar', '')}干${baziChart[pillar].stem}`); }); // 统计地支藏干 ['year_pillar', 'month_pillar', 'day_pillar', 'hour_pillar'].forEach(pillar => { const hiddenStems = baziChart[pillar].hidden_stems; hiddenStems.forEach((hiddenStem, index) => { const hiddenElement = this.getElementFromStem(hiddenStem); const weight = index === 0 ? 1.5 : index === 1 ? 1.0 : 0.5; // 本气、中气、余气权重 elements[hiddenElement] += weight; elementDetails[hiddenElement].push(`${pillar.replace('_pillar', '')}支藏${hiddenStem}`); }); }); // 生成个性化分析 const genderTitle = gender === 'male' || gender === '男' ? '男命' : '女命'; const strengthLevel = strengthAnalysis.strength_level; const useGodAnalysis = strengthAnalysis.use_god_analysis; const personalityTraits = this.generateAdvancedPersonalityTraits(dayMaster, strengthLevel, useGodAnalysis, gender); const balanceAnalysis = this.generateAdvancedBalanceAnalysis(elements, dayMasterElement, strengthAnalysis, name); const improvementSuggestions = this.generateAdvancedImprovementSuggestions(useGodAnalysis, strengthLevel, name, gender); return { distribution: elements, element_details: elementDetails, detailed_analysis: `${name}的八字中,日主${dayMaster}(${dayMasterElement}元素)${strengthLevel},${genderTitle}${dayMasterElement}命格。${useGodAnalysis.analysis}${balanceAnalysis}`, personality_traits: personalityTraits, improvement_suggestions: improvementSuggestions, strength_analysis: strengthAnalysis }; } // 高级个性特质分析 - 基于旺衰和用神 generateAdvancedPersonalityTraits(dayMaster, strengthLevel, useGodAnalysis, gender) { const baseDayMasterTraits = { '甲': { base: '如参天大树般正直挺拔,具有开拓进取的精神和天然的领导气质', strong: '性格刚强果断,具有很强的主导欲和控制欲,不轻易妥协', weak: '性格相对温和,善于合作,但有时缺乏决断力和主见' }, '乙': { base: '如花草般柔韧而富有生命力,具有很强的适应能力和艺术天赋', strong: '个性坚韧不拔,善于在逆境中成长,具有很强的生命力', weak: '性格温柔细腻,但有时过于敏感,容易受外界影响' }, '丙': { base: '如太阳般光明磊落,性格开朗热情,具有很强的感染力和表现欲', strong: '性格热情奔放,具有很强的表现欲和领导才能,但有时过于张扬', weak: '性格温和亲切,但有时缺乏自信,需要他人的认可和支持' }, '丁': { base: '如星火般温暖细腻,思维敏锐,具有细致的观察力和创意能力', strong: '思维敏锐,洞察力强,具有很好的直觉和判断力', weak: '性格内向细腻,但有时过于敏感,容易多愁善感' }, '戊': { base: '如高山般稳重厚实,具有很强的责任心和包容心,值得信赖', strong: '性格稳重可靠,具有很强的责任感,但有时过于固执', weak: '性格温和包容,但有时缺乏主见,容易被他人影响' }, '己': { base: '如沃土般温和包容,具有很好的亲和力和协调能力,善于照顾他人', strong: '具有很强的包容心和协调能力,善于处理人际关系', weak: '性格温和谦逊,但有时过于迁就他人,缺乏自我主张' }, '庚': { base: '如利剑般刚毅果断,具有很强的原则性和执行力,做事雷厉风行', strong: '性格刚毅果断,具有很强的原则性,但有时过于严厉', weak: '性格相对温和,但仍保持一定的原则性,善于变通' }, '辛': { base: '如珠宝般精致优雅,注重品质和细节,具有很好的审美能力', strong: '追求完美,注重品质,具有很好的审美能力和品味', weak: '性格温和优雅,但有时过于追求完美,容易钻牛角尖' }, '壬': { base: '如江河般胸怀宽广,具有很强的包容性和变通能力,智慧深邃', strong: '智慧深邃,变通能力强,具有很好的适应性', weak: '性格温和包容,但有时缺乏坚持,容易随波逐流' }, '癸': { base: '如露水般纯净灵性,直觉敏锐,具有很强的感知能力和同情心', strong: '直觉敏锐,感知能力强,具有很好的洞察力', weak: '性格温柔敏感,但有时过于情绪化,容易受情感影响' } }; const traits = baseDayMasterTraits[dayMaster] || { base: '性格温和平衡,具有良好的适应能力', strong: '性格相对稳定', weak: '性格相对温和' }; let personalityDescription = traits.base; // 根据旺衰调整性格描述 if (strengthLevel === '太旺' || strengthLevel === '偏旺') { personalityDescription += `。由于日主${strengthLevel},${traits.strong}。`; } else if (strengthLevel === '太弱' || strengthLevel === '偏弱') { personalityDescription += `。由于日主${strengthLevel},${traits.weak}。`; } else { personalityDescription += '。日主中和,性格相对平衡稳定。'; } // 根据用神添加建议 personalityDescription += `建议在生活中多接触${useGodAnalysis.use_god.split('(')[0]}相关的事物,有助于性格的完善和运势的提升。`; const genderModification = gender === 'male' || gender === '男' ? '作为男性,建议发挥阳刚之气,承担更多责任' : '作为女性,建议发挥阴柔之美,注重内在修养'; return personalityDescription + genderModification + '。'; } // 高级平衡分析 - 基于旺衰理论 generateAdvancedBalanceAnalysis(elements, dayElement, strengthAnalysis, name) { const strengthLevel = strengthAnalysis.strength_level; const monthStrength = strengthAnalysis.month_strength; const useGodAnalysis = strengthAnalysis.use_god_analysis; let analysis = `月令${monthStrength},`; if (strengthLevel === '太旺') { analysis += `日主过于强旺,需要克泄耗来平衡。命局中最需要${useGodAnalysis.use_god}来调节,避免${useGodAnalysis.avoid_god}进一步增强日主力量。`; } else if (strengthLevel === '偏旺') { analysis += `日主偏强,适度的克泄耗有利于发挥才能。建议重点关注${useGodAnalysis.use_god}相关的发展方向。`; } else if (strengthLevel === '中和') { analysis += `日主中和,五行相对平衡,是比较理想的命格。宜顺其自然发展,避免大的起伏变化。`; } else if (strengthLevel === '偏弱') { analysis += `日主偏弱,需要适当的生扶来增强力量。建议多接触${useGodAnalysis.use_god}相关的环境和事物。`; } else { analysis += `日主过弱,急需生扶来增强根基。必须重点加强${useGodAnalysis.use_god}方面的修养和环境。`; } return analysis; } // 高级改进建议 - 基于用神理论 generateAdvancedImprovementSuggestions(useGodAnalysis, strengthLevel, name, gender) { const suggestions = []; // 基于用神的具体建议 if (useGodAnalysis.use_god.includes('木')) { suggestions.push('五行补木:多接触大自然,居住环境宜有绿植,适合向东方发展,可多穿绿色衣物'); } if (useGodAnalysis.use_god.includes('火')) { suggestions.push('五行补火:多晒太阳,居住环境宜光线充足,适合向南方发展,可多穿红色衣物'); } if (useGodAnalysis.use_god.includes('土')) { suggestions.push('五行补土:多接触土地,居住环境宜稳定,适合本地发展,可多穿黄色衣物'); } if (useGodAnalysis.use_god.includes('金')) { suggestions.push('五行补金:多接触金属制品,居住环境宜整洁,适合向西方发展,可多穿白色衣物'); } if (useGodAnalysis.use_god.includes('水')) { suggestions.push('五行补水:多亲近水源,居住环境宜临水,适合向北方发展,可多穿黑色衣物'); } // 基于旺衰的生活建议 if (strengthLevel === '太旺' || strengthLevel === '偏旺') { suggestions.push('日主偏强,宜多参与团队合作,发挥领导才能,但要注意不可过于强势'); suggestions.push('适合从事需要决断力和执行力的工作,但要学会倾听他人意见'); } else if (strengthLevel === '太弱' || strengthLevel === '偏弱') { suggestions.push('日主偏弱,宜多寻求贵人帮助,加强自身修养,提升内在实力'); suggestions.push('适合从事需要细心和耐心的工作,要学会坚持和自信'); } // 性别化建议 const genderAdvice = gender === 'male' || gender === '男' ? '作为男性,建议在事业上积极进取,同时注重家庭责任的承担,培养阳刚正气' : '作为女性,建议在温柔的同时保持独立,事业与家庭并重,培养内在美德'; suggestions.push(genderAdvice); return suggestions.join(';') + '。'; } // 生成平衡分析 generateBalanceAnalysis(elements, dayElement, strongest, weakest, name) { const balance = Math.max(...Object.values(elements)) - Math.min(...Object.values(elements)); let strengthAnalysis = ''; if (elements[strongest] >= 4) { strengthAnalysis = `五行中${strongest}元素极为旺盛(${elements[strongest]}个),占据主导地位,表现出强烈的${this.getElementDetailedTraits(strongest)}特质`; } else if (elements[strongest] >= 3) { strengthAnalysis = `五行中${strongest}元素较为旺盛(${elements[strongest]}个),显现出明显的${this.getElementDetailedTraits(strongest)}特质`; } else { strengthAnalysis = '五行分布相对均匀,各种特质都有所体现'; } let weaknessAnalysis = ''; if (elements[weakest] === 0) { weaknessAnalysis = `,但完全缺乏${weakest}元素,这意味着需要特别注意培养${this.getElementMissingTraits(weakest)}方面的能力`; } else if (elements[weakest] === 1) { weaknessAnalysis = `,而${weakest}元素较弱(仅${elements[weakest]}个),建议在生活中多加强${this.getElementMissingTraits(weakest)}的修养`; } const overallBalance = balance <= 1 ? '整体五行平衡良好,人生发展较为稳定' : balance <= 2 ? '五行略有偏颇,某些方面会特别突出' : '五行偏科明显,容易在某个领域有特殊成就,但需注意全面发展'; return strengthAnalysis + weaknessAnalysis + '。' + overallBalance; } // 辅助函数实现 getElementFromStem(stem) { const stemElements = { '甲': '木', '乙': '木', '丙': '火', '丁': '火', '戊': '土', '己': '土', '庚': '金', '辛': '金', '壬': '水', '癸': '水' }; return stemElements[stem] || '土'; } getBranchElement(branch) { const branchElements = { '子': '水', '丑': '土', '寅': '木', '卯': '木', '辰': '土', '巳': '火', '午': '火', '未': '土', '申': '金', '酉': '金', '戌': '土', '亥': '水' }; return branchElements[branch] || '土'; } // 五行关系判断 getElementRelation(element1, element2) { if (element1 === element2) return 'same'; const generateCycle = { '木': '火', '火': '土', '土': '金', '金': '水', '水': '木' }; const overcomeCycle = { '木': '土', '火': '金', '土': '水', '金': '木', '水': '火' }; if (generateCycle[element1] === element2) return 'generate'; if (overcomeCycle[element1] === element2) return 'overcome'; if (generateCycle[element2] === element1) return 'beGenerated'; if (overcomeCycle[element2] === element1) return 'beOvercome'; return 'neutral'; } getElementNatureDescription(element) { const descriptions = { '木': '生机勃勃、向上发展、具有创新精神', '火': '热情奔放、积极主动、具有领导才能', '土': '稳重踏实、包容宽厚、具有责任感', '金': '坚毅果断、追求完美、具有原则性', '水': '智慧灵活、适应性强、具有包容性' }; return descriptions[element] || '平衡和谐'; } getElementDetailedTraits(element) { const traits = { '木': '创新进取、生机勃勃', '火': '热情活跃、表现突出', '土': '稳重可靠、包容厚德', '金': '坚毅果断、追求卓越', '水': '智慧深邃、变通灵活' }; return traits[element] || '平衡发展'; } getElementMissingTraits(element) { const missing = { '木': '创新精神和成长动力', '火': '热情活力和表现能力', '土': '稳重品格和责任意识', '金': '决断力和原则性', '水': '智慧思考和灵活应变' }; return missing[element] || '综合素质'; } // 简化实现其他必要方法 generateImprovementSuggestions(dayElement, weakElement, strongElement, name, gender) { const suggestions = []; if (weakElement) { const elementSupplements = { '木': '多接触大自然,培养耐心和成长心态,可以多使用绿色物品,向东方发展', '火': '增强自信和表现力,多参加社交活动,可以多穿红色衣物,向南方发展', '土': '培养稳重和信用,加强责任感,可以多接触土地和陶瓷,向中央发展', '金': '提升决断力和原则性,注重品质追求,可以多使用金属制品,向西方发展', '水': '增强智慧和变通能力,培养学习习惯,可以多亲近水源,向北方发展' }; suggestions.push(`针对${weakElement}元素不足:${elementSupplements[weakElement]}`); } const genderAdvice = gender === 'male' || gender === '男' ? '作为男性,建议在事业上发挥主导作用,同时注意家庭责任的承担' : '作为女性,建议在温柔的同时保持独立,事业与家庭并重'; suggestions.push(genderAdvice); return suggestions.join(';'); } // 动态格局判定系统 - 基于十神和月令 determineAccuratePattern(baziChart, gender, name) { const dayMaster = baziChart.day_master; const monthBranch = baziChart.month_order; const monthStem = baziChart.month_pillar.stem; const strengthAnalysis = baziChart.element_strength; // 1. 判断月令十神 const monthTenGod = baziChart.month_pillar.ten_god; // 2. 分析月令藏干 const monthHiddenStems = baziChart.month_pillar.hidden_stems; const monthMainGod = this.calculateTenGod(dayMaster, monthHiddenStems[0]); // 3. 格局判定 let patternName = ''; let patternType = ''; let patternStrength = ''; // 正格判定(以月令为准) if (['正官', '正财', '正印', '食神'].includes(monthMainGod)) { patternName = monthMainGod + '格'; patternType = '正格'; } else if (['七杀', '偏财', '偏印', '伤官'].includes(monthMainGod)) { patternName = monthMainGod + '格'; patternType = '正格'; } else if (['比肩', '劫财'].includes(monthMainGod)) { patternName = '建禄格'; patternType = '正格'; } else { // 特殊格局判定 const specialPattern = this.analyzeSpecialPattern(baziChart); if (specialPattern) { patternName = specialPattern.name; patternType = specialPattern.type; } else { patternName = '杂气格'; patternType = '正格'; } } // 4. 格局强度评估 patternStrength = this.evaluatePatternStrength(baziChart, patternName, strengthAnalysis); // 5. 生成详细特征 const detailedTraits = this.generatePatternTraits(patternName, patternType, strengthAnalysis, gender, name); // 6. 适合职业分析 const suitableCareers = this.generatePatternCareers(patternName, strengthAnalysis, gender); // 7. 人生哲学 const philosophicalMeaning = this.generatePatternPhilosophy(patternName, patternType, strengthAnalysis); // 8. 行动计划 const actionPlan = this.generatePatternActionPlan(patternName, strengthAnalysis, gender); return { pattern_name: patternName, pattern_type: patternType, strength: patternStrength, month_ten_god: monthMainGod, detailed_traits: detailedTraits, suitable_careers: suitableCareers, philosophical_meaning: philosophicalMeaning, action_plan: actionPlan, pattern_analysis: this.generatePatternAnalysis(patternName, baziChart, strengthAnalysis) }; } // 特殊格局分析 analyzeSpecialPattern(baziChart) { const dayMaster = baziChart.day_master; const strengthLevel = baziChart.element_strength.strength_level; // 从强格判定 if (strengthLevel === '太旺') { const supportCount = this.countSameElementSupport(baziChart); if (supportCount >= 3) { return { name: '从强格', type: '特殊格局' }; } } // 从弱格判定 if (strengthLevel === '太弱') { const restrainCount = this.countRestrainElements(baziChart); if (restrainCount >= 3) { return { name: '从弱格', type: '特殊格局' }; } } return null; } // 计算同类五行支持数量 countSameElementSupport(baziChart) { const dayElement = baziChart.day_master_element; let count = 0; ['year_pillar', 'month_pillar', 'hour_pillar'].forEach(pillar => { if (baziChart[pillar].element === dayElement) count++; baziChart[pillar].hidden_stems.forEach(hiddenStem => { if (this.getElementFromStem(hiddenStem) === dayElement) count++; }); }); return count; } // 计算克制元素数量 countRestrainElements(baziChart) { const dayElement = baziChart.day_master_element; const restrainElements = this.getRestrainElements(dayElement); let count = 0; ['year_pillar', 'month_pillar', 'hour_pillar'].forEach(pillar => { if (restrainElements.includes(baziChart[pillar].element)) count++; baziChart[pillar].hidden_stems.forEach(hiddenStem => { if (restrainElements.includes(this.getElementFromStem(hiddenStem))) count++; }); }); return count; } // 格局强度评估 evaluatePatternStrength(baziChart, patternName, strengthAnalysis) { const strengthLevel = strengthAnalysis.strength_level; const monthStrength = strengthAnalysis.month_strength; if (patternName.includes('从')) { // 特殊格局强度 return strengthLevel === '太旺' || strengthLevel === '太弱' ? '上等' : '中等'; } else { // 正格强度 if (monthStrength === '旺' && (strengthLevel === '中和' || strengthLevel === '偏旺')) { return '上等'; } else if (monthStrength === '相' || monthStrength === '生') { return '中上'; } else if (monthStrength === '休' || monthStrength === '余气') { return '中等'; } else { return '偏弱'; } } } // 生成格局特征 generatePatternTraits(patternName, patternType, strengthAnalysis, gender, name) { const patternTraits = { '正官格': `${name}具有正官格特征,性格正直有原则,具有很强的责任感和正义感,适合在正统行业发展`, '七杀格': `${name}具有七杀格特征,性格刚毅果断,具有很强的开拓精神和竞争意识,适合在竞争激烈的环境中发展`, '正财格': `${name}具有正财格特征,性格务实稳重,具有很好的理财能力和商业头脑,适合从事财务相关工作`, '偏财格': `${name}具有偏财格特征,性格灵活变通,具有很好的投资眼光和商业敏感度,适合从事投资贸易`, '正印格': `${name}具有正印格特征,性格温和慈祥,具有很强的学习能力和文化修养,适合从事教育文化工作`, '偏印格': `${name}具有偏印格特征,性格独特敏锐,具有很强的直觉和创新能力,适合从事技术研发工作`, '食神格': `${name}具有食神格特征,性格温和乐观,具有很好的表达能力和艺术天赋,适合从事文艺创作`, '伤官格': `${name}具有伤官格特征,性格聪明机敏,具有很强的表现欲和创新精神,适合从事创意设计`, '建禄格': `${name}具有建禄格特征,性格自立自强,具有很强的独立能力和进取精神,适合自主创业`, '从强格': `${name}具有从强格特征,性格强势主导,具有很强的领导能力,但需要学会适度收敛`, '从弱格': `${name}具有从弱格特征,性格随和适应,具有很好的协调能力,适合在团队中发挥作用` }; const baseTraits = patternTraits[patternName] || `${name}具有${patternName}特征,性格相对平衡`; const strengthModification = strengthAnalysis.strength_level === '中和' ? ',命格平衡,发展稳定' : `,日主${strengthAnalysis.strength_level},${strengthAnalysis.use_god_analysis.analysis}`; return baseTraits + strengthModification; } // 生成格局适合职业 generatePatternCareers(patternName, strengthAnalysis, gender) { const careerMap = { '正官格': '公务员、法官、律师、管理人员、教师、医生等正统职业', '七杀格': '军人、警察、企业家、销售经理、竞技体育、外科医生等需要果断的职业', '正财格': '会计师、银行家、理财顾问、商人、房地产经纪等财务相关职业', '偏财格': '投资顾问、贸易商、股票经纪、风险投资、国际贸易等灵活性强的职业', '正印格': '教师、学者、作家、编辑、图书管理员、文化工作者等文教职业', '偏印格': '研究员、工程师、设计师、心理咨询师、占卜师等技术性职业', '食神格': '厨师、艺术家、演员、主持人、美食评论家、娱乐业等表现性职业', '伤官格': '设计师、广告创意、发明家、自媒体、艺术创作等创新性职业', '建禄格': '企业家、个体经营、自由职业、项目经理等独立性强的职业', '从强格': '企业高管、政治家、军事将领等需要强势领导的职业', '从弱格': '助理、秘书、服务业、协调员等需要配合他人的职业' }; const baseCareers = careerMap[patternName] || '根据个人兴趣和能力选择合适的职业'; const genderModification = gender === 'male' || gender === '男' ? ',作为男性宜选择更具挑战性和领导性的岗位' : ',作为女性宜选择更注重细致和协调的岗位'; return baseCareers + genderModification; } // 生成格局哲学意义 generatePatternPhilosophy(patternName, patternType, strengthAnalysis) { const philosophyMap = { '正官格': '人生以正道为本,遵纪守法,稳步发展,追求社会认可和地位', '七杀格': '人生充满挑战,需要勇敢面对,在竞争中成长,追求突破和成就', '正财格': '人生以务实为本,脚踏实地,积累财富,追求物质安全和稳定', '偏财格': '人生机遇多变,需要把握时机,灵活应变,追求财富和自由', '正印格': '人生以学习为本,注重修养,传承文化,追求智慧和品德', '偏印格': '人生独特多彩,需要创新思维,另辟蹊径,追求个性和突破', '食神格': '人生以快乐为本,享受生活,表达自我,追求艺术和美好', '伤官格': '人生以创新为本,挑战传统,表现才华,追求个性和成就', '建禄格': '人生以自立为本,依靠自己,独立奋斗,追求自主和成功', '从强格': '人生以强势为本,发挥优势,主导局面,但需要学会包容', '从弱格': '人生以顺应为本,适应环境,借力发展,追求和谐共赢' }; return philosophyMap[patternName] || '人生需要平衡发展,顺应自然规律'; } // 生成格局行动计划 generatePatternActionPlan(patternName, strengthAnalysis, gender) { const useGodAnalysis = strengthAnalysis.use_god_analysis; const strengthLevel = strengthAnalysis.strength_level; let actionPlan = ''; if (strengthLevel === '太旺' || strengthLevel === '偏旺') { actionPlan = '建议多参与团队合作,发挥领导才能,同时要学会倾听他人意见,避免过于强势'; } else if (strengthLevel === '太弱' || strengthLevel === '偏弱') { actionPlan = '建议多寻求贵人帮助,加强自身修养,提升内在实力,逐步建立自信'; } else { actionPlan = '建议保持现有的平衡状态,稳步发展,避免大的变动'; } actionPlan += `。在五行调理方面,${useGodAnalysis.analysis.replace('日主', '').replace(',', ',建议')}`; const genderPlan = gender === 'male' || gender === '男' ? '作为男性,要承担更多责任,发挥阳刚之气' : '作为女性,要注重内在修养,发挥阴柔之美'; return actionPlan + '。' + genderPlan + '。'; } // 生成格局分析 generatePatternAnalysis(patternName, baziChart, strengthAnalysis) { const monthTenGod = baziChart.month_pillar.ten_god; const monthStrength = strengthAnalysis.month_strength; const strengthLevel = strengthAnalysis.strength_level; return `格局分析:月令${baziChart.month_order},藏干主气为${baziChart.month_pillar.hidden_stems[0]},与日主${baziChart.day_master}形成${monthTenGod}关系,故为${patternName}。月令${monthStrength},日主${strengthLevel},${strengthAnalysis.use_god_analysis.analysis}`; } // 精确大运流年分析 - 基于传统起运法 calculatePreciseFortune(baziChart, birth_date, gender, name) { const birthDate = new Date(birth_date); const currentYear = new Date().getFullYear(); const currentAge = currentYear - birthDate.getFullYear(); // 1. 计算起运时间 const startLuckAge = this.calculateStartLuckAge(baziChart, birthDate, gender); // 2. 推算大运干支 const dayunSequence = this.calculateDayunSequence(baziChart, gender, startLuckAge); // 3. 确定当前大运 const currentDayun = this.getCurrentDayun(dayunSequence, currentAge); // 4. 分析当前流年 const currentYearAnalysis = this.analyzeCurrentYear(baziChart, currentYear, currentDayun); // 5. 未来十年预测 const nextDecadeForecast = this.generateDecadeForecast(baziChart, dayunSequence, currentAge); // 6. 详细流年分析 const detailedYearlyAnalysis = this.generateDetailedYearlyAnalysis(baziChart, currentDayun, currentYear, currentAge); return { current_age: currentAge, start_luck_age: startLuckAge, current_period: currentDayun ? `${currentDayun.start_age}-${currentDayun.end_age}岁 ${currentDayun.stem}${currentDayun.branch}大运` : '未起运', current_dayun: currentDayun, life_periods: dayunSequence, current_year_analysis: currentYearAnalysis, next_decade_forecast: nextDecadeForecast, dayun_analysis: this.analyzeDayunInfluence(baziChart, currentDayun), detailed_yearly_analysis: detailedYearlyAnalysis }; } // 计算起运年龄 calculateStartLuckAge(baziChart, birthDate, gender) { const birthYear = birthDate.getFullYear(); const birthMonth = birthDate.getMonth() + 1; const birthDay = birthDate.getDate(); // 判断阳年阴年 const yearStemIndex = this.heavenlyStems.indexOf(baziChart.year_pillar.stem); const isYangYear = yearStemIndex % 2 === 0; // 男命阳年、女命阴年顺行,男命阴年、女命阳年逆行 const isMale = gender === 'male' || gender === '男'; const isForward = (isMale && isYangYear) || (!isMale && !isYangYear); // 计算到下一个节气的天数(简化计算) let daysToNextTerm = 0; if (isForward) { // 顺行:计算到下一个节气的天数 daysToNextTerm = this.calculateDaysToNextTerm(birthMonth, birthDay); } else { // 逆行:计算到上一个节气的天数 daysToNextTerm = this.calculateDaysToPrevTerm(birthMonth, birthDay); } // 三天折一年 const startAge = Math.floor(daysToNextTerm / 3); return Math.max(1, startAge); // 最少1岁起运 } // 计算到下一个节气的天数(简化) calculateDaysToNextTerm(month, day) { const termDays = { 1: 4, 2: 19, 3: 6, 4: 21, 5: 5, 6: 21, 7: 6, 8: 21, 9: 6, 10: 22, 11: 7, 12: 23 }; const nextTermDay = termDays[month] || 15; if (day < nextTermDay) { return nextTermDay - day; } else { const nextMonth = month === 12 ? 1 : month + 1; const nextMonthTermDay = termDays[nextMonth] || 15; const daysInMonth = new Date(2024, month, 0).getDate(); return (daysInMonth - day) + nextMonthTermDay; } } // 计算到上一个节气的天数(简化) calculateDaysToPrevTerm(month, day) { const termDays = { 1: 4, 2: 19, 3: 6, 4: 21, 5: 5, 6: 21, 7: 6, 8: 21, 9: 6, 10: 22, 11: 7, 12: 23 }; const currentTermDay = termDays[month] || 15; if (day > currentTermDay) { return day - currentTermDay; } else { const prevMonth = month === 1 ? 12 : month - 1; const prevTermDay = termDays[prevMonth] || 15; return day + (30 - prevTermDay); // 简化计算 } } // 推算大运干支序列 calculateDayunSequence(baziChart, gender, startAge) { const monthStemIndex = this.heavenlyStems.indexOf(baziChart.month_pillar.stem); const monthBranchIndex = this.earthlyBranches.indexOf(baziChart.month_pillar.branch); // 判断顺逆 const yearStemIndex = this.heavenlyStems.indexOf(baziChart.year_pillar.stem); const isYangYear = yearStemIndex % 2 === 0; const isMale = gender === 'male' || gender === '男'; const isForward = (isMale && isYangYear) || (!isMale && !isYangYear); const dayunSequence = []; for (let i = 0; i < 8; i++) { // 计算8步大运 let stemIndex, branchIndex; if (isForward) { stemIndex = (monthStemIndex + i + 1) % 10; branchIndex = (monthBranchIndex + i + 1) % 12; } else { stemIndex = (monthStemIndex - i - 1 + 10) % 10; branchIndex = (monthBranchIndex - i - 1 + 12) % 12; } const startAgeForThisDayun = startAge + i * 10; const endAgeForThisDayun = startAgeForThisDayun + 9; const dayunStem = this.heavenlyStems[stemIndex]; const dayunBranch = this.earthlyBranches[branchIndex]; const dayunElement = this.getElementFromStem(dayunStem); const dayunTenGod = this.calculateTenGod(baziChart.day_master, dayunStem); dayunSequence.push({ period: i + 1, start_age: startAgeForThisDayun, end_age: endAgeForThisDayun, stem: dayunStem, branch: dayunBranch, element: dayunElement, ten_god: dayunTenGod, ganzhi: `${dayunStem}${dayunBranch}`, analysis: this.analyzeDayunPeriod(baziChart, dayunStem, dayunBranch, dayunTenGod) }); } return dayunSequence; } // 确定当前大运 getCurrentDayun(dayunSequence, currentAge) { return dayunSequence.find(dayun => currentAge >= dayun.start_age && currentAge <= dayun.end_age ) || null; } // 分析大运时期特征 analyzeDayunPeriod(baziChart, dayunStem, dayunBranch, dayunTenGod) { const dayElement = baziChart.day_master_element; const dayunElement = this.getElementFromStem(dayunStem); const relation = this.getElementRelation(dayunElement, dayElement); const strengthAnalysis = baziChart.element_strength; let analysis = ''; // 基于十神分析大运特征 const tenGodAnalysis = { '比肩': '此运期适合合作发展,朋友助力较多,但要注意财务管理', '劫财': '此运期竞争激烈,需要谨慎理财,避免因朋友破财', '食神': '此运期创意丰富,适合艺术创作,身体健康,子女运佳', '伤官': '此运期才华横溢,适合创新突破,但要注意言行谨慎', '正财': '此运期财运稳定,适合投资理财,感情婚姻顺利', '偏财': '此运期财运机会多,适合投机投资,但要控制风险', '正官': '此运期事业发展,适合求职升迁,社会地位提升', '七杀': '此运期挑战较多,需要勇敢面对,适合开拓新领域', '正印': '此运期学习运佳,适合进修深造,贵人相助较多', '偏印': '此运期思维敏锐,适合技术研发,但要注意健康' }; analysis = tenGodAnalysis[dayunTenGod] || '此运期需要根据具体情况灵活应对'; // 结合日主旺衰调整分析 const strengthLevel = strengthAnalysis.strength_level; if (strengthLevel === '偏弱' || strengthLevel === '太弱') { if (['比肩', '劫财', '正印', '偏印'].includes(dayunTenGod)) { analysis += ',此运对您特别有利,能够增强个人实力'; } else if (['正官', '七杀', '食神', '伤官'].includes(dayunTenGod)) { analysis += ',此运压力较大,需要谨慎应对,多寻求帮助'; } } else if (strengthLevel === '偏旺' || strengthLevel === '太旺') { if (['正官', '七杀', '食神', '伤官', '正财', '偏财'].includes(dayunTenGod)) { analysis += ',此运能够很好地发挥您的才能,适合积极进取'; } else if (['比肩', '劫财', '正印', '偏印'].includes(dayunTenGod)) { analysis += ',此运可能过于强势,需要学会收敛和包容'; } } return analysis; } // 分析当前流年 analyzeCurrentYear(baziChart, currentYear, currentDayun) { const yearStemIndex = (currentYear - 4) % 10; const yearBranchIndex = (currentYear - 4) % 12; const yearStem = this.heavenlyStems[yearStemIndex]; const yearBranch = this.earthlyBranches[yearBranchIndex]; const yearTenGod = this.calculateTenGod(baziChart.day_master, yearStem); let analysis = `${currentYear}年${yearStem}${yearBranch},流年十神为${yearTenGod}。`; // 流年与大运的关系 if (currentDayun) { const dayunYearRelation = this.getElementRelation( this.getElementFromStem(yearStem), this.getElementFromStem(currentDayun.stem) ); if (dayunYearRelation === 'same') { analysis += '流年与大运同气,运势较为稳定。'; } else if (dayunYearRelation === 'generate') { analysis += '流年生大运,有贵人相助,运势向好。'; } else if (dayunYearRelation === 'overcome') { analysis += '流年克大运,需要谨慎应对,避免冲动。'; } else if (dayunYearRelation === 'beGenerated') { analysis += '大运生流年,付出较多,但有收获。'; } else if (dayunYearRelation === 'beOvercome') { analysis += '大运克流年,压力较大,需要坚持。'; } } // 基于流年十神的具体建议 const yearAdvice = { '比肩': '适合合作发展,朋友运佳,但要注意理财', '劫财': '竞争激烈,需要谨慎投资,避免借贷', '食神': '创意丰富,身体健康,适合艺术创作', '伤官': '才华横溢,但要注意言行,避免口舌是非', '正财': '财运稳定,适合投资,感情顺利', '偏财': '财运机会多,但要控制风险,避免投机', '正官': '事业运佳,适合求职升迁,社会地位提升', '七杀': '挑战较多,需要勇敢面对,适合开拓', '正印': '学习运佳,贵人相助,适合进修', '偏印': '思维敏锐,适合研发,但要注意健康' }; analysis += yearAdvice[yearTenGod] || '需要根据具体情况灵活应对'; return analysis; } // 生成未来十年预测 generateDecadeForecast(baziChart, dayunSequence, currentAge) { const nextDecade = dayunSequence.filter(dayun => dayun.start_age > currentAge && dayun.start_age <= currentAge + 10 ); if (nextDecade.length === 0) { return '未来十年继续当前大运的影响,建议保持稳定发展。'; } let forecast = '未来十年运势展望:'; nextDecade.forEach(dayun => { forecast += `${dayun.start_age}-${dayun.end_age}岁${dayun.ganzhi}运,${dayun.analysis}。`; }); return forecast; } // 分析大运对命局的影响 analyzeDayunInfluence(baziChart, currentDayun) { if (!currentDayun) { return '尚未起运,以原局为主。'; } const dayElement = baziChart.day_master_element; const dayunElement = this.getElementFromStem(currentDayun.stem); const dayunBranchElement = this.getBranchElement(currentDayun.branch); const strengthAnalysis = baziChart.element_strength; let influence = `当前${currentDayun.ganzhi}大运,天干${currentDayun.stem}为${currentDayun.ten_god},`; // 分析大运对日主的影响 const stemRelation = this.getElementRelation(dayunElement, dayElement); const branchRelation = this.getElementRelation(dayunBranchElement, dayElement); if (stemRelation === 'same' || stemRelation === 'beGenerated') { influence += '天干有利于日主,'; } else if (stemRelation === 'overcome' || stemRelation === 'beOvercome') { influence += '天干对日主有制约,'; } if (branchRelation === 'same' || branchRelation === 'beGenerated') { influence += '地支有利于日主。'; } else if (branchRelation === 'overcome' || branchRelation === 'beOvercome') { influence += '地支对日主有制约。'; } // 结合原局旺衰给出建议 const strengthLevel = strengthAnalysis.strength_level; if (strengthLevel === '偏弱' || strengthLevel === '太弱') { if (stemRelation === 'same' || stemRelation === 'beGenerated') { influence += '此运有助于增强实力,宜积极进取。'; } else { influence += '此运压力较大,宜谨慎保守,寻求帮助。'; } } else if (strengthLevel === '偏旺' || strengthLevel === '太旺') { if (stemRelation === 'overcome' || stemRelation === 'generate') { influence += '此运有助于发挥才能,宜主动出击。'; } else { influence += '此运可能过于强势,宜学会收敛。'; } } return influence; } generateComprehensiveLifeGuidance(baziChart, patternAnalysis, wuxingAnalysis, gender, name) { return { comprehensive_summary: `${name},根据您的八字分析,您具有良好的命理基础,建议充分发挥自身优势`, career_guidance: '在事业发展方面,建议选择稳定发展的行业,注重积累经验', wealth_guidance: '在财富管理方面,建议稳健投资,避免投机', relationship_guidance: '在感情关系方面,建议真诚待人,重视家庭和谐', health_guidance: '在健康养生方面,建议规律作息,适度运动', self_improvement: '在个人修养方面,建议多读书学习,提升内在品质' }; } generateModernApplications(baziChart, patternAnalysis, gender, name) { return { daily_life: `${name}适合规律的生活方式,建议早睡早起,保持良好习惯`, professional_development: '职业发展建议选择稳定的行业,注重技能提升', interpersonal_skills: '人际交往中建议真诚待人,建立良好的人际关系', timing_guidance: '重要决策建议在春秋两季进行,避免夏冬季节的冲动决定' }; } // 生成四柱详细解释 generatePillarInterpretations(baziChart, gender, name) { const interpretations = { year_pillar: this.interpretYearPillar(baziChart.year_pillar, baziChart.day_master, gender, name), month_pillar: this.interpretMonthPillar(baziChart.month_pillar, baziChart.day_master, baziChart.element_strength, gender, name), day_pillar: this.interpretDayPillar(baziChart.day_pillar, baziChart.element_strength, gender, name), hour_pillar: this.interpretHourPillar(baziChart.hour_pillar, baziChart.day_master, gender, name) }; return interpretations; } // 年柱解释 interpretYearPillar(yearPillar, dayMaster, gender, name) { const tenGod = yearPillar.ten_god; const stemElement = yearPillar.element; const branchElement = this.getBranchElement(yearPillar.branch); const hiddenStems = yearPillar.hidden_stems; let interpretation = `${name}的年柱${yearPillar.stem}${yearPillar.branch},天干${yearPillar.stem}为${stemElement},与日主${dayMaster}形成${tenGod}关系。`; // 基于十神关系的年柱含义 const yearMeanings = { '正官': '祖上有官贵之气,家族重视名誉和地位,早年受到良好的道德教育,具有正统的价值观念', '七杀': '祖上性格刚强,家族具有开拓精神,早年环境较为严格,培养了坚韧不拔的性格', '正财': '祖上勤俭持家,家族注重实际和稳定,早年生活环境务实,培养了良好的理财观念', '偏财': '祖上善于经营,家族具有商业头脑,早年接触多元化环境,培养了灵活的思维方式', '正印': '祖上重视文化教育,家族书香门第,早年受到良好的文化熏陶,具有深厚的学习基础', '偏印': '祖上思维独特,家族具有创新精神,早年环境多变,培养了独立思考的能力', '食神': '祖上性格温和,家族和睦融洽,早年生活环境宽松,培养了乐观开朗的性格', '伤官': '祖上才华横溢,家族重视才能表现,早年环境活跃,培养了强烈的表现欲望', '比肩': '祖上自立自强,家族注重独立精神,早年学会自力更生,培养了坚强的意志力', '劫财': '祖上竞争意识强,家族环境较为复杂,早年经历一些波折,培养了应变能力' }; interpretation += yearMeanings[tenGod] || '年柱体现了祖辈的影响和早年的成长环境'; // 地支藏干的影响 if (hiddenStems.length > 1) { interpretation += `。地支${yearPillar.branch}藏干${hiddenStems.join('、')},表明祖辈影响具有多重层面,`; interpretation += `主要体现在${this.getHiddenStemInfluence(hiddenStems[0], dayMaster)}方面。`; } return interpretation; } // 月柱解释 interpretMonthPillar(monthPillar, dayMaster, strengthAnalysis, gender, name) { const tenGod = monthPillar.ten_god; const monthStrength = strengthAnalysis.month_strength; const strengthLevel = strengthAnalysis.strength_level; let interpretation = `${name}的月柱${monthPillar.stem}${monthPillar.branch},为月令提纲,天干${monthPillar.stem}与日主${dayMaster}形成${tenGod}关系,月令${monthStrength}。`; // 基于月令十神的详细解释 const monthMeanings = { '正官': `月令正官${monthStrength},表明${name}具有正统的价值观念和强烈的责任感。青年时期适合在正规机构发展,重视社会地位和名誉。${gender === '男性' ? '男命月令正官,事业心强,适合从政或管理工作' : '女命月令正官,夫星得力,婚姻美满,配偶有能力'}`, '七杀': `月令七杀${monthStrength},表明${name}性格刚毅果断,具有很强的开拓精神和竞争意识。青年时期充满挑战,需要勇敢面对困难。${gender === '男性' ? '男命月令七杀,适合军警或竞争激烈的行业' : '女命月令七杀,个性较强,需要找到能够理解和包容的伴侣'}`, '正财': `月令正财${monthStrength},表明${name}具有很好的理财能力和商业头脑。青年时期财运稳定,适合从事实业或金融相关工作。${gender === '男性' ? '男命月令正财,妻财并美,婚姻幸福' : '女命月令正财,理财有道,家庭经济稳定'}`, '偏财': `月令偏财${monthStrength},表明${name}具有敏锐的商业嗅觉和投资眼光。青年时期财运机会多,但需要控制风险。${gender === '男性' ? '男命月令偏财,异性缘佳,但需要专一' : '女命月令偏财,善于理财,但要避免投机'}`, '正印': `月令正印${monthStrength},表明${name}具有很强的学习能力和文化修养。青年时期学业有成,适合从事教育或文化工作。${gender === '男性' ? '男命月令正印,母亲贤能,得到很好的教育' : '女命月令正印,知书达理,是贤妻良母的典型'}`, '偏印': `月令偏印${monthStrength},表明${name}思维敏锐独特,具有很强的直觉和创新能力。青年时期适合从事技术或研发工作。${gender === '男性' ? '男命月令偏印,思维独特,适合技术创新' : '女命月令偏印,聪明机智,但要注意与长辈的关系'}`, '食神': `月令食神${monthStrength},表明${name}性格温和乐观,具有很好的表达能力和艺术天赋。青年时期生活愉快,适合从事文艺或服务行业。${gender === '男性' ? '男命月令食神,子女缘佳,晚年享福' : '女命月令食神,温柔贤淑,子女有出息'}`, '伤官': `月令伤官${monthStrength},表明${name}聪明机敏,具有很强的表现欲和创新精神。青年时期才华横溢,但要注意言行谨慎。${gender === '男性' ? '男命月令伤官,才华出众,但要注意克制' : '女命月令伤官,聪明美丽,但要注意感情问题'}`, '比肩': `月令比肩${monthStrength},表明${name}性格自立自强,具有很强的独立能力。青年时期适合与朋友合作,但要注意理财。${gender === '男性' ? '男命月令比肩,朋友多助,但要防破财' : '女命月令比肩,独立性强,但要注意夫妻关系'}`, '劫财': `月令劫财${monthStrength},表明${name}竞争意识强,具有很好的应变能力。青年时期竞争激烈,需要谨慎理财。${gender === '男性' ? '男命月令劫财,兄弟朋友多,但要防小人' : '女命月令劫财,性格较强,要注意与配偶的关系'}` }; interpretation += monthMeanings[tenGod] || '月柱体现了青年时期的发展特点和人生方向'; // 结合日主旺衰的分析 if (strengthLevel === '太旺' || strengthLevel === '偏旺') { interpretation += `。由于日主${strengthLevel},月令的影响更加明显,建议适度收敛,发挥正面作用。`; } else if (strengthLevel === '太弱' || strengthLevel === '偏弱') { interpretation += `。由于日主${strengthLevel},需要月令的生扶,建议充分发挥月令的积极作用。`; } return interpretation; } // 日柱解释 interpretDayPillar(dayPillar, strengthAnalysis, gender, name) { const dayStem = dayPillar.stem; const dayBranch = dayPillar.branch; const dayElement = dayPillar.element; const strengthLevel = strengthAnalysis.strength_level; const useGodAnalysis = strengthAnalysis.use_god_analysis; let interpretation = `${name}的日柱${dayStem}${dayBranch},日主${dayStem}为${dayElement}命,${strengthLevel}。`; // 日主特性分析 const dayMasterTraits = { '甲': `甲木日主,如参天大树,性格正直挺拔,具有开拓进取的精神。${gender === '男性' ? '男命甲木,天生具有领导气质,适合开创性事业' : '女命甲木,性格独立坚强,是现代女性的典型'}`, '乙': `乙木日主,如花草藤蔓,性格柔韧灵活,具有很强的适应能力。${gender === '男性' ? '男命乙木,温文尔雅,善于协调人际关系' : '女命乙木,温柔美丽,具有很好的艺术天赋'}`, '丙': `丙火日主,如太阳之火,性格光明磊落,具有很强的感染力。${gender === '男性' ? '男命丙火,热情开朗,天生的领导者' : '女命丙火,活泼大方,人缘极佳'}`, '丁': `丁火日主,如星火烛光,性格温暖细腻,具有敏锐的洞察力。${gender === '男性' ? '男命丁火,思维敏锐,适合文化创意工作' : '女命丁火,温柔体贴,是理想的贤内助'}`, '戊': `戊土日主,如高山大地,性格稳重厚实,具有很强的包容心。${gender === '男性' ? '男命戊土,稳重可靠,是值得信赖的伙伴' : '女命戊土,贤惠持家,家庭和睦'}`, '己': `己土日主,如田园沃土,性格温和包容,具有很好的亲和力。${gender === '男性' ? '男命己土,温和谦逊,善于照顾他人' : '女命己土,温柔贤淑,是标准的贤妻良母'}`, '庚': `庚金日主,如刀剑钢铁,性格刚毅果断,具有很强的原则性。${gender === '男性' ? '男命庚金,刚毅果断,适合需要决断力的工作' : '女命庚金,性格较强,需要找到能够欣赏的伴侣'}`, '辛': `辛金日主,如珠宝首饰,性格精致优雅,具有很好的审美能力。${gender === '男性' ? '男命辛金,注重品质,追求完美' : '女命辛金,美丽优雅,具有很好的品味'}`, '壬': `壬水日主,如江河大海,性格胸怀宽广,具有很强的包容性。${gender === '男性' ? '男命壬水,智慧深邃,适合需要智慧的工作' : '女命壬水,温柔如水,善解人意'}`, '癸': `癸水日主,如雨露甘霖,性格纯净灵性,具有很强的感知能力。${gender === '男性' ? '男命癸水,直觉敏锐,具有很好的洞察力' : '女命癸水,温柔敏感,需要细心呵护'}` }; interpretation += dayMasterTraits[dayStem] || '日主体现了个人的核心性格特征'; // 日支配偶宫分析 const spouseAnalysis = this.analyzeSpousePalace(dayBranch, dayStem, gender); interpretation += `。日支${dayBranch}为配偶宫,${spouseAnalysis}`; // 结合用神分析 interpretation += `。${useGodAnalysis.analysis}`; return interpretation; } // 时柱解释 interpretHourPillar(hourPillar, dayMaster, gender, name) { const tenGod = hourPillar.ten_god; const hourStem = hourPillar.stem; const hourBranch = hourPillar.branch; let interpretation = `${name}的时柱${hourStem}${hourBranch},天干${hourStem}与日主${dayMaster}形成${tenGod}关系。`; // 基于十神关系的时柱含义 const hourMeanings = { '正官': `时柱正官,表明${name}晚年享有很好的社会地位和名誉,子女有出息,能够光宗耀祖。${gender === '男性' ? '男命时柱正官,晚年事业有成,受人尊敬' : '女命时柱正官,子女贵气,晚年享福'}`, '七杀': `时柱七杀,表明${name}晚年仍然保持进取精神,子女性格刚强,具有开拓能力。${gender === '男性' ? '男命时柱七杀,晚年仍有作为,子女能干' : '女命时柱七杀,子女个性强,需要正确引导'}`, '正财': `时柱正财,表明${name}晚年财运稳定,子女孝顺,能够享受天伦之乐。${gender === '男性' ? '男命时柱正财,晚年财运佳,子女孝顺' : '女命时柱正财,子女有财运,晚年不愁吃穿'}`, '偏财': `时柱偏财,表明${name}晚年财运机会多,子女善于经营,具有商业头脑。${gender === '男性' ? '男命时柱偏财,晚年财源广进,子女有商业天赋' : '女命时柱偏财,子女理财有道,晚年富足'}`, '正印': `时柱正印,表明${name}晚年受到很好的照顾,子女孝顺有文化,重视教育。${gender === '男性' ? '男命时柱正印,晚年享清福,子女有文化' : '女命时柱正印,子女孝顺,晚年安详'}`, '偏印': `时柱偏印,表明${name}晚年思维仍然敏锐,子女聪明独特,具有创新能力。${gender === '男性' ? '男命时柱偏印,晚年仍有创新,子女聪明' : '女命时柱偏印,子女有特殊才能,但要注意沟通'}`, '食神': `时柱食神,表明${name}晚年生活愉快,子女温和孝顺,家庭和睦。${gender === '男性' ? '男命时柱食神,晚年享福,子女孝顺' : '女命时柱食神,子女温顺,晚年幸福'}`, '伤官': `时柱伤官,表明${name}晚年仍然才华横溢,子女聪明有才,但要注意引导。${gender === '男性' ? '男命时柱伤官,晚年仍有才华,子女聪明' : '女命时柱伤官,子女有才华,但要注意教育方式'}`, '比肩': `时柱比肩,表明${name}晚年朋友多助,子女独立自强,具有很好的自立能力。${gender === '男性' ? '男命时柱比肩,晚年朋友多,子女自立' : '女命时柱比肩,子女独立,晚年有依靠'}`, '劫财': `时柱劫财,表明${name}晚年需要注意理财,子女竞争意识强,要正确引导。${gender === '男性' ? '男命时柱劫财,晚年要防破财,子女要正确引导' : '女命时柱劫财,子女个性强,要注意教育'}` }; interpretation += hourMeanings[tenGod] || '时柱体现了晚年运势和子女关系'; // 时支子女宫分析 const childrenAnalysis = this.analyzeChildrenPalace(hourBranch, gender); interpretation += `时支${hourBranch}为子女宫,${childrenAnalysis}。`; return interpretation; } // 配偶宫分析 analyzeSpousePalace(dayBranch, dayStem, gender) { const branchElement = this.getBranchElement(dayBranch); const dayElement = this.getElementFromStem(dayStem); const relation = this.getElementRelation(branchElement, dayElement); let analysis = ''; if (relation === 'same') { analysis = `配偶与您五行相同,性格相似,容易产生共鸣,但也要注意避免过于相似而缺乏互补`; } else if (relation === 'generate') { analysis = `配偶能够帮助您,是您的贵人,婚姻关系和谐,配偶对您的事业发展有积极作用`; } else if (relation === 'beGenerated') { analysis = `您对配偶付出较多,配偶依赖性较强,需要您的照顾和支持`; } else if (relation === 'overcome') { analysis = `您在婚姻中较为主导,配偶性格相对温和,但要注意不要过于强势`; } else if (relation === 'beOvercome') { analysis = `配偶性格较强,在婚姻中有一定的主导权,您需要学会适当的包容和理解`; } // 地支特性分析 const branchTraits = { '子': '配偶聪明机智,善于变通,但有时较为感性', '丑': '配偶稳重踏实,勤劳持家,是可靠的伴侣', '寅': '配偶性格开朗,有进取心,喜欢新鲜事物', '卯': '配偶温和善良,有艺术气质,注重生活品质', '辰': '配偶包容性强,有领导能力,事业心较重', '巳': '配偶聪明美丽,有魅力,但有时较为敏感', '午': '配偶热情开朗,有活力,社交能力强', '未': '配偶温柔体贴,顾家,有很好的亲和力', '申': '配偶机智灵活,有商业头脑,适应能力强', '酉': '配偶注重外表,有品味,追求完美', '戌': '配偶忠诚可靠,有责任心,是值得信赖的伴侣', '亥': '配偶善良纯真,有同情心,但有时较为理想化' }; analysis += `。${branchTraits[dayBranch] || '配偶具有独特的性格特征'}`; return analysis; } // 子女宫分析 analyzeChildrenPalace(hourBranch, gender) { const branchTraits = { '子': '子女聪明活泼,学习能力强,但需要正确引导', '丑': '子女稳重踏实,做事认真,是可靠的孩子', '寅': '子女性格开朗,有领导才能,适合培养其独立性', '卯': '子女温和善良,有艺术天赋,适合文艺方面的培养', '辰': '子女有组织能力,适合培养其管理才能', '巳': '子女聪明机智,反应敏锐,但要注意其情绪管理', '午': '子女热情活泼,有表现欲,适合培养其特长', '未': '子女温顺听话,有同情心,是贴心的孩子', '申': '子女机智灵活,适应能力强,有商业天赋', '酉': '子女注重细节,追求完美,适合精细化培养', '戌': '子女忠诚可靠,有责任心,是值得骄傲的孩子', '亥': '子女善良纯真,有想象力,需要保护其天真本性' }; return branchTraits[hourBranch] || '子女具有独特的性格特征,需要因材施教'; } // 地支藏干影响分析 getHiddenStemInfluence(hiddenStem, dayMaster) { const tenGod = this.calculateTenGod(dayMaster, hiddenStem); const influences = { '正官': '正统教育和道德品格', '七杀': '严格管教和竞争意识', '正财': '实用主义和理财观念', '偏财': '商业思维和灵活应变', '正印': '文化教育和学术修养', '偏印': '独特思维和创新能力', '食神': '乐观心态和艺术天赋', '伤官': '表现欲望和创新精神', '比肩': '独立精神和自立能力', '劫财': '竞争意识和应变能力' }; return influences[tenGod] || '综合素质的培养'; } calculateLunarInfo(birth_date) { // 简化的农历信息计算 return { lunar_date: '农历信息', lunar_month: '农历月份', solar_term: '节气信息' }; } // 以下是从logic/bazi.txt中完整实现的所有辅助函数 generateSpecificCareerAdvice(patternType, dayElement, gender) { const careerAdvice = { '正格': { '木': gender === 'male' ? '适合教育、文化、创意产业,发挥您的创新能力' : '适合艺术设计、园林绿化、文教事业', '火': gender === 'male' ? '适合销售、媒体、演艺、公关等需要表现力的工作' : '适合服务业、美容、娱乐行业', '土': gender === 'male' ? '适合建筑、房地产、农业、管理等稳定行业' : '适合行政管理、会计、后勤保障工作', '金': gender === 'male' ? '适合金融、法律、机械、军警等需要原则性的工作' : '适合珠宝、金融、精密制造业', '水': gender === 'male' ? '适合贸易、物流、信息技术、研究工作' : '适合旅游、水产、清洁、流通行业' } }; return careerAdvice[patternType]?.[dayElement] || '根据您的特质,建议选择能发挥个人优势的稳定职业'; } getCareerFocusAreas(patternType) { const focusAreas = { '正格': '传统行业、稳定发展、技能积累', '从格': '新兴行业、快速变化、创新突破', '化格': '服务行业、人际关系、沟通协调' }; return focusAreas[patternType] || '综合发展'; } generateWealthStrategy(dayElement, patternType, gender) { const strategies = { '木': '投资成长性行业,如科技、教育、环保等,避免过度投机', '火': '适合短期投资,关注热门行业,但需控制风险', '土': '稳健投资为主,房地产、基金定投,长期持有', '金': '贵金属、银行理财、保险等保值增值产品', '水': '流动性投资,股票、外汇,但需谨慎操作' }; return strategies[dayElement] || '建议多元化投资,分散风险'; } getWealthManagementStyle(patternType) { const styles = { '正格': '稳健保守,长期规划', '从格': '积极进取,把握机会', '化格': '灵活应变,适时调整' }; return styles[patternType] || '平衡发展'; } generateRelationshipAdvice(dayElement, gender, patternType) { const advice = { '木': gender === 'male' ? '寻找温柔体贴、有艺术气质的伴侣,重视精神交流' : '适合成熟稳重、有责任心的伴侣,互相扶持成长', '火': gender === 'male' ? '适合活泼开朗、善于交际的伴侣,共同享受生活' : '寻找沉稳内敛、能包容您热情的伴侣', '土': gender === 'male' ? '适合贤惠持家、踏实可靠的伴侣,共建温馨家庭' : '寻找有进取心、能给您安全感的伴侣', '金': gender === 'male' ? '适合聪明独立、有原则的伴侣,互相尊重' : '寻找温和包容、能理解您原则性的伴侣', '水': gender === 'male' ? '适合智慧灵活、善解人意的伴侣,心灵相通' : '寻找稳重可靠、能给您依靠的伴侣' }; return advice[dayElement] || '寻找性格互补、价值观相近的伴侣'; } getIdealPartnerTraits(dayElement, gender) { const traits = { '木': gender === 'male' ? '温柔、有艺术气质' : '成熟、有责任心', '火': gender === 'male' ? '活泼、善于交际' : '沉稳、包容性强', '土': gender === 'male' ? '贤惠、踏实可靠' : '进取、有安全感', '金': gender === 'male' ? '聪明、有原则' : '温和、理解力强', '水': gender === 'male' ? '智慧、善解人意' : '稳重、可依靠' }; return traits[dayElement] || '性格互补'; } generateHealthAdvice(dayElement, distribution) { const advice = { '木': '注意肝胆保养,多做户外运动,保持心情舒畅,避免过度劳累', '火': '注意心血管健康,控制情绪波动,适度运动,避免熬夜', '土': '注意脾胃消化,规律饮食,适量运动,避免久坐不动', '金': '注意呼吸系统,保持空气清新,适度锻炼,避免过度紧张', '水': '注意肾脏保养,充足睡眠,温补调理,避免过度疲劳' }; return advice[dayElement] || '保持规律作息,均衡饮食,适度运动'; } getHealthFocusAreas(dayElement) { const areas = { '木': '肝胆、筋骨、眼睛', '火': '心脏、血管、小肠', '土': '脾胃、肌肉、口腔', '金': '肺部、大肠、皮肤', '水': '肾脏、膀胱、耳朵' }; return areas[dayElement] || '整体健康'; } generateSelfDevelopmentPlan(patternType, dayElement, gender) { return `根据您的${patternType}格局和${dayElement}日主特质,建议重点培养领导能力、沟通技巧和专业技能,${gender === 'male' ? '发挥男性的决断力和责任感' : '发挥女性的细致和包容性'},在人生道路上稳步前进。`; } getPersonalGrowthAreas(patternType) { const areas = { '正格': '领导能力、专业技能、道德修养', '从格': '创新思维、适应能力、机会把握', '化格': '沟通协调、人际关系、灵活应变' }; return areas[patternType] || '综合素质'; } getDailyLifeStyle(patternType, dayElement) { return `${patternType}格局配合${dayElement}元素的特质,适合规律而有序的生活方式`; } getIdealLivingEnvironment(dayElement) { const environments = { '木': '绿化良好、空气清新的环境', '火': '阳光充足、通风良好的环境', '土': '稳定安静、地势平坦的环境', '金': '整洁有序、空间宽敞的环境', '水': '临水而居、环境清幽的环境' }; return environments[dayElement] || '舒适宜居的环境'; } getOptimalSchedule(patternType) { const schedules = { '正格': '早睡早起,规律作息', '从格': '灵活安排,适应变化', '化格': '劳逸结合,张弛有度' }; return schedules[patternType] || '规律健康的作息'; } getProfessionalPath(patternType, gender) { return `${patternType}格局适合${gender === 'male' ? '稳步上升的职业发展路径' : '平衡发展的职业规划'}`; } getSkillDevelopmentAreas(patternType) { const areas = { '正格': '专业技能、管理能力', '从格': '创新能力、适应技能', '化格': '沟通技巧、协调能力' }; return areas[patternType] || '综合技能'; } getInterpersonalStrengths(patternType, dayElement) { return `${patternType}格局和${dayElement}元素赋予您独特的人际交往优势`; } getNetworkingStrategy(patternType) { const strategies = { '正格': '建立稳定的人际关系网络', '从格': '广泛接触,把握机会', '化格': '灵活应对,和谐相处' }; return strategies[patternType] || '真诚待人'; } getOptimalDecisionTiming(dayElement, patternType) { const timings = { '木': '春季和上午时段', '火': '夏季和中午时段', '土': '四季交替和下午时段', '金': '秋季和傍晚时段', '水': '冬季和夜晚时段' }; return timings[dayElement] || '适宜的时机'; } getUnfavorableTiming(dayElement) { const unfavorable = { '木': '秋季金旺时期', '火': '冬季水旺时期', '土': '春季木旺时期', '金': '夏季火旺时期', '水': '夏季火旺时期' }; return unfavorable[dayElement] || '不利时期'; } // 生成详细流年分析 generateDetailedYearlyAnalysis(baziChart, currentDayun, currentYear, currentAge) { const yearlyAnalysis = []; // 分析当前年及未来5年 for (let i = 0; i < 6; i++) { const analysisYear = currentYear + i; const analysisAge = currentAge + i; // 计算流年干支 const yearStemIndex = (analysisYear - 4) % 10; const yearBranchIndex = (analysisYear - 4) % 12; const yearStem = this.heavenlyStems[yearStemIndex]; const yearBranch = this.earthlyBranches[yearBranchIndex]; const yearTenGod = this.calculateTenGod(baziChart.day_master, yearStem); // 确定该年的大运 const yearDayun = this.getDayunForAge(baziChart, analysisAge, currentDayun); // 生成详细分析 const yearAnalysis = { year: analysisYear, age: analysisAge, year_ganzhi: `${yearStem}${yearBranch}`, year_stem: yearStem, year_branch: yearBranch, year_ten_god: yearTenGod, dayun_period: yearDayun ? `${yearDayun.ganzhi}大运` : '未起运', overall_fortune: this.analyzeYearlyOverallFortune(baziChart, yearStem, yearBranch, yearTenGod, yearDayun), career_fortune: this.analyzeYearlyCareerFortune(yearTenGod, yearDayun, baziChart.element_strength), wealth_fortune: this.analyzeYearlyWealthFortune(yearTenGod, yearStem, baziChart), relationship_fortune: this.analyzeYearlyRelationshipFortune(yearTenGod, yearBranch, baziChart, analysisAge), health_fortune: this.analyzeYearlyHealthFortune(yearBranch, baziChart.day_master_element), monthly_highlights: this.generateMonthlyHighlights(analysisYear, yearTenGod, baziChart), key_advice: this.generateYearlyKeyAdvice(yearTenGod, yearDayun, baziChart.element_strength) }; yearlyAnalysis.push(yearAnalysis); } return yearlyAnalysis; } // 获取指定年龄的大运 getDayunForAge(baziChart, age, currentDayun) { // 如果有当前大运且年龄在范围内,返回当前大运 if (currentDayun && age >= currentDayun.start_age && age <= currentDayun.end_age) { return currentDayun; } // 否则需要重新计算(简化处理) return currentDayun; } // 分析年度整体运势 analyzeYearlyOverallFortune(baziChart, yearStem, yearBranch, yearTenGod, yearDayun) { const dayElement = baziChart.day_master_element; const yearElement = this.getElementFromStem(yearStem); const yearBranchElement = this.getBranchElement(yearBranch); const strengthLevel = baziChart.element_strength.strength_level; let fortune = ''; // 基于流年十神的整体运势 const fortuneByTenGod = { '正官': '整体运势稳定向上,适合求职升迁,社会地位有所提升,但要注意遵守规则', '七杀': '整体运势充满挑战,压力较大,但也是突破的好时机,需要勇敢面对困难', '正财': '整体运势平稳,财运稳定,适合投资理财,感情生活和谐', '偏财': '整体运势机会较多,财运有起伏,适合把握机会,但要控制风险', '正印': '整体运势有贵人相助,学习运佳,适合进修提升,身体健康', '偏印': '整体运势变化较多,思维活跃,适合创新研发,但要注意健康', '食神': '整体运势轻松愉快,创意丰富,适合艺术创作,身心愉悦', '伤官': '整体运势才华横溢,表现机会多,但要注意言行谨慎,避免冲突', '比肩': '整体运势朋友助力多,适合合作发展,但要注意理财,防止破财', '劫财': '整体运势竞争激烈,需要谨慎理财,防范小人,但也有突破机会' }; fortune = fortuneByTenGod[yearTenGod] || '整体运势需要根据具体情况灵活应对'; // 结合日主旺衰调整 if (strengthLevel === '偏弱' || strengthLevel === '太弱') { if (['比肩', '劫财', '正印', '偏印'].includes(yearTenGod)) { fortune += ',此年对您特别有利,能够增强实力'; } else { fortune += ',此年压力较大,需要寻求帮助和支持'; } } else if (strengthLevel === '偏旺' || strengthLevel === '太旺') { if (['正官', '七杀', '食神', '伤官', '正财', '偏财'].includes(yearTenGod)) { fortune += ',此年能够很好地发挥才能,适合积极进取'; } else { fortune += ',此年可能过于强势,需要学会收敛'; } } return fortune; } // 分析年度事业运势 analyzeYearlyCareerFortune(yearTenGod, yearDayun, strengthAnalysis) { const careerFortunes = { '正官': '事业运势极佳,适合求职、升迁或转换到更正规的机构,领导认可度高', '七杀': '事业运势充满挑战,适合开拓新领域或接受有挑战性的工作,需要勇气和决心', '正财': '事业运势稳定,适合从事实业或与金融相关的工作,收入稳定增长', '偏财': '事业运势机会多变,适合从事销售、投资或多元化经营,但要控制风险', '正印': '事业运势有贵人相助,适合从事教育、文化或需要专业知识的工作', '偏印': '事业运势适合技术创新,从事研发或需要独特思维的工作,但要注意与同事关系', '食神': '事业运势轻松愉快,适合从事文艺、餐饮或服务行业,工作环境和谐', '伤官': '事业运势才华得以发挥,适合从事创意、媒体或表演相关工作,但要注意人际关系', '比肩': '事业运势适合合作发展,与同事关系良好,但要注意避免合作中的利益冲突', '劫财': '事业运势竞争激烈,需要防范同事竞争,但也有机会在竞争中脱颖而出' }; return careerFortunes[yearTenGod] || '事业运势需要根据具体情况把握机会'; } // 分析年度财运 analyzeYearlyWealthFortune(yearTenGod, yearStem, baziChart) { const wealthFortunes = { '正官': '财运稳定,主要来源于正当收入,适合稳健投资,避免投机', '七杀': '财运有波动,需要通过努力获得,适合高风险高回报的投资,但要谨慎', '正财': '财运极佳,收入稳定增长,适合各种投资理财,是积累财富的好时机', '偏财': '财运机会多,有意外之财的可能,适合投机投资,但要控制贪心', '正印': '财运平稳,主要通过知识技能获得收入,不适合大额投资', '偏印': '财运变化较大,收入来源多样化,适合技术投资,但要防范风险', '食神': '财运轻松获得,通过才艺或服务获得收入,适合小额稳健投资', '伤官': '财运通过才华获得,收入可能不稳定,需要合理规划财务', '比肩': '财运需要与人合作获得,但要防范合作中的财务纠纷', '劫财': '财运容易破财,需要谨慎理财,避免借贷和担保' }; return wealthFortunes[yearTenGod] || '财运需要根据具体情况合理规划'; } // 分析年度感情运势 analyzeYearlyRelationshipFortune(yearTenGod, yearBranch, baziChart, age) { const relationshipFortunes = { '正官': '感情运势稳定,适合结婚或确定关系,对方条件较好,关系正式', '七杀': '感情运势有挑战,可能遇到性格强势的对象,需要磨合和理解', '正财': '感情运势和谐,适合谈婚论嫁,经济条件对感情有积极影响', '偏财': '感情运势机会多,异性缘佳,但要注意专一,避免多角关系', '正印': '感情运势有长辈介入,适合通过正当途径认识对象,关系稳定', '偏印': '感情运势较为复杂,可能遇到年龄差距较大或特殊背景的对象', '食神': '感情运势轻松愉快,适合自然发展的恋情,关系和谐甜蜜', '伤官': '感情运势多姿多彩,魅力增强,但要注意避免感情纠纷', '比肩': '感情运势需要主动争取,可能遇到竞争对手,要展现自己的优势', '劫财': '感情运势容易有第三者介入,需要维护现有关系,避免感情破财' }; let fortune = relationshipFortunes[yearTenGod] || '感情运势需要根据具体情况把握'; // 根据年龄调整建议 if (age < 25) { fortune += '。年轻时期,建议以学业和事业为重,感情顺其自然'; } else if (age >= 25 && age < 35) { fortune += '。正值适婚年龄,可以积极寻找合适的伴侣'; } else { fortune += '。成熟阶段,重视感情质量和稳定性'; } return fortune; } // 分析年度健康运势 analyzeYearlyHealthFortune(yearBranch, dayMasterElement) { const healthByBranch = { '子': '注意肾脏和泌尿系统健康,避免过度劳累,多休息', '丑': '注意脾胃消化系统,饮食要规律,避免暴饮暴食', '寅': '注意肝胆健康,保持心情愉快,避免熬夜', '卯': '注意肝脏和神经系统,保持作息规律,适度运动', '辰': '注意脾胃和皮肤健康,饮食清淡,保持环境整洁', '巳': '注意心脏和血液循环,避免过度兴奋,保持平和心态', '午': '注意心脏和小肠健康,避免上火,多喝水', '未': '注意脾胃和消化系统,饮食要有节制,避免过甜过腻', '申': '注意肺部和呼吸系统,避免感冒,保持空气流通', '酉': '注意肺部和大肠健康,避免辛辣食物,保持排便通畅', '戌': '注意脾胃和关节健康,避免湿气,保持干燥环境', '亥': '注意肾脏和生殖系统,避免寒凉,保持温暖' }; return healthByBranch[yearBranch] || '注意身体健康,保持良好的生活习惯'; } // 生成月度重点 generateMonthlyHighlights(year, yearTenGod, baziChart) { const highlights = []; // 根据流年十神生成关键月份的提醒 if (['正官', '七杀'].includes(yearTenGod)) { highlights.push('3月、9月:事业发展的关键月份,适合求职或升迁'); highlights.push('6月、12月:需要注意工作压力,适当调节'); } else if (['正财', '偏财'].includes(yearTenGod)) { highlights.push('2月、8月:财运较佳的月份,适合投资理财'); highlights.push('5月、11月:需要谨慎理财,避免大额支出'); } else if (['正印', '偏印'].includes(yearTenGod)) { highlights.push('4月、10月:学习运佳,适合进修提升'); highlights.push('7月、1月:贵人运旺,适合寻求帮助'); } return highlights; } // 生成年度关键建议 generateYearlyKeyAdvice(yearTenGod, yearDayun, strengthAnalysis) { const adviceByTenGod = { '正官': '把握升迁机会,遵守规则制度,建立良好的社会形象', '七杀': '勇敢面对挑战,化压力为动力,但要注意方式方法', '正财': '稳健投资理财,积累财富,维护良好的人际关系', '偏财': '把握投资机会,但要控制风险,避免贪心', '正印': '重视学习提升,寻求贵人帮助,保持谦逊态度', '偏印': '发挥创新能力,但要注意与人沟通,避免孤立', '食神': '发挥才艺特长,享受生活乐趣,保持乐观心态', '伤官': '展现个人才华,但要注意言行谨慎,避免冲突', '比肩': '加强合作交流,但要注意利益分配,防范纠纷', '劫财': '谨慎理财投资,防范小人,但也要把握突破机会' }; return adviceByTenGod[yearTenGod] || '根据具体情况灵活应对,保持积极心态'; } } module.exports = BaziAnalyzer;