feat: 完整实现奇门遁甲功能并优化显示效果

主要功能实现:
- 新增奇门遁甲分析完整功能模块
- 实现奇门盘可视化展示
- 添加用神分析、格局识别、预测结果等核心功能
- 集成AI解读和PDF导出功能
- 扩展历史记录支持奇门遁甲类型

显示优化:
- 修复时机评估[object Object]显示问题
- 优化时机评估显示为简洁格式
- 完善英文字段中文化映射
- 移除重复的成功概率显示
- 统一数值显示格式(小数转整数)

技术改进:
- 扩展类型定义支持奇门遁甲
- 完善API接口和路由
- 优化错误处理和用户体验
- 统一前后端字段映射机制
This commit is contained in:
patdelphi
2025-08-25 21:56:31 +08:00
parent 5af9d01bfa
commit 0f3e1f406f
21 changed files with 2661 additions and 189 deletions

View File

@@ -2,11 +2,12 @@ import React from 'react';
import CompleteBaziAnalysis from './CompleteBaziAnalysis';
import CompleteZiweiAnalysis from './CompleteZiweiAnalysis';
import CompleteYijingAnalysis from './CompleteYijingAnalysis';
import CompleteQimenAnalysis from './CompleteQimenAnalysis';
import BaziAnalysisDisplay from './BaziAnalysisDisplay';
interface AnalysisResultDisplayProps {
analysisResult?: any;
analysisType: 'bazi' | 'ziwei' | 'yijing';
analysisType: 'bazi' | 'ziwei' | 'yijing' | 'qimen';
birthDate?: {
date: string;
time: string;
@@ -429,6 +430,8 @@ const AnalysisResultDisplay: React.FC<AnalysisResultDisplayProps> = ({
return renderZiweiAnalysis();
case 'yijing':
return renderYijingAnalysis();
case 'qimen':
return <CompleteQimenAnalysis analysis={analysisResult?.data || analysisResult} />;
default:
return (
<div className="bg-white rounded-lg p-6 shadow-lg">
@@ -461,6 +464,11 @@ const AnalysisResultDisplay: React.FC<AnalysisResultDisplayProps> = ({
return <CompleteZiweiAnalysis birthDate={birthDate} analysisData={preAnalysisData} recordId={recordId} />;
}
// 对于奇门遁甲,如果有预分析数据,直接返回 CompleteQimenAnalysis 组件
if (analysisType === 'qimen' && preAnalysisData) {
return <CompleteQimenAnalysis analysis={preAnalysisData} recordId={recordId} />;
}
// 如果没有分析结果数据
if (!analysisResult) {
return (

File diff suppressed because it is too large Load Diff

View File

@@ -11,7 +11,7 @@ export type ExportMode = 'server' | 'frontend';
interface DownloadButtonProps {
analysisData: any;
analysisType: 'bazi' | 'ziwei' | 'yijing';
analysisType: 'bazi' | 'ziwei' | 'yijing' | 'qimen';
userName?: string;
onDownload?: (format: DownloadFormat) => Promise<void>;
className?: string;
@@ -480,6 +480,7 @@ const DownloadButton: React.FC<DownloadButtonProps> = ({
case 'bazi': return '八字命理';
case 'ziwei': return '紫微斗数';
case 'yijing': return '易经占卜';
case 'qimen': return '奇门遁甲';
default: return '命理';
}
};

View File

@@ -8,6 +8,8 @@ interface YijingQuestionSelectorProps {
value: string;
onChange: (value: string) => void;
className?: string;
label?: string;
placeholder?: string;
}
// 问题分类和预设问题数据
@@ -115,7 +117,9 @@ const questionCategories = {
export const YijingQuestionSelector: React.FC<YijingQuestionSelectorProps> = ({
value,
onChange,
className
className,
label = '占卜问题',
placeholder = '请输入您要占卜的问题'
}) => {
const [selectedCategory, setSelectedCategory] = useState<string>('');
const [selectedQuestion, setSelectedQuestion] = useState<string>('');
@@ -261,10 +265,10 @@ variant="default"
{/* 主要问题输入框 */}
<ChineseInput
label="占卜问题"
label={label}
value={value}
onChange={(e) => onChange(e.target.value)}
placeholder="请输入您希望占卜的具体问题,或选择上方预设问题"
placeholder={placeholder}
required
variant="filled"
helperText="💡 提示:问题越具体,占卜结果越准确。您可以使用预设问题或自行输入。"