import { useEffect } from 'react'; import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; import { ProjectList } from './components/ProjectList'; import { ProjectForm } from './components/ProjectForm'; import { ProjectDetails } from './pages/ProjectDetails'; import Models from './pages/Models'; import ModelDetail from './pages/ModelDetail'; import AiClassificationSettings from './pages/AiClassificationSettings'; import TemplateManagement from './pages/TemplateManagement'; import { MaterialModelBinding } from './pages/MaterialModelBinding'; import Tools from './pages/Tools'; import DataCleaningTool from './pages/tools/DataCleaningTool'; import JsonParserTool from './pages/tools/JsonParserTool'; import DebugPanelTool from './pages/tools/DebugPanelTool'; import ChatTool from './pages/tools/ChatTool'; import ChatTestPage from './pages/tools/ChatTestPage'; import WatermarkTool from './pages/tools/WatermarkTool'; import SimilaritySearchTool from './pages/tools/SimilaritySearchTool'; import BatchThumbnailGenerator from './pages/tools/BatchThumbnailGenerator'; import OutfitRecommendationTool from './pages/tools/OutfitRecommendationTool'; import AdvancedFilterTool from './pages/tools/AdvancedFilterTool'; import OutfitSearchTool from './pages/tools/OutfitSearchTool'; import OutfitFavoritesTool from './pages/tools/OutfitFavoritesTool'; import OutfitComparisonTool from './pages/tools/OutfitComparisonTool'; import MaterialSearchTool from './pages/tools/MaterialSearchTool'; import ImageGenerationTool from './pages/tools/ImageGenerationTool'; import VoiceCloneTool from './pages/tools/VoiceCloneTool'; import { EnrichedAnalysisDemo } from './pages/tools/EnrichedAnalysisDemo'; import MaterialCenter from './pages/MaterialCenter'; import VideoGeneration from './pages/VideoGeneration'; import { OutfitPhotoGenerationPage } from './pages/OutfitPhotoGeneration'; import Navigation from './components/Navigation'; import { NotificationSystem, useNotifications } from './components/NotificationSystem'; import { useProjectStore } from './store/projectStore'; import { useUIStore } from './store/uiStore'; import { CreateProjectRequest, UpdateProjectRequest } from './types/project'; import { screenAdaptationService } from './services/screenAdaptationService'; import "./App.css"; import './styles/design-system.css'; import './styles/animations.css'; /** * 主应用组件 * 遵循 Tauri 开发规范的应用架构设计 */ function App() { const { createProject, updateProject } = useProjectStore(); const { showCreateProjectModal, showEditProjectModal, editingProject, closeCreateProjectModal, closeEditProjectModal } = useUIStore(); // 通知系统 const { notifications, removeNotification, success, error } = useNotifications(); // 屏幕适配 useEffect(() => { const initScreenAdaptation = async () => { try { await screenAdaptationService.applySmartAdaptation(); console.log('屏幕适配初始化完成'); } catch (error) { console.error('屏幕适配初始化失败:', error); } }; initScreenAdaptation(); }, []); // 处理创建项目 const handleCreateProject = async (data: CreateProjectRequest) => { try { await createProject(data); success('项目创建成功', `项目"${data.name}"已创建`); closeCreateProjectModal(); } catch (err) { const errorMessage = err instanceof Error ? err.message : '未知错误'; error('项目创建失败', errorMessage); throw err; } }; // 处理更新项目 const handleUpdateProject = async (data: UpdateProjectRequest) => { if (!editingProject) return; try { await updateProject(editingProject.id, data); success('项目更新成功', `项目"${data.name}"已更新`); closeEditProjectModal(); } catch (err) { const errorMessage = err instanceof Error ? err.message : '未知错误'; error('项目更新失败', errorMessage); throw err; } }; return (
{/* 固定的导航栏 */} {/* 可滚动的主要内容区域 */}
} /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } />
{/* 创建项目模态框 */} {showCreateProjectModal && ( )} {/* 编辑项目模态框 */} {showEditProjectModal && editingProject && ( )} {/* 通知系统 */} {/* Modal 渲染容器 - 独立于主布局,避免复杂容器结构影响 */}
); } export default App;