// src/router/index.jsx
import React from 'react'
import { Routes, Route, Navigate } 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 PostDetailJWLLL    from '../components/PostDetailJWLLL'
import UploadPageJWLLL    from '../components/UploadPageJWLLL'

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,
  RequireOwnProfile,
  RequireAdminOwn,
  RequireSuperAdminOwn
} from './Guards'

export default function AppRoutes() {
  return (
    <Routes>
      {/* 1. 公开路由 */}
      <Route path="/login"           element={<LoginPage />} />
      <Route path="/register"        element={<RegisterPage />} />
      <Route path="/forgot-password" element={<ForgotPasswordPage />} />

      {/* 2. 受保护路由 */}
      <Route element={<RequireAuth />}>
        {/* 2.1 任何登录用户都能看自己的主页 */}
        <Route element={<RequireOwnProfile />}>
          <Route path="/user/:userId" element={<UserProfile />} />
        </Route>        {/* 2.2 普通用户 */}
        <Route element={<RequireRole allowedRoles={['user']} />}>
          <Route path="/home"               element={<HomeFeed />} />
          <Route path="/post/:id"           element={<PostDetailJWLLL />} />
          <Route path="/posts/new"          element={<CreatePost />} />
          <Route path="/posts/edit/:postId" element={<CreatePost />} />
          <Route path="/upload-jwlll"       element={<UploadPageJWLLL />} />
          <Route path="/notebooks"          element={<NotebookPage />} />
          <Route path="/dashboard/*"        element={<PlaceholderPage />} />
          <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="/"                   element={<Navigate to="/home" replace />} />
        </Route>

        {/* 2.3 Admin 自己的页面 */}
        <Route element={<RequireAdminOwn />}>
          <Route path="/admin/:userId" element={<AdminPage />} />
        </Route>
        <Route element={<RequireRole allowedRoles={['admin']} />}>
          <Route path="/test-dashboard" element={<TestDashboard />} />
        </Route>

        {/* 2.4 SuperAdmin 自己的区域 */}
        <Route element={<RequireSuperAdminOwn />}>
          <Route path="/superadmin/:userId/*" element={<SuperAdmin />}>
            <Route index element={<Navigate to="users" replace />} />
            <Route path="users"     element={<UserManagement />} />
            <Route path="dashboard" element={<LogsDashboard />}>
              <Route index element={<Navigate to="transactions" replace />} />
              <Route path="transactions" element={<TransactionLogs />} />
              <Route path="performance"  element={<PerformanceLogs />} />
            </Route>
          </Route>
        </Route>
      </Route>

      {/* 3. 兜底：未匹配一律回登录 */}
      <Route path="*" element={<Navigate to="/login" replace />} />
    </Routes>
  )
}
