import React from 'react'; import CompleteBaziAnalysis from './CompleteBaziAnalysis'; import CompleteZiweiAnalysis from './CompleteZiweiAnalysis'; import CompleteYijingAnalysis from './CompleteYijingAnalysis'; import BaziAnalysisDisplay from './BaziAnalysisDisplay'; interface AnalysisResultDisplayProps { analysisResult?: any; analysisType: 'bazi' | 'ziwei' | 'yijing'; birthDate?: { date: string; time: string; name?: string; gender?: string; }; question?: string; userId?: string; divinationMethod?: string; preAnalysisData?: any; // 预先分析的数据,用于历史记录 } const AnalysisResultDisplay: React.FC = ({ analysisResult, analysisType, birthDate, question, userId, divinationMethod, preAnalysisData }) => { // 安全地获取数据的辅助函数 const safeGet = (obj: any, path: string, defaultValue: any = '暂无数据') => { const keys = path.split('.'); let current = obj; for (const key of keys) { if (current && typeof current === 'object' && key in current) { current = current[key]; } else { return defaultValue; } } return current || defaultValue; }; // 安全渲染函数,确保返回的是字符串 const safeRender = (value: any, defaultValue: string = '') => { if (typeof value === 'string') return value; if (typeof value === 'number') return String(value); if (Array.isArray(value)) return value.join(', '); if (typeof value === 'object' && value !== null) { // 特殊处理包含stars键的对象 if (value.stars && Array.isArray(value.stars)) { return value.stars.join(', '); } // 其他对象转为JSON字符串 return JSON.stringify(value); } return defaultValue; }; // 渲染八字命理分析 const renderBaziAnalysis = () => { // 如果有 birthDate,使用新的 CompleteBaziAnalysis 组件 if (birthDate) { return ; } // 如果有分析结果但没有 birthDate,尝试从结果中提取出生信息 if (analysisResult && analysisResult.data) { const basicInfo = analysisResult.data.basic_info; if (basicInfo && basicInfo.personal_data) { const extractedBirthDate = { date: basicInfo.personal_data.birth_date || '', time: basicInfo.personal_data.birth_time || '12:00', name: basicInfo.personal_data.name || '', gender: basicInfo.personal_data.gender === '男性' ? 'male' : 'female' }; return ; } } // 如果没有足够的数据,返回错误提示 return (

八字分析数据不完整,请重新提交分析

); }; // 渲染紫微斗数分析 const renderZiweiAnalysis = () => { // 如果有 birthDate,使用新的 CompleteZiweiAnalysis 组件 if (birthDate) { return ; } // 如果有分析结果但没有 birthDate,尝试从结果中提取出生信息 if (analysisResult && analysisResult.data) { const basicInfo = analysisResult.data.basic_info; if (basicInfo && basicInfo.personal_data) { const extractedBirthDate = { date: basicInfo.personal_data.birth_date || '', time: basicInfo.personal_data.birth_time || '12:00', name: basicInfo.personal_data.name || '', gender: basicInfo.personal_data.gender === '男性' ? 'male' : 'female' }; return ; } } // 回退到旧的渲染方式(向后兼容) const data = analysisResult?.data || analysisResult; const ziweiData = data?.ziwei_analysis || data?.ziwei || data; const analysisData = data?.detailed_analysis || data?.analysis || data; return (
{/* 命宫信息 */}

命宫信息

命宫位置:{safeRender(safeGet(ziweiData, 'ming_gong'), '未知')}

命宫主星:{safeRender(safeGet(ziweiData, 'ming_gong_xing'))}

整体运势:{safeRender(safeGet(ziweiData, 'shi_er_gong.命宫.interpretation'))}

星曜力度:{safeRender(safeGet(ziweiData, 'shi_er_gong.命宫.strength'))}

{/* 12宫位分析 */}

12宫位分析

{[ { key: '命宫', name: '命宫' }, { key: '兄弟宫', name: '兄弟宫' }, { key: '夫妻宫', name: '夫妻宫' }, { key: '子女宫', name: '子女宫' }, { key: '财帛宫', name: '财帛宫' }, { key: '疾厄宫', name: '疾厄宫' }, { key: '迁移宫', name: '迁移宫' }, { key: '交友宫', name: '交友宫' }, { key: '事业宫', name: '事业宫' }, { key: '田宅宫', name: '田宅宫' }, { key: '福德宫', name: '福德宫' }, { key: '父母宫', name: '父母宫' } ].map((gong) => { const gongData = safeGet(ziweiData, `shi_er_gong.${gong.key}`, {}); return (

{gong.name}

主星:{safeRender(gongData.main_stars)}

{safeRender(gongData.interpretation)}

); })}
{/* 四化飞星系统 */}

四化飞星系统

{[ { key: 'hua_lu', name: '化禄', color: 'bg-green-50' }, { key: 'hua_quan', name: '化权', color: 'bg-red-50' }, { key: 'hua_ke', name: '化科', color: 'bg-yellow-50' }, { key: 'hua_ji', name: '化忌', color: 'bg-gray-50' } ].map((sihua) => { const sihuaData = safeGet(ziweiData, `si_hua.${sihua.key}`, {}); return (

{sihua.name}

星曜:{safeRender(sihuaData.star)}

含义:{safeRender(sihuaData.meaning)}

); })}
{/* 性格分析 */}

性格分析

性格概述

