fix(web): recover pre-render boot failures

This commit is contained in:
lingniu
2026-07-16 06:04:30 +08:00
parent 4302fc8d45
commit 97fe1704a2
9 changed files with 196 additions and 20 deletions

View File

@@ -1,8 +1,9 @@
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { useEffect } from 'react';
import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom';
import { AppShell } from './layout/AppShell';
import { AuthGate } from './auth/AuthGate';
import { RoutePage } from './routing/RouteBoundary';
import { PlatformErrorBoundary, RoutePage } from './routing/RouteBoundary';
import { RoutePages } from './routing/routeModules';
import { ROUTER_FUTURE } from './routing/routerConfig';
import { QUERY_MEMORY } from './queryPolicy';
@@ -25,26 +26,37 @@ export function createPlatformQueryClient() {
}
const queryClient = createPlatformQueryClient();
export const PLATFORM_READY_EVENT = 'vehicle-platform:ready';
function PlatformReadySignal() {
useEffect(() => {
window.dispatchEvent(new Event(PLATFORM_READY_EVENT));
}, []);
return null;
}
export function AppV2() {
return (
<QueryClientProvider client={queryClient}>
<AuthGate><BrowserRouter future={ROUTER_FUTURE}>
<Routes>
<Route element={<AppShell />}>
<Route index element={<Navigate to="/monitor" replace />} />
<Route path="/monitor" element={<RoutePage page={RoutePages.Monitor} label="全局监控" />} />
<Route path="/vehicles/:vin?" element={<RoutePage page={RoutePages.Vehicles} label="车辆查询" />} />
<Route path="/tracks" element={<RoutePage page={RoutePages.Tracks} label="轨迹回放" />} />
<Route path="/history" element={<RoutePage page={RoutePages.History} label="历史数据" />} />
<Route path="/statistics" element={<RoutePage page={RoutePages.Statistics} label="里程查询" />} />
<Route path="/access" element={<RoutePage page={RoutePages.Access} label="接入管理" />} />
<Route path="/alerts/*" element={<RoutePage page={RoutePages.Alerts} label="告警中心" />} />
<Route path="/operations" element={<RoutePage page={RoutePages.Operations} label="运维质量" />} />
<Route path="*" element={<Navigate to="/monitor" replace />} />
</Route>
</Routes>
</BrowserRouter></AuthGate>
<PlatformReadySignal />
<PlatformErrorBoundary>
<AuthGate><BrowserRouter future={ROUTER_FUTURE}>
<Routes>
<Route element={<AppShell />}>
<Route index element={<Navigate to="/monitor" replace />} />
<Route path="/monitor" element={<RoutePage page={RoutePages.Monitor} label="全局监控" />} />
<Route path="/vehicles/:vin?" element={<RoutePage page={RoutePages.Vehicles} label="车辆查询" />} />
<Route path="/tracks" element={<RoutePage page={RoutePages.Tracks} label="轨迹回放" />} />
<Route path="/history" element={<RoutePage page={RoutePages.History} label="历史数据" />} />
<Route path="/statistics" element={<RoutePage page={RoutePages.Statistics} label="里程查询" />} />
<Route path="/access" element={<RoutePage page={RoutePages.Access} label="接入管理" />} />
<Route path="/alerts/*" element={<RoutePage page={RoutePages.Alerts} label="告警中心" />} />
<Route path="/operations" element={<RoutePage page={RoutePages.Operations} label="运维质量" />} />
<Route path="*" element={<Navigate to="/monitor" replace />} />
</Route>
</Routes>
</BrowserRouter></AuthGate>
</PlatformErrorBoundary>
</QueryClientProvider>
);
}