import React, { useState } from 'react'; import { useTheme } from '../contexts/ThemeContext'; import { BarChart, FileText, Table, Search, Send, Sparkles, Clock, ChevronRight, Bot, Loader2, Copy, CheckCheck, Download, RefreshCw, FileBarChart, Database, Brain, PieChart, LineChart, FileSpreadsheet, FileSearch, BookOpen, } from 'lucide-react'; interface LightAppCenterProps { onNavigate: (page: string) => void; initialApp?: 'analysis' | 'report' | 'data' | 'research'; } type AppType = 'analysis' | 'report' | 'data' | 'research'; interface AppCard { id: AppType; title: string; description: string; icon: React.ElementType; color: string; } const apps: AppCard[] = [ { id: 'analysis', title: '快速分析', description: '对文本、数据进行快速分析处理,提取关键信息和洞察', icon: BarChart, color: 'blue', }, { id: 'report', title: '报告生成', description: '基于输入内容生成结构化分析报告,支持多种格式', icon: FileText, color: 'green', }, { id: 'data', title: '数据处理', description: '数据清洗、转换、统计和可视化处理', icon: Table, color: 'purple', }, { id: 'research', title: '研究助手', description: '辅助学术研究和资料整理,支持文献分析和摘要', icon: Search, color: 'orange', }, ]; const LightAppCenter: React.FC = ({ onNavigate, initialApp }) => { const { theme } = useTheme(); const isDark = theme === 'dark'; const [selectedApp, setSelectedApp] = useState(initialApp || null); const [input, setInput] = useState(''); const [isProcessing, setIsProcessing] = useState(false); const [result, setResult] = useState(''); const [copied, setCopied] = useState(false); const [activeTab, setActiveTab] = useState<'input' | 'history'>('input'); const handleAppSelect = (app: AppCard) => { setSelectedApp(app.id); setInput(''); setResult(''); }; const handleSubmit = async () => { if (!input.trim() || !selectedApp) return; setIsProcessing(true); setResult(''); // 模拟处理过程 await new Promise(resolve => setTimeout(resolve, 1500)); // 根据不同应用生成模拟结果 let mockResult = ''; switch (selectedApp) { case 'analysis': mockResult = `【分析结果】 1. 关键主题 • 主题A:核心概念和定义 • 主题B:应用场景和实践 • 主题C:发展趋势和展望 2. 情感分析 • 整体倾向:中性偏正面 • 关键情感词:创新、发展、应用 3. 关键实体 • 机构:示例机构 • 人物:相关专家 • 地点:主要应用区域 4. 重要数据 • 增长率:15-20% • 覆盖范围:多个领域 • 时间周期:持续进行`; break; case 'report': mockResult = `# 分析报告 ## 概述 基于提供的内容,生成以下分析报告。 ## 主要发现 ### 1. 核心内容 详细描述主要发现和观察结果... ### 2. 深入分析 对关键点进行深入分析和解读... ### 3. 结论建议 基于分析结果提出建议和行动方案... ## 附录 - 数据来源 - 分析方法 - 局限性说明`; break; case 'data': mockResult = `【数据处理结果】 | 指标 | 数值 | 变化 | |------|------|------| | 样本量 | 1,234 | +12% | | 准确率 | 95.6% | +3.2% | | 覆盖率 | 89.3% | +8.7% | 统计摘要: • 总计处理 1,234 条记录 • 有效数据 1,156 条(93.7%) • 异常数据 78 条(6.3%) 图表数据已准备好可视化`; break; case 'research': mockResult = `【研究摘要】 ## 文献概览 找到相关研究文献 12 篇,主要涉及以下方向: ### 核心观点 1. 研究方向A - 理论基础 2. 研究方向B - 方法论 3. 研究方向C - 实证应用 ### 关键结论 • 结论1:... • 结论2:... • 结论3:... ### 研究空白 当前研究存在以下空白点,可作为进一步探索的方向... ### 建议阅读 1. 《核心文献一》- 理论基础 2. 《核心文献二》- 方法创新 3. 《核心文献三》- 实践应用`; break; } setResult(mockResult); setIsProcessing(false); }; const handleCopy = () => { navigator.clipboard.writeText(result); setCopied(true); setTimeout(() => setCopied(false), 2000); }; const getColorClasses = (color: string) => { const colors: Record = { blue: { bg: isDark ? 'bg-blue-500/20' : 'bg-blue-50', text: isDark ? 'text-blue-400' : 'text-blue-600', border: isDark ? 'border-blue-500/30' : 'border-blue-200', light: isDark ? 'hover:bg-blue-500/30' : 'hover:bg-blue-100', }, green: { bg: isDark ? 'bg-green-500/20' : 'bg-green-50', text: isDark ? 'text-green-400' : 'text-green-600', border: isDark ? 'border-green-500/30' : 'border-green-200', light: isDark ? 'hover:bg-green-500/30' : 'hover:bg-green-100', }, purple: { bg: isDark ? 'bg-purple-500/20' : 'bg-purple-50', text: isDark ? 'text-purple-400' : 'text-purple-600', border: isDark ? 'border-purple-500/30' : 'border-purple-200', light: isDark ? 'hover:bg-purple-500/30' : 'hover:bg-purple-100', }, orange: { bg: isDark ? 'bg-orange-500/20' : 'bg-orange-50', text: isDark ? 'text-orange-400' : 'text-orange-600', border: isDark ? 'border-orange-500/30' : 'border-orange-200', light: isDark ? 'hover:bg-orange-500/30' : 'hover:bg-orange-100', }, }; return colors[color]; }; const selectedAppData = apps.find(a => a.id === selectedApp); return (
{/* 页面标题 */}

轻应用中心

快速调用工具完成临时分析需求

{selectedApp && ( )}
{/* 应用选择卡片 */} {!selectedApp && (
{apps.map((app) => { const Icon = app.icon; const colors = getColorClasses(app.color); return ( ); })}
)} {/* 应用工作区 */} {selectedApp && selectedAppData && (
{/* 应用标题栏 */}
{React.createElement(selectedAppData.icon, { className: `w-5 h-5 ${getColorClasses(selectedAppData.color).text}` })}

{selectedAppData.title}

{selectedAppData.description}

{/* 标签页 */}
{activeTab === 'input' ? (
{/* 输入区域 */}