import React, { useState, useEffect, Suspense } from 'react'; import { Routes, Route, Navigate } from 'react-router-dom'; import type { User } from '@/types'; import { AuthContext, AuthContextType } from '@/contexts/AuthContext'; import { authAPI } from '@/api'; // Layouts(保留为即时加载,构成应用外壳) import FrontLayout from '@/components/layout/FrontLayout'; import AdminLayout from '@/components/layout/AdminLayout'; // 路由级代码分割:每个页面独立打包成 chunk,首屏只加载外壳与公共依赖, // 访问具体页面时才按需加载对应 chunk,显著加快首屏渲染与路由切换速度。 const LandingPage = React.lazy(() => import('@/pages/front/LandingPage')); const LoginPage = React.lazy(() => import('@/pages/front/LoginPage')); const ChatPage = React.lazy(() => import('@/pages/front/ChatPage')); const KnowledgePage = React.lazy(() => import('@/pages/front/KnowledgePage')); const MarketPage = React.lazy(() => import('@/pages/front/MarketPage')); const TokenDashboardPage = React.lazy(() => import('@/pages/front/TokenDashboardPage')); const PricingPage = React.lazy(() => import('@/pages/front/PricingPage')); const ProfilePage = React.lazy(() => import('@/pages/front/ProfilePage')); const NotificationPage = React.lazy(() => import('@/pages/front/NotificationPage')); const AssetsPage = React.lazy(() => import('@/pages/front/AssetsPage')); const NovelPreviewPage = React.lazy(() => import('@/pages/front/NovelPreviewPage')); const EvolutionDashboard = React.lazy(() => import('@/pages/front/EvolutionDashboard')); const AdminDashboard = React.lazy(() => import('@/pages/admin/Dashboard')); const AdminUsers = React.lazy(() => import('@/pages/admin/Users')); const AdminModels = React.lazy(() => import('@/pages/admin/Models')); const AdminSiteSettings = React.lazy(() => import('@/pages/admin/SiteSettings')); const AdminSmsConfig = React.lazy(() => import('@/pages/admin/SmsConfig')); const AdminPayment = React.lazy(() => import('@/pages/admin/Payment')); const AdminServices = React.lazy(() => import('@/pages/admin/Services')); const AdminMembership = React.lazy(() => import('@/pages/admin/Membership')); const AdminAds = React.lazy(() => import('@/pages/admin/Ads')); const AdminMarket = React.lazy(() => import('@/pages/admin/Market')); const AdminLogs = React.lazy(() => import('@/pages/admin/Logs')); const AdminSkills = React.lazy(() => import('@/pages/admin/Skills')); const AdminAgents = React.lazy(() => import('@/pages/admin/Agents')); const AdminCodeExec = React.lazy(() => import('@/pages/admin/CodeExec')); const DistributionBuilder = React.lazy(() => import('@/pages/admin/DistributionBuilder')); const ImBots = React.lazy(() => import('@/pages/admin/ImBots')); const PrivacySettings = React.lazy(() => import('@/pages/admin/PrivacySettings')); const Promotion = React.lazy(() => import('@/pages/admin/Promotion')); const Achievement = React.lazy(() => import('@/pages/admin/Achievement')); const Tenant = React.lazy(() => import('@/pages/admin/Tenant')); const Billing = React.lazy(() => import('@/pages/admin/Billing')); const Analytics = React.lazy(() => import('@/pages/admin/Analytics')); const Observability = React.lazy(() => import('@/pages/admin/Observability')); const AdminKnowledge = React.lazy(() => import('@/pages/admin/Knowledge')); const AdminWorkflow = React.lazy(() => import('@/pages/admin/Workflow')); const AdminStorage = React.lazy(() => import('@/pages/admin/Storage')); const AdminDeveloper = React.lazy(() => import('@/pages/admin/Developer')); const AdminDeveloperTools = React.lazy(() => import('@/pages/admin/DeveloperTools')); const AdminAutomation = React.lazy(() => import('@/pages/admin/Automation')); const AdminMcp = React.lazy(() => import('@/pages/admin/Mcp')); const AdminApps = React.lazy(() => import('@/pages/admin/Apps')); const AssetCenter = React.lazy(() => import('@/pages/admin/AssetCenter')); const UserPortal = React.lazy(() => import('@/pages/UserPortal')); const WechatBot = React.lazy(() => import('@/pages/front/WechatBot')); const ImBotHub = React.lazy(() => import('@/pages/front/ImBotHub')); const AppServices = React.lazy(() => import('@/pages/front/AppServices')); const pageFallback =