import { Routes, Route, Navigate } from 'react-router-dom'
import { AppLayout } from '@/components/layout/AppLayout'
import { Dashboard } from '@/pages/Dashboard'
import { LegalAdvisor } from '@/pages/LegalAdvisor'
import { Decisions } from '@/pages/Decisions'
import { LifeAssistant } from '@/pages/LifeAssistant'
import { EmotionCenter } from '@/pages/EmotionCenter'
import { Settings } from '@/pages/Settings'
import { KnowledgeBase } from '@/pages/KnowledgeBase'
import { Experts } from '@/pages/Experts'
import { WorkbenchPendingServices, WorkbenchPending, WorkbenchReplied, WorkbenchUsers } from '@/pages/workbench'
import { ChatHistory } from '@/pages/ChatHistory'
import { MyProfile } from '@/pages/MyProfile'
import { AdminStats, AdminAiUsage, AdminExpertActivity, AdminUsers, AdminExperts } from '@/pages/admin'
import { Placeholder } from '@/pages/Placeholder'
import { Login } from '@/pages/Login'
import { isLoggedIn, getRole, type Role } from '@/lib/auth'
/** 路由守卫:未登录跳转登录页,角色不匹配跳转各自首页 */
function ProtectedRoute({ children, allowedRoles }: { children: React.ReactNode; allowedRoles?: Role[] }) {
if (!isLoggedIn()) {
return
}
const currentRole = getRole()
if (allowedRoles && !allowedRoles.includes(currentRole)) {
// 角色不匹配,跳转到各自首页
const homeMap: Record = { user: '/', expert: '/workbench', admin: '/admin' }
return
}
return <>{children}>
}
export default function App() {
return (
} />
}>
{/* 用户页面:仅用户可访问 */}
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
{/* 专家工作台:仅专家可访问,拆分为独立页面 */}
} />
} />
} />
} />
{/* 管理后台:仅管理员可访问,拆分为独立页面 */}
} />
} />
} />
} />
} />
} />
)
}