Files
model-platform/frontend/app/features/platform/DashboardRoute.tsx
T
郑龙捷 7d5e3e9a50 fix: 对齐运维页面原型并收口权限边界
- 删除模型大类概览和细分银行概览中原型未包含的过渡跳转按钮,保留卡片点击、筛选、指标趋势和详情入口。

- 移除运维系统配置页中的模型平台新增页面依赖、登录角色来源等内部说明,仅保留实际配置内容。

- 将开发工作台访问控制统一收敛到 dashboard:view,业务团队仅保留运维工作台权限;直接访问开发工作台时自动回到运维工作台。

- 补充架构实现基线、外部写入协议、运维 API 清单、三角色权限验收说明和首条纵向链路联调手册。

- 按当前实现更新架构变更记录和本周目标完成情况。
2026-09-02 17:39:36 +08:00

41 lines
1.4 KiB
TypeScript

import { useEffect } from "react";
import { Navigate, useNavigate } from "react-router";
import { useAuth, usePermission } from "~/context/AuthContext";
import { DashboardPage } from "../admin/DashboardPage";
import { useScriptWorkspaceStore } from "./state/scriptWorkspaceStore";
export default function DashboardRoute() {
const canViewDevelopmentWorkbench = usePermission("dashboard:view");
const { currentWorkspace } = useAuth();
const scripts = useScriptWorkspaceStore((s) => s.scripts);
const scriptCount = useScriptWorkspaceStore((s) => s.scriptCount);
const loadScriptCount = useScriptWorkspaceStore((s) => s.loadScriptCount);
const apiOnline = useScriptWorkspaceStore((s) => s.apiOnline);
const workspaceId = currentWorkspace?.workspace_id;
const navigate = useNavigate();
if (!canViewDevelopmentWorkbench) {
return <Navigate to="/operations" replace />;
}
// Reload on workspace switch — DashboardRoute is not keyed by
// workspace/user (only ScriptsPage is), so without this dep the
// previous workspace's count would persist.
useEffect(() => {
void loadScriptCount();
}, [loadScriptCount, workspaceId]);
return (
<DashboardPage
scriptCount={scriptCount ?? scripts.length}
online={apiOnline}
onNavigate={(page) => {
if (page === "scripts") navigate("/scripts");
else if (page === "schedules") navigate("/schedules");
else navigate("/system");
}}
/>
);
}