631 lines
25 KiB
TypeScript
631 lines
25 KiB
TypeScript
import { Navigate, Route, Routes } from "react-router-dom";
|
||
import { Toaster } from "sonner";
|
||
|
||
import { SidebarInset, SidebarProvider } from "@/components/ui/sidebar";
|
||
import { WorkspaceSidebar } from "@/components/workspace/workspace-sidebar";
|
||
import { getAccountDisplayName, getStoredAuth } from "@/core/auth";
|
||
import { isSentimentAgentVisible } from "@/core/sentiment-agent/config";
|
||
import { RouteBaseProvider } from "@/core/route-base";
|
||
import GeneralQA from "@/strategy-components/components/chat-qa/GeneralQA";
|
||
import SentimentAnalyzes from "@/strategy-components/components/task-components/SentimentAnalyzes";
|
||
import TaskManagement from "@/strategy-components/components/task-components/TaskManagement";
|
||
import TaskPgFrom from "@/strategy-components/components/task-components/TaskPgFrom";
|
||
import TaskTyFrom from "@/strategy-components/components/task-components/TaskTyFrom";
|
||
import TaskXkFrom from "@/strategy-components/components/task-components/TaskXkFrom";
|
||
import TaskAnalyzes from "@/strategy-components/components/task-components/TaskAnalyzes";
|
||
import {
|
||
TaskBindChat,
|
||
TaskFxChat,
|
||
TaskFxIndexResolver,
|
||
TaskFxWorkspace,
|
||
} from "@/strategy-components/components/task-components/TaskFxWorkspace";
|
||
import {
|
||
AgentFxChat,
|
||
AgentFxIndexResolver,
|
||
AgentFxWorkspace,
|
||
} from "@/strategy-components/components/task-components/AgentFxWorkspace";
|
||
import { ActionAnalyzes } from "@/strategy-components/components/task-components/ActionAnalyzes";
|
||
import KnowledgeBaseResourceManagement from "@/strategy-components/components/resource-management/KnowledgeBaseResourceManagement";
|
||
import NetworkActorResourceManagement from "@/strategy-components/components/resource-management/NetworkActorResourceManagement";
|
||
import RoundtablePlanningPage from "@/roundtable-planning/pages/RoundtablePlanningPage";
|
||
import PositionRoundtablePage from "@/position-roundtable/pages/PositionRoundtablePage";
|
||
import EightBfRoundtablePage from "@/eightbf-roundtable/pages/EightBfRoundtablePage";
|
||
import DashboardAgentPage from "@/roundtable-planning/pages/DashboardAgentPage";
|
||
import DeepResearchPage from "./DeepResearchPage";
|
||
import ReportStructureCreatePage from "./deep-research/ReportStructureCreatePage";
|
||
import EnterpriseResearchPage from "./EnterpriseResearchPage";
|
||
import BusinessChainListPage from "@/roundtable-planning/pages/BusinessChainListPage";
|
||
import BusinessChainEditorPage from "@/roundtable-planning/pages/BusinessChainEditorPage";
|
||
import "@/roundtable-planning/styles/roundtable-planning.css";
|
||
import AgentChatPage from "./AgentChatPage";
|
||
import SentimentAgentChatPage from "./SentimentAgentChatPage";
|
||
import { AgentModuleRoutes } from "./AgentModulePage";
|
||
import { AGENT_MODULES } from "@/components/workspace/agents/agent-module-sidebar";
|
||
import AgentsPage from "./AgentsPage";
|
||
import BusinessChainMappingPage from "./BusinessChainMappingPage";
|
||
import ChatPage from "./ChatPage";
|
||
import ChatsPage from "./ChatsPage";
|
||
import AdminUserLeaderboardPage from "./AdminUserLeaderboardPage";
|
||
import AdminUserLeaderboardSettingsPage from "./AdminUserLeaderboardSettingsPage";
|
||
import PublicLeaderboardPage from "./PublicLeaderboardPage";
|
||
import LightAppIframeView from "./LightAppIframeView";
|
||
import LightAppListPage from "./LightAppListPage";
|
||
import LightAppManagementPage from "./LightAppManagementPage";
|
||
import MenuManagementPage from "./MenuManagementPage";
|
||
import LoginWhitelistPage from "./LoginWhitelistPage";
|
||
import FixedQuestionsPage from "./FixedQuestionsPage";
|
||
import SensitiveWordsPage from "./SensitiveWordsPage";
|
||
import SkillAddressesPage from "./SkillAddressesPage";
|
||
import TaskButtonsPage from "./TaskButtonsPage";
|
||
import PositionRolesPage from "./PositionRolesPage";
|
||
import RoundtableDiagnosticsPage from "./RoundtableDiagnosticsPage";
|
||
import LightAppNewNotePage from "./LightAppNewNotePage";
|
||
import LightAppNoteListPage from "./LightAppNoteListPage";
|
||
import LightAppNoteQAPage from "./LightAppNoteQAPage";
|
||
import MemoryPage from "./MemoryPage";
|
||
import NewAgentPage from "./NewAgentPage";
|
||
import PromptPrefixSettingsPage from "./PromptPrefixSettingsPage";
|
||
import PrivateSquareSettingsPage from "./PrivateSquareSettingsPage";
|
||
import ModelConcurrencySettingsPage from "./ModelConcurrencySettingsPage";
|
||
import RecommendedQuestionsPage from "./RecommendedQuestionsPage";
|
||
import ScheduledTaskRunDetailPage from "./ScheduledTaskRunDetailPage";
|
||
import ScheduledTasksPage from "./ScheduledTasksPage";
|
||
import SkillEvolutionPage from "./SkillEvolutionPage";
|
||
import SkillsPage from "./SkillsPage";
|
||
import PositionsPage from "./PositionsPage";
|
||
import TagsPage from "./TagsPage";
|
||
import UsersPage from "./UsersPage";
|
||
import LlmMetricsPage from "./LlmMetricsPage";
|
||
import AdminScheduledTasksPage from "./AdminScheduledTasksPage";
|
||
import AdminUserActivityPage from "./AdminUserActivityPage";
|
||
import { ChatRuntime } from "./WorkspaceRoutes";
|
||
|
||
/**
|
||
* Strategy's legacy `/chats/:thread_id` route shares ChatPage's header.
|
||
* Unlike WorkspaceRoutes it did not render a WorkspaceSidebar, leaving the
|
||
* header's expand/collapse control with no visible panel to operate.
|
||
*/
|
||
function StrategyChatThreadLayout() {
|
||
return (
|
||
<div className="flex size-full min-h-0 overflow-hidden">
|
||
<WorkspaceSidebar compactChrome />
|
||
<SidebarInset className="min-w-0">
|
||
<ChatRuntime>
|
||
<ChatPage />
|
||
</ChatRuntime>
|
||
</SidebarInset>
|
||
</div>
|
||
);
|
||
}
|
||
|
||
export default function StrategyRoutes() {
|
||
const storedAuth = getStoredAuth();
|
||
const canManageBusinessMappings = !storedAuth || storedAuth.system_role === "admin";
|
||
|
||
return (
|
||
<RouteBaseProvider value="/page/strategy">
|
||
<SidebarProvider>
|
||
<div className="h-full w-full overflow-hidden">
|
||
<Routes>
|
||
<Route index element={<Navigate to="qa/general" replace />} />
|
||
|
||
<Route path="qa/general" element={<GeneralQA />} />
|
||
<Route
|
||
path="qa/expert-qa"
|
||
element={
|
||
<GeneralQA
|
||
chatHeadTitle="æ¶“æ’³î†é—‚瓟"
|
||
chatDesign="é€îˆ›å¯”é—æ›¡ç–†RAG銆佸æžç”ŠAGéŠ†ä½¹ç¹æ´ï¸½î—…ç»±ãˆ å¼·ç¼æ’´ç‰ç€µè§„瘮"
|
||
/>
|
||
}
|
||
/>
|
||
<Route
|
||
path="qa/multi-agent-roundtable"
|
||
element={
|
||
<ChatRuntime>
|
||
<RoundtablePlanningPage />
|
||
</ChatRuntime>
|
||
}
|
||
/>
|
||
<Route
|
||
path="qa/8bf-roundtable"
|
||
element={
|
||
<ChatRuntime>
|
||
<EightBfRoundtablePage />
|
||
</ChatRuntime>
|
||
}
|
||
/>
|
||
<Route
|
||
path="qa/position-roundtable"
|
||
element={
|
||
<ChatRuntime>
|
||
<PositionRoundtablePage />
|
||
</ChatRuntime>
|
||
}
|
||
/>
|
||
<Route path="qa/deep-research" element={<DeepResearchPage />} />
|
||
<Route
|
||
path="qa/deep-research/structures/new"
|
||
element={
|
||
<ChatRuntime>
|
||
<ReportStructureCreatePage />
|
||
</ChatRuntime>
|
||
}
|
||
/>
|
||
<Route path="qa/enterprise-research" element={<EnterpriseResearchPage />} />
|
||
|
||
{/* 大屏绘制智能体独立页面(按 taskId 存取;ChatRuntime 提供 ArtifactsProvider 给沙箱预览) */}
|
||
<Route
|
||
path="dashboard-agent"
|
||
element={
|
||
<ChatRuntime>
|
||
<DashboardAgentPage />
|
||
</ChatRuntime>
|
||
}
|
||
/>
|
||
|
||
{/* 需求 0616 #3/#4:zzJC / zzXD 「按类型聚合」模块页(重做,独立路由)。 */}
|
||
<Route path="qa/zzjc/*" element={<AgentModuleRoutes module={AGENT_MODULES.zzjc} />} />
|
||
<Route path="qa/zzxd/*" element={<AgentModuleRoutes module={AGENT_MODULES.zzxd} />} />
|
||
|
||
<Route path="task-management" element={<TaskManagement />}>
|
||
<Route index element={<Navigate to="xk-task-jc" replace />} />
|
||
<Route
|
||
path="xk-task-jc"
|
||
element={<TaskXkFrom gopath="/#/pageIndie/pageHome/pageSwrw" />}
|
||
/>
|
||
<Route
|
||
path="xk-task-dispatch"
|
||
element={<TaskXkFrom gopath="/#/pageIndie/pageJczl" />}
|
||
/>
|
||
<Route
|
||
path="effect-task-pg"
|
||
element={<TaskPgFrom gopath="task" />}
|
||
/>
|
||
<Route
|
||
path="effect-action-pg"
|
||
element={<TaskPgFrom gopath="xd" />}
|
||
/>
|
||
<Route
|
||
path="effect-info-pg"
|
||
element={<TaskPgFrom gopath="info" />}
|
||
/>
|
||
<Route
|
||
path="plan-task-sentiment"
|
||
element={
|
||
<SentimentAnalyzes
|
||
title="三情分析"
|
||
category="规划任务"
|
||
subCategory="规划任务"
|
||
/>
|
||
}
|
||
/>
|
||
{/* 任务深链(3qfx / 3qfx-A):把智能体问答 / 会商嵌进 3QFX 业务上下文。 */}
|
||
<Route
|
||
path="plan-task-sentiment/roundtable"
|
||
element={
|
||
<ChatRuntime>
|
||
<RoundtablePlanningPage />
|
||
</ChatRuntime>
|
||
}
|
||
/>
|
||
{/* 三情分析:任务工作区(左对话列表 1:N,无目的树闸门;新建对话直接带开场信息)。 */}
|
||
<Route
|
||
path="plan-task-sentiment/agent/:agent_id/chats"
|
||
element={
|
||
<TaskFxWorkspace taskBase="/page/strategy/task-management/plan-task-sentiment" business="3qfx" lite />
|
||
}
|
||
>
|
||
<Route
|
||
index
|
||
element={
|
||
<TaskFxIndexResolver taskBase="/page/strategy/task-management/plan-task-sentiment" />
|
||
}
|
||
/>
|
||
<Route
|
||
path=":thread_id"
|
||
element={
|
||
<TaskBindChat taskBase="/page/strategy/task-management/plan-task-sentiment" />
|
||
}
|
||
/>
|
||
</Route>
|
||
<Route
|
||
path="plan-task/plan-task-fx"
|
||
element={
|
||
<TaskAnalyzes
|
||
title="任务分析"
|
||
category="规划任务"
|
||
subCategory="规划任务"
|
||
/>
|
||
}
|
||
/>
|
||
{/* 任务深链(rwfx / rwfx-A):嵌进 任务FX 业务上下文。 */}
|
||
<Route
|
||
path="plan-task/plan-task-fx/roundtable"
|
||
element={
|
||
<ChatRuntime>
|
||
<RoundtablePlanningPage />
|
||
</ChatRuntime>
|
||
}
|
||
/>
|
||
{/* 任务FX:任务工作区(左对话列表 1:N + 右问答;新建对话顶部目的树闸门)。 */}
|
||
<Route
|
||
path="plan-task/plan-task-fx/agent/:agent_id/chats"
|
||
element={
|
||
<TaskFxWorkspace taskBase="/page/strategy/task-management/plan-task/plan-task-fx" business="rwfx" />
|
||
}
|
||
>
|
||
<Route
|
||
index
|
||
element={
|
||
<TaskFxIndexResolver taskBase="/page/strategy/task-management/plan-task/plan-task-fx" />
|
||
}
|
||
/>
|
||
<Route
|
||
path=":thread_id"
|
||
element={
|
||
<TaskFxChat
|
||
taskBase="/page/strategy/task-management/plan-task/plan-task-fx"
|
||
autoStartWhenPurposeEmpty
|
||
/>
|
||
}
|
||
/>
|
||
</Route>
|
||
<Route
|
||
path="plan-task/plan-task-action"
|
||
element={
|
||
<ActionAnalyzes
|
||
title="xdfx"
|
||
category="ç‘™å‹«åžæµ 诲姟"
|
||
subCategory="ç‘™å‹«åžæµ 诲姟"
|
||
/>
|
||
}
|
||
/>
|
||
{/* 任务深链(xdfx / xdfx-A):嵌进 XDFX 业务上下文。 */}
|
||
<Route
|
||
path="plan-task/plan-task-action/roundtable"
|
||
element={
|
||
<ChatRuntime>
|
||
<RoundtablePlanningPage />
|
||
</ChatRuntime>
|
||
}
|
||
/>
|
||
{/* 行动分析:任务工作区(左对话列表 1:N 精简版 + 左上行动详情卡片;直接问答,
|
||
右上角「开始回答」按钮手动发出开场信息,不走目的树闸门/覆盖确认)。
|
||
注意:xdfx 深链传入的是「行动id」,登录时已先经 resolveDeeplinkTaskId 换成任务id。 */}
|
||
<Route
|
||
path="plan-task/plan-task-action/agent/:agent_id/chats"
|
||
element={
|
||
<TaskFxWorkspace taskBase="/page/strategy/task-management/plan-task/plan-task-action" business="xdfx" lite />
|
||
}
|
||
>
|
||
<Route
|
||
index
|
||
element={
|
||
<TaskFxIndexResolver taskBase="/page/strategy/task-management/plan-task/plan-task-action" />
|
||
}
|
||
/>
|
||
<Route
|
||
path=":thread_id"
|
||
element={
|
||
<TaskBindChat taskBase="/page/strategy/task-management/plan-task/plan-task-action" />
|
||
}
|
||
/>
|
||
</Route>
|
||
{/* 任务深链(agentfx):新系统 iframe 嵌入的智能体问答工作区(独立复制的 3qfx lite 版,
|
||
任务详情来自本系统 cop-task-detail;业务映射用 AFX 行,见 agentfx-deeplink)。 */}
|
||
<Route
|
||
path="plan-task-agentfx/agent/:agent_id/chats"
|
||
element={
|
||
<AgentFxWorkspace taskBase="/page/strategy/task-management/plan-task-agentfx" />
|
||
}
|
||
>
|
||
<Route
|
||
index
|
||
element={
|
||
<AgentFxIndexResolver taskBase="/page/strategy/task-management/plan-task-agentfx" />
|
||
}
|
||
/>
|
||
<Route
|
||
path=":thread_id"
|
||
element={
|
||
<AgentFxChat taskBase="/page/strategy/task-management/plan-task-agentfx" />
|
||
}
|
||
/>
|
||
</Route>
|
||
<Route path="mnty-task-mechanism" element={<TaskTyFrom defaultPage="iframeXdty" title="XDTY任务" />} />
|
||
<Route path="mnty-task-plan" element={<TaskTyFrom defaultPage="iframeFaty" title="方案TY任务" />} />
|
||
<Route path="mnty-task-zsty" element={<TaskTyFrom defaultPage="iframeSysystem" title="XXTY任务" />} />
|
||
</Route>
|
||
|
||
<Route
|
||
path="resource-management/resource-network-actor"
|
||
element={<NetworkActorResourceManagement />}
|
||
/>
|
||
<Route
|
||
path="resource-management/resource-knowledge-base"
|
||
element={<KnowledgeBaseResourceManagement />}
|
||
/>
|
||
<Route
|
||
path="resource-management/resource-evaluation-index"
|
||
element={<TaskXkFrom gopath="#/pageIndie/pageZyjc/pageZyzl" />}
|
||
/>
|
||
|
||
<Route path="light-app/management" element={<LightAppManagementPage />} />
|
||
<Route path="light-app/apps" element={<LightAppListPage />} />
|
||
<Route path="light-app/view/:appId" element={<LightAppIframeView />} />
|
||
<Route path="light-app/new-note" element={<LightAppNewNotePage />} />
|
||
<Route path="light-app/notes" element={<LightAppNoteListPage />} />
|
||
<Route path="light-app/note-qa" element={<LightAppNoteQAPage />} />
|
||
|
||
<Route path="chats" element={<ChatsPage />} />
|
||
<Route
|
||
path="chats/:thread_id"
|
||
element={<StrategyChatThreadLayout />}
|
||
/>
|
||
|
||
<Route path="agents" element={<AgentsPage />} />
|
||
<Route path="agents/new" element={<NewAgentPage />} />
|
||
{/* 舆情分析虚拟智能体:经 Gateway 转发外部 AG-UI 网关的专用对话页。 */}
|
||
<Route
|
||
path="agents/sentiment-analysis/chats"
|
||
element={
|
||
isSentimentAgentVisible() ? (
|
||
<Navigate to="/page/strategy/agents/sentiment-analysis/chats/new" replace />
|
||
) : (
|
||
<Navigate to="/page/strategy/agents" replace />
|
||
)
|
||
}
|
||
/>
|
||
<Route
|
||
path="agents/sentiment-analysis/chats/:thread_id"
|
||
element={
|
||
isSentimentAgentVisible() ? (
|
||
<SentimentAgentChatPage />
|
||
) : (
|
||
<Navigate to="/page/strategy/agents" replace />
|
||
)
|
||
}
|
||
/>
|
||
<Route
|
||
path="agents/:agent_id/chats"
|
||
element={<Navigate to="/page/strategy/agents" replace />}
|
||
/>
|
||
<Route
|
||
path="agents/:agent_id/chats/:thread_id"
|
||
element={
|
||
<ChatRuntime>
|
||
<AgentChatPage showAgentList />
|
||
</ChatRuntime>
|
||
}
|
||
/>
|
||
|
||
<Route path="skills" element={<SkillsPage />} />
|
||
<Route path="skills/evolution" element={<SkillEvolutionPage />} />
|
||
<Route path="memory" element={<MemoryPage />} />
|
||
<Route
|
||
path="business-chain-mapping"
|
||
element={
|
||
canManageBusinessMappings ? (
|
||
<BusinessChainMappingPage />
|
||
) : (
|
||
<Navigate to="/page/strategy/qa/general" replace />
|
||
)
|
||
}
|
||
/>
|
||
<Route path="business-chains" element={<BusinessChainListPage />} />
|
||
<Route path="roundtable/chains" element={<BusinessChainEditorPage />} />
|
||
|
||
<Route
|
||
path="scheduled"
|
||
element={<Navigate to="/page/strategy/scheduled/tasks" replace />}
|
||
/>
|
||
<Route path="scheduled/tasks" element={<ScheduledTasksPage />} />
|
||
<Route
|
||
path="scheduled/runs/:run_id"
|
||
element={<ScheduledTaskRunDetailPage />}
|
||
/>
|
||
|
||
<Route
|
||
path="settings/recommended-questions"
|
||
element={
|
||
getStoredAuth()?.system_role === "admin" ? (
|
||
<RecommendedQuestionsPage />
|
||
) : (
|
||
<Navigate to="/page/workspace/chats/new" replace />
|
||
)
|
||
}
|
||
/>
|
||
<Route
|
||
path="settings/prompt-prefix"
|
||
element={
|
||
getStoredAuth()?.system_role === "admin" ? (
|
||
<PromptPrefixSettingsPage />
|
||
) : (
|
||
<Navigate to="/page/workspace/chats/new" replace />
|
||
)
|
||
}
|
||
/>
|
||
<Route
|
||
path="settings/private-square"
|
||
element={
|
||
getStoredAuth()?.system_role === "admin" ? (
|
||
<PrivateSquareSettingsPage />
|
||
) : (
|
||
<Navigate to="/page/workspace/chats/new" replace />
|
||
)
|
||
}
|
||
/>
|
||
<Route
|
||
path="settings/model-concurrency"
|
||
element={
|
||
getStoredAuth()?.system_role === "admin" ? (
|
||
<ModelConcurrencySettingsPage />
|
||
) : (
|
||
<Navigate to="/page/workspace/chats/new" replace />
|
||
)
|
||
}
|
||
/>
|
||
<Route
|
||
path="settings/llm-metrics"
|
||
element={
|
||
getStoredAuth()?.system_role === "admin" ? (
|
||
<LlmMetricsPage />
|
||
) : (
|
||
<Navigate to="/page/workspace/chats/new" replace />
|
||
)
|
||
}
|
||
/>
|
||
<Route
|
||
path="admin/users"
|
||
element={
|
||
getStoredAuth()?.system_role === "admin" ? (
|
||
<UsersPage />
|
||
) : (
|
||
<Navigate to="/page/workspace/chats/new" replace />
|
||
)
|
||
}
|
||
/>
|
||
<Route
|
||
path="admin/menu-management"
|
||
element={
|
||
getStoredAuth()?.system_role === "admin" ? (
|
||
<MenuManagementPage />
|
||
) : (
|
||
<Navigate to="/page/workspace/chats/new" replace />
|
||
)
|
||
}
|
||
/>
|
||
<Route
|
||
path="admin/fixed-questions"
|
||
element={
|
||
getStoredAuth()?.system_role === "admin" ? (
|
||
<FixedQuestionsPage />
|
||
) : (
|
||
<Navigate to="/page/workspace/chats/new" replace />
|
||
)
|
||
}
|
||
/>
|
||
<Route
|
||
path="admin/sensitive-words"
|
||
element={
|
||
getAccountDisplayName().toLowerCase() === "lqq" ? (
|
||
<SensitiveWordsPage />
|
||
) : (
|
||
<Navigate to="/page/workspace/chats/new" replace />
|
||
)
|
||
}
|
||
/>
|
||
<Route
|
||
path="admin/task-buttons"
|
||
element={
|
||
getStoredAuth()?.system_role === "admin" ? (
|
||
<TaskButtonsPage />
|
||
) : (
|
||
<Navigate to="/page/workspace/chats/new" replace />
|
||
)
|
||
}
|
||
/>
|
||
<Route
|
||
path="admin/position-roles"
|
||
element={
|
||
getStoredAuth()?.system_role === "admin" ? (
|
||
<PositionRolesPage />
|
||
) : (
|
||
<Navigate to="/page/workspace/chats/new" replace />
|
||
)
|
||
}
|
||
/>
|
||
<Route
|
||
path="admin/login-whitelist"
|
||
element={
|
||
getStoredAuth()?.system_role === "admin" ? (
|
||
<LoginWhitelistPage />
|
||
) : (
|
||
<Navigate to="/page/workspace/chats/new" replace />
|
||
)
|
||
}
|
||
/>
|
||
<Route
|
||
path="admin/roundtable-diagnostics"
|
||
element={
|
||
getStoredAuth()?.system_role === "admin" ? (
|
||
<RoundtableDiagnosticsPage />
|
||
) : (
|
||
<Navigate to="/page/workspace/chats/new" replace />
|
||
)
|
||
}
|
||
/>
|
||
<Route
|
||
path="admin/skill-addresses"
|
||
element={
|
||
getStoredAuth()?.system_role === "admin" ? (
|
||
<SkillAddressesPage />
|
||
) : (
|
||
<Navigate to="/page/workspace/chats/new" replace />
|
||
)
|
||
}
|
||
/>
|
||
<Route
|
||
path="admin/scheduled-tasks"
|
||
element={
|
||
getStoredAuth()?.system_role === "admin" ? (
|
||
<AdminScheduledTasksPage />
|
||
) : (
|
||
<Navigate to="/page/workspace/chats/new" replace />
|
||
)
|
||
}
|
||
/>
|
||
<Route path="user-leaderboard" element={<PublicLeaderboardPage />} />
|
||
<Route
|
||
path="admin/user-leaderboard"
|
||
element={
|
||
getStoredAuth()?.system_role === "admin" ? (
|
||
<AdminUserLeaderboardPage />
|
||
) : (
|
||
<Navigate to="/page/workspace/chats/new" replace />
|
||
)
|
||
}
|
||
/>
|
||
<Route
|
||
path="admin/user-leaderboard/settings"
|
||
element={
|
||
getStoredAuth()?.system_role === "admin" ? (
|
||
<AdminUserLeaderboardSettingsPage />
|
||
) : (
|
||
<Navigate to="/page/workspace/chats/new" replace />
|
||
)
|
||
}
|
||
/>
|
||
<Route
|
||
path="admin/user-activity"
|
||
element={
|
||
getStoredAuth()?.system_role === "admin" ? (
|
||
<AdminUserActivityPage />
|
||
) : (
|
||
<Navigate to="/page/workspace/chats/new" replace />
|
||
)
|
||
}
|
||
/>
|
||
<Route
|
||
path="admin/tags"
|
||
element={<TagsPage />}
|
||
/>
|
||
<Route
|
||
path="admin/positions"
|
||
element={
|
||
getStoredAuth()?.system_role === "admin" ? (
|
||
<PositionsPage />
|
||
) : (
|
||
<Navigate to="/page/workspace/chats/new" replace />
|
||
)
|
||
}
|
||
/>
|
||
</Routes>
|
||
</div>
|
||
</SidebarProvider>
|
||
<Toaster position="top-center" />
|
||
</RouteBaseProvider>
|
||
);
|
||
}
|