- 删除模型大类概览和细分银行概览中原型未包含的过渡跳转按钮,保留卡片点击、筛选、指标趋势和详情入口。 - 移除运维系统配置页中的模型平台新增页面依赖、登录角色来源等内部说明,仅保留实际配置内容。 - 将开发工作台访问控制统一收敛到 dashboard:view,业务团队仅保留运维工作台权限;直接访问开发工作台时自动回到运维工作台。 - 补充架构实现基线、外部写入协议、运维 API 清单、三角色权限验收说明和首条纵向链路联调手册。 - 按当前实现更新架构变更记录和本周目标完成情况。
41 lines
1.4 KiB
TypeScript
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");
|
|
}}
|
|
/>
|
|
);
|
|
}
|