feat(markdown-ai): 添加可视化图表生成功能

- 新增 charts 分析类型,支持从文档中提取数据并生成可视化图表
- 集成 visualization_service 服务进行数据分析和图表生成
- 扩展 MarkdownAIService 支持 JSON 解析和图表数据处理
- 添加 _parse_chart_json 方法处理 LLM 返回的 JSON 数据
- 更新 API 接口定义支持 chart_data 返回字段
- 在前端界面添加图表分析选项和对应图标显示
- 修复 ExcelStorageService 中 id 列名为 MySQL 保留字的问题
This commit is contained in:
2026-04-02 13:28:39 +08:00
parent 7c19e49988
commit 41e5eaaa2d
4 changed files with 152 additions and 8 deletions

View File

@@ -84,7 +84,7 @@ const Documents: React.FC = () => {
// Markdown AI 分析相关状态
const [mdAnalysis, setMdAnalysis] = useState<AIMarkdownAnalyzeResult | null>(null);
const [mdAnalysisType, setMdAnalysisType] = useState<'summary' | 'outline' | 'key_points' | 'questions' | 'tags' | 'qa' | 'statistics' | 'section'>('summary');
const [mdAnalysisType, setMdAnalysisType] = useState<'summary' | 'outline' | 'key_points' | 'questions' | 'tags' | 'qa' | 'statistics' | 'section' | 'charts'>('summary');
const [mdUserPrompt, setMdUserPrompt] = useState('');
const [mdSections, setMdSections] = useState<MarkdownSection[]>([]);
const [mdSelectedSection, setMdSelectedSection] = useState<string>('');
@@ -517,6 +517,7 @@ const Documents: React.FC = () => {
case 'questions': return <MessageSquareCode size={20} />;
case 'tags': return <Tag size={20} />;
case 'qa': return <HelpCircle size={20} />;
case 'charts': return <TrendingUp size={20} />;
default: return <Sparkles size={20} />;
}
};
@@ -762,7 +763,8 @@ const Documents: React.FC = () => {
{ value: 'section', label: '章节分析', desc: '分章节详细分析' },
{ value: 'questions', label: '生成问题', desc: '生成理解性问题' },
{ value: 'tags', label: '生成标签', desc: '提取主题标签' },
{ value: 'qa', label: '问答对', desc: '生成问答内容' }
{ value: 'qa', label: '问答对', desc: '生成问答内容' },
{ value: 'charts', label: '数据图表', desc: '生成可视化数据' }
].map(type => (
<SelectItem key={type.value} value={type.value}>
<div className="flex items-center gap-2">