Files
Mdeical_Sur_Report/src/App.tsx
admin 014aca8619 Initialize backendized SurClaw report system
- Add React/Vite frontend for login, dashboard, reports, templates, users, settings, AI, speech, and media workflows.

- Add NestJS/Prisma/PostgreSQL backend with auth, dashboard stats, reports, templates, users, departments, settings, files, AI, speech, audit logs, and HTML sanitization.

- Add Prisma schema, migrations, seed data, persistent app sessions, Docker/Nginx deployment files, and upload volume configuration.

- Add Vitest, Playwright, backend integration tests, and project documentation for requirements, design, permissions, API contracts, testing, deployment, security, and progress.

- Configure production local fallback switch and remove unused Gemini direct dependency/env wiring.
2026-05-02 01:41:57 +08:00

46 lines
1.8 KiB
TypeScript

import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom';
import type { ReactElement } from 'react';
import Login from './pages/Login';
import Dashboard from './pages/Dashboard';
import ReportEditor from './pages/ReportEditor';
import ReportManage from './pages/ReportManage';
import ReportView from './pages/ReportView';
import TemplateManage from './pages/TemplateManage';
import UserManage from './pages/UserManage';
import SystemSettings from './pages/SystemSettings';
import { AuthProvider, useAuth } from './auth/AuthContext';
function RequireAuth({ children }: { children: ReactElement }) {
const { user, isLoading } = useAuth();
if (isLoading && !user) {
return <div className="min-h-screen bg-bg flex items-center justify-center text-sm font-semibold text-text-muted">...</div>;
}
if (!user) {
return <Navigate to="/" replace />;
}
return children;
}
export default function App() {
return (
<AuthProvider>
<Router>
<Routes>
<Route path="/" element={<Login />} />
<Route path="/dashboard" element={<RequireAuth><Dashboard /></RequireAuth>} />
<Route path="/report-editor" element={<RequireAuth><ReportEditor /></RequireAuth>} />
<Route path="/report-manage" element={<RequireAuth><ReportManage /></RequireAuth>} />
<Route path="/report-view/:id" element={<RequireAuth><ReportView /></RequireAuth>} />
<Route path="/template-manage" element={<RequireAuth><TemplateManage /></RequireAuth>} />
<Route path="/user-manage" element={<RequireAuth><UserManage /></RequireAuth>} />
<Route path="/system-settings" element={<RequireAuth><SystemSettings /></RequireAuth>} />
<Route path="*" element={<Navigate to="/" replace />} />
</Routes>
</Router>
</AuthProvider>
);
}