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

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year 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. }