You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

315 lines
13 KiB

11 months ago
10 months ago
11 months ago
11 months ago
10 months ago
10 months ago
11 months ago
11 months ago
  1. import React, { lazy, Suspense } from "react";
  2. import { Routes, Route } from "react-router-dom";
  3. import { I18nextProvider } from "react-i18next";
  4. import { ContextWrapper } from "@/AuthContext";
  5. import PrivateRoute, {
  6. AdminRoute,
  7. ManagerRoute,
  8. } from "@/components/PrivateRoute";
  9. import { ToastContainer } from "react-toastify";
  10. import "react-toastify/dist/ReactToastify.css";
  11. import Login from "@/pages/Login";
  12. import SimpleSSOPassthrough from "@/pages/Login/SSO/simple";
  13. import OnboardingFlow from "@/pages/OnboardingFlow";
  14. import i18n from "./i18n";
  15. import { PfpProvider } from "./PfpContext";
  16. import { LogoProvider } from "./LogoContext";
  17. import { FullScreenLoader } from "./components/Preloader";
  18. import { ThemeProvider } from "./ThemeContext";
  19. const Main = lazy(() => import("@/pages/Main")); // 原首页-AI问政
  20. const Home = lazy(() => import("@/pages/Home")); // 新首页
  21. const PolicyLibrary = lazy(() => import("@/pages/PolicyLibrary")); // 政策库
  22. const DataAnalysis = lazy(() => import("@/pages/DataAnalysis")); // 数据分析
  23. const Tendency = lazy(() => import("@/pages/Tendency")); // 趋势洞察
  24. const Yuqingfenxi = lazy(() => import("@/pages/Yuqingfenxi")); // 分析详情
  25. const Economics = lazy(() => import("@/pages/Economics")); // 经济发展
  26. const Talents = lazy(() => import("@/pages/Talents")); // 人才分析
  27. const Industry = lazy(() => import("@/pages/Industry")); // 产业分析
  28. const TrendPrediction = lazy(() => import("@/pages/TrendPrediction")); // 趋势预测
  29. const ReportGeneration = lazy(() => import("@/pages/ReportGeneration")); // 报告生成
  30. const Report = lazy(() => import("@/pages/Report")); // 报告生成1
  31. const InvitePage = lazy(() => import("@/pages/Invite"));
  32. const WorkspaceChat = lazy(() => import("@/pages/WorkspaceChat"));
  33. const AdminUsers = lazy(() => import("@/pages/Admin/Users"));
  34. const AdminSection = lazy(() => import("@/pages/Admin/Section"));
  35. const AdminInvites = lazy(() => import("@/pages/Admin/Invitations"));
  36. const AdminWorkspaces = lazy(() => import("@/pages/Admin/Workspaces"));
  37. const AdminLogs = lazy(() => import("@/pages/Admin/Logging"));
  38. const AdminAgents = lazy(() => import("@/pages/Admin/Agents"));
  39. const GeneralChats = lazy(() => import("@/pages/GeneralSettings/Chats"));
  40. const GeneralAppearance = lazy(
  41. () => import("@/pages/GeneralSettings/Appearance")
  42. );
  43. const GeneralApiKeys = lazy(() => import("@/pages/GeneralSettings/ApiKeys"));
  44. const GeneralLLMPreference = lazy(
  45. () => import("@/pages/GeneralSettings/LLMPreference")
  46. );
  47. const GeneralTranscriptionPreference = lazy(
  48. () => import("@/pages/GeneralSettings/TranscriptionPreference")
  49. );
  50. const GeneralAudioPreference = lazy(
  51. () => import("@/pages/GeneralSettings/AudioPreference")
  52. );
  53. const GeneralEmbeddingPreference = lazy(
  54. () => import("@/pages/GeneralSettings/EmbeddingPreference")
  55. );
  56. const EmbeddingTextSplitterPreference = lazy(
  57. () => import("@/pages/GeneralSettings/EmbeddingTextSplitterPreference")
  58. );
  59. const GeneralVectorDatabase = lazy(
  60. () => import("@/pages/GeneralSettings/VectorDatabase")
  61. );
  62. const GeneralSecurity = lazy(() => import("@/pages/GeneralSettings/Security"));
  63. const GeneralBrowserExtension = lazy(
  64. () => import("@/pages/GeneralSettings/BrowserExtensionApiKey")
  65. );
  66. const WorkspaceSettings = lazy(() => import("@/pages/WorkspaceSettings"));
  67. const EmbedConfigSetup = lazy(
  68. () => import("@/pages/GeneralSettings/EmbedConfigs")
  69. );
  70. const EmbedChats = lazy(() => import("@/pages/GeneralSettings/EmbedChats"));
  71. const PrivacyAndData = lazy(
  72. () => import("@/pages/GeneralSettings/PrivacyAndData")
  73. );
  74. const ExperimentalFeatures = lazy(
  75. () => import("@/pages/Admin/ExperimentalFeatures")
  76. );
  77. const LiveDocumentSyncManage = lazy(
  78. () => import("@/pages/Admin/ExperimentalFeatures/Features/LiveSync/manage")
  79. );
  80. const AgentBuilder = lazy(() => import("@/pages/Admin/AgentBuilder"));
  81. const CommunityHubTrending = lazy(
  82. () => import("@/pages/GeneralSettings/CommunityHub/Trending")
  83. );
  84. const CommunityHubAuthentication = lazy(
  85. () => import("@/pages/GeneralSettings/CommunityHub/Authentication")
  86. );
  87. const CommunityHubImportItem = lazy(
  88. () => import("@/pages/GeneralSettings/CommunityHub/ImportItem")
  89. );
  90. export default function App() {
  91. return (
  92. <ThemeProvider>
  93. <Suspense fallback={<FullScreenLoader />}>
  94. <ContextWrapper>
  95. <LogoProvider>
  96. <PfpProvider>
  97. <I18nextProvider i18n={i18n}>
  98. <Routes>
  99. <Route path="/Main" element={<PrivateRoute Component={Main} />} />
  100. <Route path="/" element={<PrivateRoute Component={Home} />} />
  101. <Route
  102. path="/home/PolicyLibrary"
  103. element={<ManagerRoute Component={PolicyLibrary} />}
  104. />
  105. <Route
  106. path="/home/Tendency"
  107. element={<ManagerRoute Component={Tendency} />}
  108. />
  109. <Route
  110. path="/home/Yuqingfenxi"
  111. element={<ManagerRoute Component={Yuqingfenxi} />}
  112. />
  113. <Route
  114. path="/home/TrendPrediction"
  115. element={<ManagerRoute Component={TrendPrediction} />}
  116. />
  117. <Route
  118. path="/home/Economics"
  119. element={<ManagerRoute Component={Economics} />}
  120. />
  121. <Route
  122. path="/home/Talents"
  123. element={<ManagerRoute Component={Talents} />}
  124. />
  125. <Route
  126. path="/home/Industry"
  127. element={<ManagerRoute Component={Industry} />}
  128. />
  129. <Route
  130. path="/home/DataAnalysis"
  131. element={<ManagerRoute Component={DataAnalysis} />}
  132. />
  133. <Route
  134. path="/home/ReportGeneration"
  135. element={<ManagerRoute Component={ReportGeneration} />}
  136. />
  137. <Route
  138. path="/home/Report"
  139. element={<ManagerRoute Component={Report} />}
  140. />
  141. <Route path="/login" element={<Login />} />
  142. <Route
  143. path="/sso/simple"
  144. element={<SimpleSSOPassthrough />}
  145. />
  146. <Route
  147. path="/workspace/:slug/settings/:tab"
  148. element={<ManagerRoute Component={WorkspaceSettings} />}
  149. />
  150. <Route
  151. path="/workspace/:slug"
  152. element={<PrivateRoute Component={WorkspaceChat} />}
  153. />
  154. <Route
  155. path="/workspace/:slug/t/:threadSlug"
  156. element={<PrivateRoute Component={WorkspaceChat} />}
  157. />
  158. <Route path="/accept-invite/:code" element={<InvitePage />} />
  159. {/* Admin */}
  160. <Route
  161. path="/settings/llm-preference"
  162. element={<AdminRoute Component={GeneralLLMPreference} />}
  163. />
  164. <Route
  165. path="/settings/transcription-preference"
  166. element={
  167. <AdminRoute Component={GeneralTranscriptionPreference} />
  168. }
  169. />
  170. <Route
  171. path="/settings/audio-preference"
  172. element={<AdminRoute Component={GeneralAudioPreference} />}
  173. />
  174. <Route
  175. path="/settings/embedding-preference"
  176. element={
  177. <AdminRoute Component={GeneralEmbeddingPreference} />
  178. }
  179. />
  180. <Route
  181. path="/settings/text-splitter-preference"
  182. element={
  183. <AdminRoute Component={EmbeddingTextSplitterPreference} />
  184. }
  185. />
  186. <Route
  187. path="/settings/vector-database"
  188. element={<AdminRoute Component={GeneralVectorDatabase} />}
  189. />
  190. <Route
  191. path="/settings/agents"
  192. element={<AdminRoute Component={AdminAgents} />}
  193. />
  194. <Route
  195. path="/settings/agents/builder"
  196. element={
  197. <AdminRoute
  198. Component={AgentBuilder}
  199. hideUserMenu={true}
  200. />
  201. }
  202. />
  203. <Route
  204. path="/settings/agents/builder/:flowId"
  205. element={
  206. <AdminRoute
  207. Component={AgentBuilder}
  208. hideUserMenu={true}
  209. />
  210. }
  211. />
  212. <Route
  213. path="/settings/event-logs"
  214. element={<AdminRoute Component={AdminLogs} />}
  215. />
  216. <Route
  217. path="/settings/embed-config"
  218. element={<AdminRoute Component={EmbedConfigSetup} />}
  219. />
  220. <Route
  221. path="/settings/embed-chats"
  222. element={<AdminRoute Component={EmbedChats} />}
  223. />
  224. {/* Manager */}
  225. <Route
  226. path="/settings/security"
  227. element={<ManagerRoute Component={GeneralSecurity} />}
  228. />
  229. <Route
  230. path="/settings/privacy"
  231. element={<AdminRoute Component={PrivacyAndData} />}
  232. />
  233. <Route
  234. path="/settings/appearance"
  235. element={<ManagerRoute Component={GeneralAppearance} />}
  236. />
  237. <Route
  238. path="/settings/beta-features"
  239. element={<AdminRoute Component={ExperimentalFeatures} />}
  240. />
  241. <Route
  242. path="/settings/api-keys"
  243. element={<AdminRoute Component={GeneralApiKeys} />}
  244. />
  245. <Route
  246. path="/settings/browser-extension"
  247. element={
  248. <ManagerRoute Component={GeneralBrowserExtension} />
  249. }
  250. />
  251. <Route
  252. path="/settings/workspace-chats"
  253. element={<ManagerRoute Component={GeneralChats} />}
  254. />
  255. <Route
  256. path="/settings/invites"
  257. element={<ManagerRoute Component={AdminInvites} />}
  258. />
  259. <Route
  260. path="/settings/users"
  261. element={<ManagerRoute Component={AdminUsers} />}
  262. />
  263. <Route
  264. path="/settings/section"
  265. element={<ManagerRoute Component={AdminSection} />}
  266. />
  267. <Route
  268. path="/settings/workspaces"
  269. element={<ManagerRoute Component={AdminWorkspaces} />}
  270. />
  271. {/* Onboarding Flow */}
  272. <Route path="/onboarding" element={<OnboardingFlow />} />
  273. <Route
  274. path="/onboarding/:step"
  275. element={<OnboardingFlow />}
  276. />
  277. {/* Experimental feature pages */}
  278. {/* Live Document Sync feature */}
  279. <Route
  280. path="/settings/beta-features/live-document-sync/manage"
  281. element={<AdminRoute Component={LiveDocumentSyncManage} />}
  282. />
  283. <Route
  284. path="/settings/community-hub/trending"
  285. element={<AdminRoute Component={CommunityHubTrending} />}
  286. />
  287. <Route
  288. path="/settings/community-hub/authentication"
  289. element={
  290. <AdminRoute Component={CommunityHubAuthentication} />
  291. }
  292. />
  293. <Route
  294. path="/settings/community-hub/import-item"
  295. element={<AdminRoute Component={CommunityHubImportItem} />}
  296. />
  297. </Routes>
  298. <ToastContainer />
  299. </I18nextProvider>
  300. </PfpProvider>
  301. </LogoProvider>
  302. </ContextWrapper>
  303. </Suspense>
  304. </ThemeProvider>
  305. );
  306. }