UNPKG

ziwei-mcp

Version:

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

286 lines (256 loc) 8.05 kB
/** * 人际关系分析工具 */ class RelationshipAnalyzer { async analyzeRelationships(args) { try { const { chartId, relationshipType, targetPersonChart, analysisAspects = [], } = args; // 获取命盘数据 const chart = this.getChartById(chartId); if (!chart) { throw new Error(`未找到命盘: ${chartId}`); } const analysis = { relationshipType: relationshipType, generalAnalysis: this.analyzeGeneralRelationship( chart, relationshipType, ), specificAnalysis: this.analyzeSpecificAspects( chart, relationshipType, analysisAspects, ), compatibility: targetPersonChart ? this.analyzeCompatibility(chart, targetPersonChart) : null, recommendations: this.getRelationshipRecommendations( chart, relationshipType, ), improvementSuggestions: this.getImprovementSuggestions( chart, relationshipType, ), }; return { success: true, data: analysis, }; } catch (error) { return { success: false, error: error.message, }; } } getChartById(chartId) { // 模拟数据 return { id: chartId, info: { name: "张三" }, palaces: [ { name: "命宫", stars: [{ name: "紫微" }] }, { name: "夫妻宫", stars: [{ name: "太阳" }] }, { name: "子女宫", stars: [{ name: "天机" }] }, { name: "兄弟宫", stars: [{ name: "武曲" }] }, { name: "奴仆宫", stars: [{ name: "天同" }] }, { name: "父母宫", stars: [{ name: "廉贞" }] }, ], }; } analyzeGeneralRelationship(chart, relationshipType) { const relevantPalace = this.getRelevantPalace(chart, relationshipType); return { palaceName: relevantPalace.name, mainInfluences: this.getMainInfluences(relevantPalace), relationshipPattern: this.analyzeRelationshipPattern( relevantPalace, relationshipType, ), strengths: this.identifyRelationshipStrengths( relevantPalace, relationshipType, ), challenges: this.identifyRelationshipChallenges( relevantPalace, relationshipType, ), overallAssessment: this.getOverallAssessment( relevantPalace, relationshipType, ), }; } analyzeSpecificAspects(chart, relationshipType, aspects) { const analysis = {}; aspects.forEach((aspect) => { switch (aspect) { case "communication": analysis.communication = this.analyzeCommunication( chart, relationshipType, ); break; case "trust": analysis.trust = this.analyzeTrust(chart, relationshipType); break; case "conflict_resolution": analysis.conflictResolution = this.analyzeConflictResolution( chart, relationshipType, ); break; case "mutual_support": analysis.mutualSupport = this.analyzeMutualSupport( chart, relationshipType, ); break; case "growth_potential": analysis.growthPotential = this.analyzeGrowthPotential( chart, relationshipType, ); break; } }); return analysis; } analyzeCompatibility(chart1, chart2) { return { overallScore: Math.floor(Math.random() * 30) + 70, personalityMatch: "互补性强", communicationStyle: "沟通顺畅", valueAlignment: "价值观相近", conflictAreas: ["偶有分歧"], harmonyFactors: ["共同兴趣", "相互理解"], }; } getRelationshipRecommendations(chart, relationshipType) { const recommendations = { family: ["加强家庭沟通", "尊重长辈意见", "关爱家人健康", "营造和谐氛围"], romantic: [ "真诚表达感情", "给予对方空间", "共同规划未来", "保持浪漫情调", ], friendship: ["真诚待人", "互相帮助", "保持联系", "尊重差异"], business: [ "明确合作目标", "建立信任关系", "公平分配利益", "及时沟通协调", ], mentor: ["虚心学习", "尊重师长", "积极实践", "感恩回报"], }; return ( recommendations[relationshipType] || ["建立良好关系", "互相尊重理解"] ); } getImprovementSuggestions(chart, relationshipType) { return [ "提升沟通技巧", "增强同理心", "学会妥协让步", "培养共同兴趣", "定期关系维护", ]; } getRelevantPalace(chart, relationshipType) { const palaceMap = { family: "父母宫", romantic: "夫妻宫", friendship: "奴仆宫", business: "奴仆宫", mentor: "父母宫", }; const palaceName = palaceMap[relationshipType] || "奴仆宫"; return chart.palaces.find((p) => p.name === palaceName) || chart.palaces[0]; } getMainInfluences(palace) { return palace.stars.map((star) => ({ star: star.name, influence: this.getStarRelationshipInfluence(star.name), })); } getStarRelationshipInfluence(starName) { const influences = { 紫微: "具有领导魅力,容易成为关系中的主导者", 天机: "善于沟通协调,能够化解关系中的矛盾", 太阳: "热情开朗,能够温暖他人", 武曲: "重视承诺,关系稳定可靠", 天同: "性格温和,容易与人相处", 廉贞: "感情丰富,关系变化较多", 天府: "稳重可靠,是他人的依靠", 太阴: "细腻敏感,善于照顾他人", 贪狼: "魅力十足,人际关系广泛", 巨门: "善于表达,但需注意言辞", 天相: "忠诚可靠,是好的合作伙伴", 天梁: "具有长者风范,善于指导他人", 七杀: "性格直率,关系简单明了", 破军: "勇于创新,能带来关系的新变化", }; return influences[starName] || "对关系有积极影响"; } analyzeRelationshipPattern(palace, relationshipType) { return `基于${palace.name}的星曜配置,在${relationshipType}关系中表现为...`; } identifyRelationshipStrengths(palace, relationshipType) { return ["真诚待人", "善于理解他人", "关系稳定持久", "能够给予支持"]; } identifyRelationshipChallenges(palace, relationshipType) { return ["有时过于固执", "沟通方式需要改进", "容易产生误解", "需要更多耐心"]; } getOverallAssessment(palace, relationshipType) { return { score: Math.floor(Math.random() * 30) + 70, level: "良好", description: `在${relationshipType}关系中整体表现良好,具有发展潜力`, }; } analyzeCommunication(chart, relationshipType) { return { style: "直接坦诚", effectiveness: "较好", improvements: ["多倾听对方", "注意表达方式"], }; } analyzeTrust(chart, relationshipType) { return { trustLevel: "高", buildingAbility: "强", maintainingSuggestions: ["保持诚信", "言行一致"], }; } analyzeConflictResolution(chart, relationshipType) { return { approach: "理性协商", effectiveness: "中等", improvements: ["学会妥协", "寻求双赢"], }; } analyzeMutualSupport(chart, relationshipType) { return { supportLevel: "高", areas: ["情感支持", "实际帮助"], suggestions: ["主动关心", "及时帮助"], }; } analyzeGrowthPotential(chart, relationshipType) { return { potential: "高", growthAreas: ["深化理解", "扩展共同兴趣"], timeline: "持续发展", }; } } module.exports = { RelationshipAnalyzer, };