{safeRender(safeGet(analysisData, 'character.overview'))}

性格特质

{safeRender(safeGet(analysisData, 'character.personality_traits'))}

{/* 事业财运 */}

事业财运

适合行业

{Array.isArray(safeGet(analysisData, 'career.suitable_industries')) && safeGet(analysisData, 'career.suitable_industries')?.map((industry: string, index: number) => ( {safeRender(industry)} ))}

财富模式

{safeRender(safeGet(analysisData, 'wealth.wealth_pattern'))}

{/* 感情婚姻 */}

感情婚姻

婚姻运势

{safeRender(safeGet(analysisData, 'relationships.marriage_fortune'))}

伴侣特质:

{safeRender(safeGet(analysisData, 'relationships.spouse_characteristics'))}

{/* 健康指导 */}

健康指导

{safeRender(safeGet(analysisData, 'health.constitution'))}

建议:

{safeRender(safeGet(analysisData, 'health.wellness_advice'))}

); }; // 渲染易经占卜分析 const renderYijingAnalysis = () => { // 如果有问题参数,使用新的 CompleteYijingAnalysis 组件 if (question) { return ( ); } // 如果有分析结果但没有问题参数,尝试从结果中提取问题信息 if (analysisResult && analysisResult.data) { const basicInfo = analysisResult.data.basic_info; if (basicInfo && basicInfo.divination_data) { return ( ); } } // 回退到旧的渲染方式(向后兼容) const data = analysisResult?.data || analysisResult; return (
{/* 占卜基本信息 */}

占卜基本信息

占卜问题:{safeRender(safeGet(data, 'basic_info.divination_data.question'))}

起卦方法:{safeRender(safeGet(data, 'basic_info.divination_data.method'))}

占卜时间:{safeGet(data, 'basic_info.divination_data.divination_time') ? new Date(safeGet(data, 'basic_info.divination_data.divination_time')).toLocaleString('zh-CN') : ''}

分析日期:{safeRender(safeGet(data, 'analysis_date'))}

{/* 卦象分析 */}

卦象分析

{/* 本卦识别 */}

本卦识别

{safeRender(safeGet(data, 'basic_info.hexagram_info.main_hexagram'))}

卦辞:{safeRender(safeGet(data, 'basic_info.hexagram_info.hexagram_description'))}

上下卦:{safeRender(safeGet(data, 'basic_info.hexagram_info.upper_trigram'))} / {safeRender(safeGet(data, 'basic_info.hexagram_info.lower_trigram'))}

{/* 卦象详解 */}

卦象详解

{safeRender(safeGet(data, 'basic_info.hexagram_info.detailed_interpretation'))}

{/* 卦象主要分析 */}

卦象主要分析

主要含义

{safeRender(safeGet(data, 'detailed_analysis.hexagram_analysis.primary_meaning'))}

吉凶断语

{safeRender(safeGet(data, 'detailed_analysis.hexagram_analysis.judgment'))}

象辞解释

{safeRender(safeGet(data, 'detailed_analysis.hexagram_analysis.image'))}

{/* 变卦分析 */}

变卦分析

动爻位置

动爻在{safeRender(safeGet(data, 'detailed_analysis.changing_lines_analysis.changing_line_position'))}, 含义:{safeRender(safeGet(data, 'detailed_analysis.changing_lines_analysis.line_meaning'))}

变卦结果:

{safeRender(safeGet(data, 'detailed_analysis.changing_hexagram.name'))} - {safeRender(safeGet(data, 'detailed_analysis.changing_hexagram.meaning'))}

{safeRender(safeGet(data, 'detailed_analysis.changing_hexagram.transformation_insight'))}

{/* 人生指导 */}

人生指导

整体运势

{safeRender(safeGet(data, 'life_guidance.overall_fortune'))}

事业指导

{safeRender(safeGet(data, 'life_guidance.career_guidance'))}

情感指导

{safeRender(safeGet(data, 'life_guidance.relationship_guidance'))}

财运指导

{safeRender(safeGet(data, 'life_guidance.wealth_guidance'))}

{/* 易经智慧 */}

易经智慧

核心信息

{safeRender(safeGet(data, 'divination_wisdom.key_message'))}

行动建议:{safeRender(safeGet(data, 'divination_wisdom.action_advice'))}

哲学启示:{safeRender(safeGet(data, 'divination_wisdom.philosophical_insight'))}

); }; // 主渲染逻辑 const renderAnalysis = () => { switch (analysisType) { case 'bazi': return renderBaziAnalysis(); case 'ziwei': return renderZiweiAnalysis(); case 'yijing': return renderYijingAnalysis(); default: return (

未知的分析类型: {analysisType}

); } }; // 对于八字分析,如果有 birthDate 则不需要 analysisResult if (analysisType === 'bazi' && birthDate) { return renderBaziAnalysis(); } // 对于易经占卜,如果有 question 参数,直接返回 CompleteYijingAnalysis 组件(不添加额外容器) if (analysisType === 'yijing' && question) { return ( ); } // 对于紫微斗数,如果有 birthDate 参数,直接返回 CompleteZiweiAnalysis 组件(不添加额外容器) if (analysisType === 'ziwei' && birthDate) { return ; } // 如果没有分析结果数据 if (!analysisResult) { return (

暂无分析数据

); } return (
{renderAnalysis()}
); }; export default AnalysisResultDisplay;