3v324v23's picture
chore: 彻底清理项目,符合 Hugging Face 部署规范
ae4ceef
import { BrowserRouter as Router, Routes, Route, Navigate, Outlet } from "react-router-dom";
import { useTranslation } from 'react-i18next';
import { useStore } from "@/store/useStore";
import Home from "@/pages/Home";
import LandingPage from "@/pages/Landing";
import AuthPage from "@/pages/Auth";
import NotFoundPage from "@/pages/NotFound";
import DashboardLayout from "@/pages/dashboard/Layout";
import OverviewPage from "@/pages/dashboard/Overview";
import ChatPage from "@/pages/dashboard/Chat";
import WorkflowPage from "@/pages/dashboard/Workflow";
import KnowledgePage from "@/pages/dashboard/Knowledge";
import StressTestPage from "@/pages/dashboard/StressTest";
import BillingPage from "@/pages/dashboard/Billing";
import AdminPage from "@/pages/dashboard/Admin";
import SettingsPage from "@/pages/dashboard/Settings";
import DeveloperHub from "@/pages/dashboard/DeveloperHub";
import PaymentCallback from "@/pages/PaymentCallback";
import PaymentModal from "@/components/PaymentModal";
import { FileWatcher } from "@/components/FileWatcher";
import { useEffect } from "react";
// 路由守卫
const ProtectedRoute = () => {
const { token } = useStore();
if (!token) return <Navigate to="/auth" replace />;
return <Outlet />;
};
// 管理员守卫
const AdminRoute = () => {
const { user } = useStore();
if (user?.role !== 'admin') return <Navigate to="/dashboard" replace />;
return <Outlet />;
};
export default function App() {
const { openPaymentModal, initDatabase } = useStore();
useEffect(() => {
initDatabase();
}, [initDatabase]);
useEffect(() => {
const params = new URLSearchParams(window.location.search);
const planId = params.get('openPaymentModal');
if (planId) {
openPaymentModal(planId === 'true' ? undefined : planId);
// 清除 URL 参数,避免刷新后再次弹出
const url = new URL(window.location.href);
url.searchParams.delete('openPaymentModal');
window.history.replaceState({}, '', url.toString());
}
}, [openPaymentModal]);
return (
<Router>
<PaymentModal />
<FileWatcher />
<Routes>
<Route path="/" element={<LandingPage />} />
<Route path="/auth" element={<AuthPage />} />
<Route path="/payment/callback" element={<PaymentCallback />} />
<Route element={<ProtectedRoute />}>
<Route path="/dashboard" element={<DashboardLayout />}>
<Route index element={<OverviewPage />} />
<Route path="chat" element={<ChatPage />} />
<Route path="workflow" element={<WorkflowPage />} />
<Route path="stresstest" element={<StressTestPage />} />
<Route path="knowledge" element={<KnowledgePage />} />
<Route path="billing" element={<BillingPage />} />
<Route path="settings" element={<SettingsPage />} />
<Route path="developer" element={<DeveloperHub />} />
{/* 管理员专属 */}
<Route element={<AdminRoute />}>
<Route path="admin" element={<AdminPage />} />
</Route>
</Route>
</Route>
{/* 404 */}
<Route path="*" element={<NotFoundPage />} />
</Routes>
</Router>
);
}