/**
* 应用根组件:BrowserRouter + 登录/路由守卫 + AppShell 布局壳 + 页面路由。
*/
import { BrowserRouter, Routes, Route, Navigate, Outlet } from 'react-router-dom';
import { useAuthStore } from './stores/authStore.js';
import { AppShell } from './app/AppShell.js';
import { Dashboard } from './pages/Dashboard.js';
import { NewAssessment } from './pages/NewAssessment.js';
import { AssessmentDetail } from './pages/AssessmentDetail.js';
import { Login } from './pages/Login.js';
import { RateManagement } from './pages/RateManagement.js';
import { RedlineManagement } from './pages/RedlineManagement.js';
import { CustomerManagement } from './pages/CustomerManagement.js';
import { UserManagement } from './pages/UserManagement.js';
/** 路由守卫:未登录重定向到登录页。 */
function ProtectedRoute(): JSX.Element {
const { isAuthenticated } = useAuthStore();
return isAuthenticated ? : ;
}
/** 角色守卫:当前角色不在允许列表时重定向回首页。 */
function RoleRoute({ allow }: { readonly allow: readonly string[] }): JSX.Element {
const { user } = useAuthStore();
const role = user?.role ?? '';
return allow.includes(role) ? : ;
}
export function App(): JSX.Element {
return (
} />
}>
}>
} />
} />
} />
{/* 费率/红线管理:仅管理层 */}
}>
} />
} />
{/* 客户档案:销售 + 管理层 */}
}>
} />
{/* 用户管理:系统管理员 */}
}>
} />
);
}