UNPKG

ziwei-mcp

Version:

紫微斗数 MCP (Ziwei Doushu Model Context Protocol) - 基于 MCP 协议的紫微斗数命理分析工具

758 lines (668 loc) 22.4 kB
/** * 健康分析工具 */ class HealthAnalyzer { async analyzeHealth(args) { try { const { chartId, currentAge, healthConcerns = [], analysisType = "prevention", } = args; // 获取命盘数据 const chart = this.getChartById(chartId); if (!chart) { throw new Error(`未找到命盘: ${chartId}`); } const analysis = { currentAge: currentAge, analysisType: analysisType, constitutionAnalysis: this.analyzeConstitution(chart), healthRiskAssessment: this.assessHealthRisks( chart, currentAge, healthConcerns, ), organSystemAnalysis: this.analyzeOrganSystems(chart), mentalHealthAnalysis: this.analyzeMentalHealth(chart), lifeStageGuidance: this.provideLifeStageGuidance(chart, currentAge), preventiveMeasures: this.recommendPreventiveMeasures( chart, analysisType, ), lifestyleRecommendations: this.provideLifestyleRecommendations(chart), seasonalGuidance: this.provideSeasonalGuidance(chart), emergencyPrecautions: this.identifyEmergencyPrecautions( chart, healthConcerns, ), }; return { success: true, data: analysis, }; } catch (error) { return { success: false, error: error.message, }; } } getChartById(chartId) { // 模拟数据 return { id: chartId, info: { name: "张三" }, palaces: [ { name: "疾厄宫", stars: [{ name: "太阳" }], strength: 75, element: "fire", }, { name: "命宫", stars: [{ name: "紫微" }], strength: 85, element: "earth", }, { name: "福德宫", stars: [{ name: "天同" }], strength: 80, element: "water", }, ], }; } analyzeConstitution(chart) { const healthPalace = chart.palaces.find((p) => p.name === "疾厄宫"); const destinyPalace = chart.palaces.find((p) => p.name === "命宫"); return { overallConstitution: this.assessOverallConstitution( healthPalace, destinyPalace, ), bodyType: this.determineBodyType(healthPalace), elementalBalance: this.analyzeElementalBalance(chart), energyLevel: this.assessEnergyLevel(healthPalace), immuneSystem: this.assessImmuneSystem(healthPalace), recovery: this.assessRecoveryAbility(healthPalace), constitutionStrengths: this.identifyConstitutionStrengths(healthPalace), constitutionWeaknesses: this.identifyConstitutionWeaknesses(healthPalace), }; } assessHealthRisks(chart, age, concerns) { const healthPalace = chart.palaces.find((p) => p.name === "疾厄宫"); return { ageRelatedRisks: this.identifyAgeRelatedRisks(age), starInfluencedRisks: this.identifyStarInfluencedRisks(healthPalace), concernSpecificRisks: this.analyzeConcernSpecificRisks( concerns, healthPalace, ), riskLevels: this.categorizeRiskLevels(healthPalace, age), preventionStrategies: this.developPreventionStrategies( healthPalace, concerns, ), monitoringRecommendations: this.recommendMonitoring(age, concerns), }; } analyzeOrganSystems(chart) { const healthPalace = chart.palaces.find((p) => p.name === "疾厄宫"); return { cardiovascular: this.analyzeCardiovascular(healthPalace), respiratory: this.analyzeRespiratory(healthPalace), digestive: this.analyzeDigestive(healthPalace), nervous: this.analyzeNervous(healthPalace), musculoskeletal: this.analyzeMusculoskeletal(healthPalace), endocrine: this.analyzeEndocrine(healthPalace), immune: this.analyzeImmune(healthPalace), reproductive: this.analyzeReproductive(healthPalace), }; } analyzeMentalHealth(chart) { const fortunePalace = chart.palaces.find((p) => p.name === "福德宫"); const destinyPalace = chart.palaces.find((p) => p.name === "命宫"); return { emotionalStability: this.assessEmotionalStability(fortunePalace), stressResistance: this.assessStressResistance(destinyPalace), mentalResilience: this.assessMentalResilience(fortunePalace), cognitiveFunction: this.assessCognitiveFunction(destinyPalace), socialWellbeing: this.assessSocialWellbeing(chart), sleepQuality: this.assessSleepQuality(fortunePalace), mentalHealthRisks: this.identifyMentalHealthRisks(fortunePalace), copingStrategies: this.recommendCopingStrategies(fortunePalace), }; } provideLifeStageGuidance(chart, age) { const stage = this.determineLifeStage(age); return { currentStage: stage, stageCharacteristics: this.getStageCharacteristics(stage), healthPriorities: this.getHealthPriorities(stage), commonIssues: this.getCommonIssues(stage), preventiveFocus: this.getPreventiveFocus(stage), lifestyleAdjustments: this.getLifestyleAdjustments(stage), screeningRecommendations: this.getScreeningRecommendations(stage, age), }; } recommendPreventiveMeasures(chart, analysisType) { const healthPalace = chart.palaces.find((p) => p.name === "疾厄宫"); const measures = { prevention: this.getPreventiveMeasures(healthPalace), current_issues: this.getCurrentIssuesMeasures(healthPalace), long_term_trends: this.getLongTermMeasures(healthPalace), }; return measures[analysisType] || measures.prevention; } provideLifestyleRecommendations(chart) { const healthPalace = chart.palaces.find((p) => p.name === "疾厄宫"); return { diet: this.recommendDiet(healthPalace), exercise: this.recommendExercise(healthPalace), sleep: this.recommendSleep(healthPalace), stressManagement: this.recommendStressManagement(healthPalace), workLifeBalance: this.recommendWorkLifeBalance(chart), socialActivities: this.recommendSocialActivities(chart), hobbies: this.recommendHobbies(chart), environment: this.recommendEnvironment(healthPalace), }; } provideSeasonalGuidance(chart) { const healthPalace = chart.palaces.find((p) => p.name === "疾厄宫"); return { spring: this.getSpringGuidance(healthPalace), summer: this.getSummerGuidance(healthPalace), autumn: this.getAutumnGuidance(healthPalace), winter: this.getWinterGuidance(healthPalace), }; } identifyEmergencyPrecautions(chart, concerns) { return { warningSignsToWatch: this.identifyWarningSignsToWatch(concerns), emergencyContacts: this.recommendEmergencyContacts(), firstAidMeasures: this.recommendFirstAidMeasures(concerns), whenToSeekHelp: this.defineWhenToSeekHelp(concerns), }; } // 辅助方法实现 assessOverallConstitution(healthPalace, destinyPalace) { const score = (healthPalace.strength + destinyPalace.strength) / 2; return { score: score, level: score >= 80 ? "强健" : score >= 65 ? "良好" : score >= 50 ? "一般" : "需要调理", description: this.getConstitutionDescription(score), }; } getConstitutionDescription(score) { if (score >= 85) return "体质优秀,抵抗力强,很少生病"; if (score >= 70) return "体质良好,注意保养可保持健康"; if (score >= 55) return "体质一般,需要加强锻炼和调理"; return "体质较弱,需要重点关注健康管理"; } determineBodyType(palace) { const element = palace.element; const types = { fire: "火型体质 - 热性体质,精力充沛", earth: "土型体质 - 平和体质,消化良好", metal: "金型体质 - 燥性体质,呼吸系统敏感", water: "水型体质 - 寒性体质,肾功能重要", wood: "木型体质 - 风性体质,肝胆功能活跃", }; return types[element] || "平和体质"; } analyzeElementalBalance(chart) { const elements = chart.palaces.map((p) => p.element); const elementCount = {}; elements.forEach((el) => { elementCount[el] = (elementCount[el] || 0) + 1; }); return { distribution: elementCount, balance: this.assessElementBalance(elementCount), recommendations: this.getElementBalanceRecommendations(elementCount), }; } assessElementBalance(elementCount) { const values = Object.values(elementCount); const max = Math.max(...values); const min = Math.min(...values); if (max - min <= 1) return "平衡"; if (max - min <= 2) return "基本平衡"; return "不平衡"; } getElementBalanceRecommendations(elementCount) { return ["根据五行平衡调整生活方式", "注意饮食搭配", "适当运动调节"]; } assessEnergyLevel(palace) { return palace.strength >= 75 ? "充沛" : palace.strength >= 60 ? "良好" : "需要提升"; } assessImmuneSystem(palace) { const hasImmuneStars = palace.stars.some((s) => ["天梁", "天同"].includes(s.name), ); return hasImmuneStars ? "强" : "中等"; } assessRecoveryAbility(palace) { return palace.strength >= 70 ? "快" : palace.strength >= 55 ? "中等" : "较慢"; } identifyConstitutionStrengths(palace) { return ["体质优势分析", "天赋健康特质"]; } identifyConstitutionWeaknesses(palace) { return ["体质弱点分析", "需要注意的健康问题"]; } identifyAgeRelatedRisks(age) { if (age < 30) return ["代谢问题", "作息不规律"]; if (age < 50) return ["慢性病风险", "工作压力"]; if (age < 65) return ["心血管疾病", "骨质疏松"]; return ["老年病", "认知功能"]; } identifyStarInfluencedRisks(palace) { const risks = []; palace.stars.forEach((star) => { switch (star.name) { case "火星": risks.push("炎症性疾病"); break; case "铃星": risks.push("慢性疾病"); break; case "擎羊": risks.push("外伤风险"); break; case "陀罗": risks.push("慢性疼痛"); break; } }); return risks.length > 0 ? risks : ["无特殊风险"]; } analyzeConcernSpecificRisks(concerns, palace) { return concerns.map((concern) => ({ concern: concern, riskLevel: this.assessConcernRisk(concern, palace), preventionMeasures: this.getConcernPreventionMeasures(concern), })); } assessConcernRisk(concern, palace) { // 简化的风险评估 return palace.strength >= 70 ? "低" : palace.strength >= 50 ? "中" : "高"; } getConcernPreventionMeasures(concern) { const measures = { cardiovascular: ["规律运动", "健康饮食", "控制血压"], digestive: ["规律饮食", "避免刺激性食物", "适量运动"], respiratory: ["避免污染", "戒烟", "增强体质"], nervous: ["充足睡眠", "减压放松", "适度运动"], musculoskeletal: ["适量运动", "正确姿势", "补充钙质"], mental_health: ["心理调节", "社交活动", "专业帮助"], }; return measures[concern] || ["保持健康生活方式"]; } categorizeRiskLevels(palace, age) { return { high: ["高风险健康问题"], medium: ["中等风险健康问题"], low: ["低风险健康问题"], }; } developPreventionStrategies(palace, concerns) { return ["定期体检", "健康生活方式", "早期干预", "专业指导"]; } recommendMonitoring(age, concerns) { return { frequency: age >= 40 ? "每年" : "每两年", items: ["常规体检项目", "专项检查"], timing: "最佳检查时间建议", }; } analyzeCardiovascular(palace) { return { status: "心血管系统状态评估", risks: ["潜在风险因素"], recommendations: ["保护心血管的建议"], }; } analyzeRespiratory(palace) { return { status: "呼吸系统状态评估", risks: ["潜在风险因素"], recommendations: ["保护呼吸系统的建议"], }; } analyzeDigestive(palace) { return { status: "消化系统状态评估", risks: ["潜在风险因素"], recommendations: ["保护消化系统的建议"], }; } analyzeNervous(palace) { return { status: "神经系统状态评估", risks: ["潜在风险因素"], recommendations: ["保护神经系统的建议"], }; } analyzeMusculoskeletal(palace) { return { status: "肌肉骨骼系统状态评估", risks: ["潜在风险因素"], recommendations: ["保护肌肉骨骼的建议"], }; } analyzeEndocrine(palace) { return { status: "内分泌系统状态评估", risks: ["潜在风险因素"], recommendations: ["调节内分泌的建议"], }; } analyzeImmune(palace) { return { status: "免疫系统状态评估", risks: ["潜在风险因素"], recommendations: ["增强免疫力的建议"], }; } analyzeReproductive(palace) { return { status: "生殖系统状态评估", risks: ["潜在风险因素"], recommendations: ["保护生殖健康的建议"], }; } assessEmotionalStability(palace) { return palace.strength >= 75 ? "稳定" : palace.strength >= 60 ? "基本稳定" : "需要关注"; } assessStressResistance(palace) { return palace.strength >= 70 ? "强" : palace.strength >= 55 ? "中等" : "较弱"; } assessMentalResilience(palace) { return palace.strength >= 75 ? "强" : palace.strength >= 60 ? "良好" : "需要提升"; } assessCognitiveFunction(palace) { return palace.strength >= 80 ? "优秀" : palace.strength >= 65 ? "良好" : "一般"; } assessSocialWellbeing(chart) { const servantPalace = chart.palaces.find((p) => p.name === "奴仆宫"); return servantPalace ? servantPalace.strength >= 70 ? "良好" : "需要改善" : "一般"; } assessSleepQuality(palace) { return palace.strength >= 75 ? "良好" : palace.strength >= 60 ? "一般" : "需要改善"; } identifyMentalHealthRisks(palace) { const risks = []; if (palace.strength < 60) { risks.push("情绪波动"); risks.push("压力敏感"); } return risks.length > 0 ? risks : ["无明显风险"]; } recommendCopingStrategies(palace) { return ["深呼吸放松", "适度运动", "社交活动", "专业咨询", "兴趣爱好"]; } determineLifeStage(age) { if (age < 18) return "青少年期"; if (age < 30) return "青年期"; if (age < 45) return "中青年期"; if (age < 60) return "中年期"; if (age < 75) return "老年前期"; return "老年期"; } getStageCharacteristics(stage) { const characteristics = { 青少年期: "生长发育期,注重营养和运动", 青年期: "体力充沛期,注意作息规律", 中青年期: "事业高峰期,注意工作压力", 中年期: "生理转折期,注意慢性病预防", 老年前期: "功能下降期,注意保养", 老年期: "衰老加速期,注重护理", }; return characteristics[stage] || "注重健康管理"; } getHealthPriorities(stage) { const priorities = { 青少年期: ["营养均衡", "充足睡眠", "适量运动"], 青年期: ["规律作息", "压力管理", "健康饮食"], 中青年期: ["定期体检", "工作生活平衡", "慢性病预防"], 中年期: ["心血管保护", "骨质疏松预防", "内分泌调节"], 老年前期: ["功能维护", "跌倒预防", "认知保护"], 老年期: ["生活质量", "并发症预防", "心理健康"], }; return priorities[stage] || ["全面健康管理"]; } getCommonIssues(stage) { const issues = { 青少年期: ["营养不良", "近视", "心理问题"], 青年期: ["亚健康", "颈椎病", "胃病"], 中青年期: ["高血压", "糖尿病", "焦虑症"], 中年期: ["心脏病", "更年期综合征", "关节炎"], 老年前期: ["骨质疏松", "白内障", "听力下降"], 老年期: ["老年痴呆", "心脑血管病", "跌倒骨折"], }; return issues[stage] || ["年龄相关健康问题"]; } getPreventiveFocus(stage) { const focus = { 青少年期: "建立健康习惯", 青年期: "预防职业病", 中青年期: "慢性病筛查", 中年期: "重大疾病预防", 老年前期: "功能衰退延缓", 老年期: "并发症预防", }; return focus[stage] || "综合预防"; } getLifestyleAdjustments(stage) { return [`${stage}的生活方式调整建议`, "适合年龄段的健康管理"]; } getScreeningRecommendations(stage, age) { const recommendations = { 青少年期: ["视力检查", "生长发育评估"], 青年期: ["常规体检", "心理健康评估"], 中青年期: ["心血管筛查", "肿瘤筛查"], 中年期: ["全面体检", "专科检查"], 老年前期: ["认知功能评估", "骨密度检查"], 老年期: ["综合评估", "功能评估"], }; return recommendations[stage] || ["定期健康检查"]; } getPreventiveMeasures(palace) { return [ "定期体检", "健康饮食", "适量运动", "充足睡眠", "压力管理", "戒烟限酒", ]; } getCurrentIssuesMeasures(palace) { return ["针对性治疗", "生活方式调整", "定期监测", "专业指导"]; } getLongTermMeasures(palace) { return ["长期健康规划", "慢性病管理", "功能维护", "生活质量提升"]; } recommendDiet(palace) { const element = palace.element; const dietRecommendations = { fire: "清淡饮食,多吃蔬菜水果,少吃辛辣", earth: "规律饮食,注意消化,适量粗粮", metal: "润燥食物,多喝水,少吃干燥食品", water: "温热食物,少吃生冷,适量补肾", wood: "疏肝理气,少吃油腻,多吃绿色蔬菜", }; return dietRecommendations[element] || "均衡营养,适量进食"; } recommendExercise(palace) { return { type: "有氧运动为主", frequency: "每周3-5次", duration: "每次30-60分钟", intensity: "中等强度", specific: ["散步", "游泳", "太极", "瑜伽"], }; } recommendSleep(palace) { return { duration: "7-8小时", timing: "晚上10-11点入睡", environment: "安静、黑暗、凉爽", habits: ["睡前放松", "规律作息", "避免刺激"], }; } recommendStressManagement(palace) { return [ "冥想放松", "深呼吸练习", "适度运动", "兴趣爱好", "社交活动", "专业帮助", ]; } recommendWorkLifeBalance(chart) { return [ "合理安排工作时间", "定期休息放松", "培养兴趣爱好", "维护人际关系", "注重家庭生活", ]; } recommendSocialActivities(chart) { return ["参加社区活动", "维护朋友关系", "志愿服务", "兴趣小组", "家庭聚会"]; } recommendHobbies(chart) { return ["阅读写作", "音乐艺术", "园艺种植", "手工制作", "旅游摄影"]; } recommendEnvironment(palace) { return { home: "保持清洁通风,温湿度适宜", work: "注意职业防护,减少有害暴露", outdoor: "选择空气质量好的环境活动", }; } getSpringGuidance(palace) { return { focus: "养肝护肝,疏肝理气", diet: "多吃绿色蔬菜,少吃酸性食物", exercise: "适度户外运动,舒展筋骨", precautions: "注意过敏,预防感冒", }; } getSummerGuidance(palace) { return { focus: "养心安神,清热解暑", diet: "清淡饮食,多喝水,少吃冷饮", exercise: "避免高温时段,选择游泳等", precautions: "防暑降温,预防中暑", }; } getAutumnGuidance(palace) { return { focus: "养肺润燥,增强免疫", diet: "滋阴润燥,多吃梨、蜂蜜等", exercise: "适度运动,增强体质", precautions: "预防呼吸道疾病,保暖", }; } getWinterGuidance(palace) { return { focus: "养肾藏精,温阳补肾", diet: "温热食物,适量进补", exercise: "室内运动为主,避免过度", precautions: "保暖防寒,预防心脑血管病", }; } identifyWarningSignsToWatch(concerns) { const warningSignsMap = { cardiovascular: ["胸痛", "气短", "心悸", "头晕"], digestive: ["腹痛", "恶心", "呕吐", "便血"], respiratory: ["呼吸困难", "持续咳嗽", "胸闷"], nervous: ["头痛", "意识改变", "肢体无力"], musculoskeletal: ["剧烈疼痛", "活动受限", "肿胀"], mental_health: ["严重抑郁", "自杀念头", "幻觉"], }; const allSigns = []; concerns.forEach((concern) => { if (warningSignsMap[concern]) { allSigns.push(...warningSignsMap[concern]); } }); return allSigns.length > 0 ? allSigns : ["异常症状持续不缓解"]; } recommendEmergencyContacts() { return [ "急救电话:120", "家庭医生联系方式", "就近医院地址和电话", "紧急联系人信息", ]; } recommendFirstAidMeasures(concerns) { return [ "保持冷静", "确保安全", "及时呼救", "基本急救措施", "记录症状和时间", ]; } defineWhenToSeekHelp(concerns) { return [ "症状严重或持续恶化", "出现危险征象", "常规治疗无效", "心理状态异常", "不确定时及时就医", ]; } } module.exports = { HealthAnalyzer, };