// src/router/index.jsx
import React from 'react'
import { Routes, Route, Navigate, Outlet } from 'react-router-dom'

import LoginPage           from '../pages/LoginPage/LoginPage'
import RegisterPage        from '../pages/RegisterPage/RegisterPage'
import ForgotPasswordPage  from '../pages/ForgotPasswordPage/ForgotPasswordPage'
import TestDashboard       from '../pages/TestDashboard/TestDashboard'
import HomeFeed            from '../components/HomeFeed'
import CreatePost          from '../components/CreatePost'
import NotebookPage        from '../components/NotebookPage'
import PlaceholderPage     from '../components/PlaceholderPage'
import UserProfile         from '../components/UserProfile'

import AdminPage           from '../components/Admin'
import SuperAdmin          from '../components/SuperAdmin'
import UserManagement      from '../components/UserManagement'
import LogsDashboard       from '../components/LogsDashboard'
import TransactionLogs     from '../components/TransactionLogs'
import PerformanceLogs     from '../components/PerformanceLogs'

import { RequireAuth, RequireRole } from './Guards'

export default function AppRoutes() {
  return (
    <Routes>
      {/* ### 公开路由（不用登录就能看） */}
      <Route path="/login"            element={<LoginPage />} />
      <Route path="/register"         element={<RegisterPage />} />
      <Route path="/forgot-password"  element={<ForgotPasswordPage />} />

      {/* ### 需要登录才能访问的区域 */}
      <Route element={<RequireAuth />}>
        {/* ---- 普通用户区块 ---- */}
        <Route element={<RequireRole allowedRoles={['user']} />}>
          <Route path="/home"      element={<HomeFeed />} />
          <Route path="/posts/new" element={<CreatePost />} />
          <Route path="/notebooks" element={<NotebookPage />} />
          <Route path="/user/:userId" element={<UserProfile />} />
          <Route path="/activity"  element={<PlaceholderPage pageId="activity" />} />
          <Route path="/notes"     element={<PlaceholderPage pageId="notes" />} />
          <Route path="/creator"   element={<PlaceholderPage pageId="creator" />} />
          <Route path="/journal"   element={<PlaceholderPage pageId="journal" />} />

          <Route path="/dashboard/*" element={<PlaceholderPage />} />
          <Route path="/posts/new"           element={<CreatePost />} />
          <Route path="/posts/edit/:postId"  element={<CreatePost />} />
          <Route path="/" element={<Navigate to="/dashboard/overview" replace />} />
        </Route>

        {/* ---- 管理员区块 ---- */}
        <Route element={<RequireRole allowedRoles={['admin']} />}>
          <Route path="/admin" element={<AdminPage />} />
          <Route path="/test-dashboard" element={<TestDashboard  />} />
        </Route>

        {/* ---- 超级管理员区块 ---- */}
        <Route element={<RequireRole allowedRoles={['superadmin']} />}>
          <Route path="/superadmin" element={<SuperAdmin />}>
            <Route index element={<Navigate to="users" replace />} />
            <Route path="users"         element={<UserManagement superAdminId={3} />} />
            <Route path="dashboard"     element={<LogsDashboard />}>
              <Route index element={<Navigate to="transactions" replace />} />
              <Route path="transactions" element={<TransactionLogs userId={1} />} />
              <Route path="performance"  element={<PerformanceLogs userId={1} />} />
            </Route>
          </Route>
        </Route>
      </Route>

      {/* ### 兜底：不认识的地址都重定向到 /login */}
      <Route path="*" element={<Navigate to="/login" replace />} />
    </Routes>
  )
}
