UNPKG

chinese-naming-mcp

Version:

A comprehensive MCP toolset for Chinese name generation, analysis, and cultural interpretation

434 lines (382 loc) 11.7 kB
/** * 姓名寓意分析器 - 核心工具 * Name Meaning Analyzer - Core Tool * * @author 鲁班 (PromptX工具开发大师) * @version 1.0.0 * * cSpell:words wuxing Wuxing */ const BaseTool = require('../utils/base-tool.js'); const nameUtils = require('../utils/name-analyzer-utils'); const advancedUtils = require('../utils/name-analyzer-advanced'); const coreUtils = require('../utils/name-analyzer-core'); const schemaUtils = require('../utils/name-analyzer-schema'); const initUtils = require('../utils/name-analyzer-init'); /** * 姓名寓意分析器类 * 提供深度分析姓名的文化内涵、字义解释和象征意义的功能 * @class * @extends BaseTool */ class NameMeaningAnalyzer extends BaseTool { /** * 构造函数 */ constructor() { super(); this.name = 'name-meaning-analyzer'; this.description = '深度分析姓名的文化内涵、字义解释和象征意义'; this.category = 'core'; // 初始化字义数据库 this.initializeCharacterDatabase(); } /** * 初始化字符数据库 * 加载常用汉字的含义、姓氏文化背景和组合寓意模板 */ initializeCharacterDatabase() { this.characterMeanings = initUtils.initializeCharacterMeanings(); this.surnameOrigins = initUtils.initializeSurnameOrigins(); initUtils.initializeCombinationTemplates(); } /** * 解析完整姓名 * @param {string} fullName - 完整姓名 * @returns {object} 姓氏和名字 */ parseFullName(fullName) { return coreUtils.parseFullName(fullName); } /** * 基础分析 * @param {string} surname - 姓氏 * @param {string} givenName - 名字 * @returns {object} 基础分析结果 */ async basicAnalysis(surname, givenName) { const surnameInfo = this.analyzeSurname(surname); const givenNameInfo = this.analyzeGivenName(givenName); const overallMeaning = this.generateOverallMeaning(surname, givenName, 'basic'); return { surnameAnalysis: surnameInfo, givenNameAnalysis: givenNameInfo, overallMeaning, culturalSignificance: this.getCulturalSignificance(surname, givenName, 'basic') }; } /** * 详细分析 * @param {string} surname - 姓氏 * @param {string} givenName - 名字 * @returns {object} 详细分析结果 */ async detailedAnalysis(surname, givenName) { const basicResult = await this.basicAnalysis(surname, givenName); return { ...basicResult, characterBreakdown: this.getCharacterBreakdown(givenName), phoneticAnalysis: this.getPhoneticAnalysis(surname + givenName), numerologyAnalysis: this.getNumerologyAnalysis(surname + givenName), historicalReferences: this.getHistoricalReferences(givenName), modernInterpretation: this.getModernInterpretation(givenName) }; } /** * 综合分析 * @param {string} surname - 姓氏 * @param {string} givenName - 名字 * @returns {object} 综合分析结果 */ async comprehensiveAnalysis(surname, givenName) { const detailedResult = await this.detailedAnalysis(surname, givenName); return { ...detailedResult, wuxingAnalysis: this.getWuxingAnalysis(givenName), poetryReferences: this.getPoetryReferences(givenName), personalityTraits: this.getPersonalityTraits(givenName), careerSuggestions: this.getCareerSuggestions(givenName), compatibilityAnalysis: this.getCompatibilityAnalysis(surname, givenName), recommendations: this.getRecommendations(surname, givenName) }; } /** * 分析姓氏 * @param {string} surname - 姓氏 * @returns {object} 姓氏分析结果 */ analyzeSurname(surname) { return coreUtils.analyzeSurname(surname, this.surnameOrigins); } /** * 分析名字 * @param {string} givenName - 名字 * @returns {object} 名字分析结果 */ analyzeGivenName(givenName) { return coreUtils.analyzeGivenName( givenName, char => this.analyzeCharacter(char), analyses => this.getCombinedMeaning(analyses), analyses => this.getDominantThemes(analyses) ); } /** * 分析单个字符 * @param {string} char - 字符 * @returns {object} 字符分析结果 */ analyzeCharacter(char) { return coreUtils.analyzeCharacter(char, this.characterMeanings); } /** * 获取组合寓意 * @param {array} characterAnalyses - 字符分析数组 * @returns {string} 组合寓意 */ getCombinedMeaning(characterAnalyses) { return coreUtils.getCombinedMeaning(characterAnalyses); } /** * 生成组合描述 * @param {array} themes - 主题数组 * @returns {string} 组合描述 */ generateCombinationDescription(themes) { return coreUtils.generateCombinationDescription(themes); } /** * 获取主导主题 * @param {array} characterAnalyses - 字符分析数组 * @returns {array} 主导主题数组 */ getDominantThemes(characterAnalyses) { return coreUtils.getDominantThemes(characterAnalyses); } /** * 生成整体寓意 * @param {string} surname - 姓氏 * @param {string} givenName - 名字 * @param {string} depth - 分析深度 * @returns {string} 整体寓意 */ generateOverallMeaning(surname, givenName, depth) { return coreUtils.generateOverallMeaning(surname, givenName, depth); } /** * 获取文化意义 * @param {string} surname - 姓氏 * @param {string} givenName - 名字 * @param {string} depth - 分析深度 * @returns {object} 文化意义 */ getCulturalSignificance(surname, givenName, depth) { return coreUtils.getCulturalSignificance(surname, givenName, depth); } /** * 获取字符详细分解 * @param {string} givenName - 名字 * @returns {array} 字符分解数组 */ getCharacterBreakdown(givenName) { return coreUtils.getCharacterBreakdown( givenName, char => this.analyzeCharacter(char), char => this.getStrokeCount(char), char => this.getRadicals(char), char => this.getPronunciation(char) ); } /** * 获取语音分析 * @param {string} fullName - 完整姓名 * @returns {object} 语音分析 */ getPhoneticAnalysis(fullName) { return nameUtils.getPhoneticAnalysis(fullName); } /** * 获取数理分析 * @param {string} fullName - 完整姓名 * @returns {object} 数理分析 */ getNumerologyAnalysis(fullName) { return nameUtils.getNumerologyAnalysis(fullName); } /** * 获取历史典故 * @param {string} givenName - 名字 * @returns {array} 历史典故数组 */ getHistoricalReferences(givenName) { return advancedUtils.getHistoricalReferences(givenName); } /** * 获取现代诠释 * @param {string} givenName - 名字 * @returns {object} 现代诠释 */ getModernInterpretation(givenName) { return advancedUtils.getModernInterpretation(givenName); } /** * 获取笔画数 * @param {string} char - 字符 * @returns {number} 笔画数 */ getStrokeCount(char) { return nameUtils.getStrokeCount(char); } /** * 获取部首 * @param {string} char - 字符 * @returns {array} 部首数组 */ getRadicals(char) { return nameUtils.getRadicals(char); } /** * 获取发音 * @param {string} char - 字符 * @returns {string} 拼音 */ getPronunciation(char) { return nameUtils.getPronunciation(char); } /** * 获取声调 * @param {string} pinyinStr - 拼音字符串 * @returns {number} 声调 */ getTone(pinyinStr) { return nameUtils.getTone(pinyinStr); } /** * 获取五行分析 * @param {string} givenName - 名字 * @returns {object} 五行分析结果 */ getWuxingAnalysis(givenName) { return advancedUtils.getWuxingAnalysis(givenName); } /** * 获取诗词典故 * @param {string} givenName - 名字 * @returns {array} 诗词典故数组 */ getPoetryReferences(givenName) { return advancedUtils.getPoetryReferences(givenName); } /** * 获取性格特点 * @param {string} givenName - 名字 * @returns {array} 性格特点数组 */ getPersonalityTraits(givenName) { return advancedUtils.getPersonalityTraits(givenName); } /** * 获取职业建议 * @param {string} givenName - 名字 * @returns {array} 职业建议数组 */ getCareerSuggestions(givenName) { return advancedUtils.getCareerSuggestions(givenName); } /** * 获取兼容性分析 * @param {string} surname - 姓氏 * @param {string} givenName - 名字 * @returns {object} 兼容性分析结果 */ getCompatibilityAnalysis(surname, givenName) { return advancedUtils.getCompatibilityAnalysis(surname, givenName); } /** * 获取建议 * @param {string} surname - 姓氏 * @param {string} givenName - 名字 * @returns {array} 建议数组 */ getRecommendations(surname, givenName) { return advancedUtils.getRecommendations(surname, givenName); } /** * 获取参数模式 * @returns {object} 参数模式 */ getParameterSchema() { return schemaUtils.getParameterSchema(); } /** * 获取使用示例 * @returns {array} 示例数组 */ getUsageExamples() { return this.getExamples(); } /** * 获取使用示例 * @returns {array} 示例数组 */ getExamples() { return schemaUtils.getExamples(); } /** * 执行姓名寓意分析 * @param {object} params - 分析参数 * @returns {object} 分析结果 */ async execute(params) { try { const { name, analysisDepth = 'basic' } = params; if (!name || typeof name !== 'string' || name.trim().length === 0) { throw new Error('姓名不能为空'); } const trimmedName = name.trim(); const nameStructure = this.parseFullName(trimmedName); if (!nameStructure.surname) { throw new Error('无法正确解析姓名结构'); } let analysisResult; switch (analysisDepth) { case 'basic': analysisResult = await this.basicAnalysis(nameStructure.surname, nameStructure.givenName); break; case 'detailed': analysisResult = await this.detailedAnalysis(nameStructure.surname, nameStructure.givenName); break; case 'comprehensive': analysisResult = await this.comprehensiveAnalysis(nameStructure.surname, nameStructure.givenName); break; default: analysisResult = await this.basicAnalysis(nameStructure.surname, nameStructure.givenName); } return this.createSuccessResponse({ name: trimmedName, analysisDepth, ...analysisResult, summary: this.generateSummary(analysisResult) }, '姓名寓意分析完成'); } catch (error) { return this.createErrorResponse(`姓名寓意分析失败: ${error.message}`); } } /** * 生成分析摘要 * @param {object} analysisResult - 分析结果 * @returns {string} 摘要文本 */ generateSummary(analysisResult) { const { surnameAnalysis, givenNameAnalysis, overallMeaning } = analysisResult; let summary = `姓名「${surnameAnalysis.surname}${givenNameAnalysis.givenName}」`; if (overallMeaning) { summary += `寓意:${overallMeaning.substring(0, 50)}${overallMeaning.length > 50 ? '...' : ''}`; } if (givenNameAnalysis.dominantThemes && givenNameAnalysis.dominantThemes.length > 0) { summary += `,主要体现${givenNameAnalysis.dominantThemes.slice(0, 2).join('、')}等主题`; } return summary; } } module.exports = NameMeaningAnalyzer;