You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
3.2 KiB
TypeScript

import { BrowserRouter, Routes, Route } from 'react-router-dom';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { Sidebar } from './components/layout/Sidebar';
import { DashboardPage } from './pages/Dashboard';
import { LeaderboardPage } from './pages/Leaderboard';
import { ExperimentsPage } from './pages/Experiments';
import { ExperimentDetailPage } from './pages/ExperimentDetail';
import { ExperimentDiffPage } from './pages/ExperimentDiff';
import { LineagePage } from './pages/Lineage';
import { BacktestPage, BacktestTaskDetailPage, BacktestResultsPage, BacktestDirectResultsPage } from './pages/Backtest';
import { BacktestComparePage } from './pages/BacktestCompare';
import { PaperTradingPage } from './pages/PaperTrading';
import { CashParkingPage } from './pages/CashParking';
import { ComposeStrategyPage } from './pages/ComposeStrategy';
import { IntradayBacktestPage, IntradayTaskDetailPage } from './pages/IntradayBacktest';
import { OrbTradingPage } from './pages/OrbTrading';
import { AdvisorPage } from './pages/Advisor';
import { LogsPage } from './pages/Logs';
const qc = new QueryClient({
defaultOptions: {
queries: { staleTime: 30_000, retry: 1 },
},
});
export default function App() {
return (
<QueryClientProvider client={qc}>
<BrowserRouter>
<div style={{ display: 'flex', minHeight: '100vh', width: '100%' }}>
<Sidebar />
<main style={{ flex: 1, minWidth: 0, marginLeft: 'var(--sidebar-w, 230px)', minHeight: '100vh', overflow: 'auto', transition: 'margin-left 0.18s ease' }}>
<Routes>
<Route path="/" element={<DashboardPage />} />
<Route path="/leaderboard" element={<LeaderboardPage />} />
<Route path="/experiments" element={<ExperimentsPage />} />
<Route path="/experiments/compose" element={<ComposeStrategyPage />} />
<Route path="/experiments/:name" element={<ExperimentDetailPage />} />
<Route path="/experiments/:name/diff" element={<ExperimentDiffPage />} />
<Route path="/experiments/:name/diff/:other" element={<ExperimentDiffPage />} />
<Route path="/lineage/:name" element={<LineagePage />} />
<Route path="/backtest" element={<BacktestPage />} />
<Route path="/backtest/compare" element={<BacktestComparePage />} />
<Route path="/backtest/tasks/:taskId" element={<BacktestTaskDetailPage />} />
<Route path="/backtest/results/:runId" element={<BacktestResultsPage />} />
<Route path="/backtest/direct-results/:taskId" element={<BacktestDirectResultsPage />} />
<Route path="/paper" element={<PaperTradingPage />} />
<Route path="/intraday" element={<IntradayBacktestPage />} />
<Route path="/intraday/tasks/:taskId" element={<IntradayTaskDetailPage />} />
<Route path="/orb-trading" element={<OrbTradingPage />} />
<Route path="/advisor" element={<AdvisorPage />} />
<Route path="/logs" element={<LogsPage />} />
<Route path="/docs/cash-parking" element={<CashParkingPage />} />
</Routes>
</main>
</div>
</BrowserRouter>
</QueryClientProvider>
);
}