From 7a8a29639fbff45685bed562d3cce9d0e958863d Mon Sep 17 00:00:00 2001 From: fengxiangdebaozi <10845145+fengxiangdebaozi@user.noreply.gitee.com> Date: Fri, 12 Jun 2026 18:45:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/core/page-layout/sidebar-menu.ts | 102 +++++++++--------- .../src/strategy-components/Header.tsx | 8 +- 2 files changed, 57 insertions(+), 53 deletions(-) diff --git a/frontend-web/src/core/page-layout/sidebar-menu.ts b/frontend-web/src/core/page-layout/sidebar-menu.ts index 52e6ddd1..5d604232 100644 --- a/frontend-web/src/core/page-layout/sidebar-menu.ts +++ b/frontend-web/src/core/page-layout/sidebar-menu.ts @@ -1,11 +1,10 @@ /** - * ????????????????? + * 全局侧边栏菜单数据与权限过滤逻辑。 * - * ?? ``PageSidebar`` ??? ``PageSidebarDark`` ?????? ?? ????? - * adminOnly ??????????????UI ???icon ??/????/hover flyout? - * ????????? + * 浅色 PageSidebar 和深色 PageSidebarDark 共用这份数据,菜单结构与 + * adminOnly 权限策略对两种皮肤一致;UI 渲染在各自组件里实现。 * - * ????????????? sidebar ????? + * 修改菜单只需要改这一处,两个 sidebar 自动同步。 */ import type { ElementType } from "react"; import { @@ -50,80 +49,85 @@ export type MenuItem = { export const sidebarMenuItems: MenuItem[] = [ { id: "qa-center", - label: "????", + label: "问答中心", icon: HelpCircle, children: [ - { id: "general-qa", label: "????", icon: CircleHelp, path: "/page/workspace/chats/new" }, + { id: "general-qa", label: "通用问答", icon: CircleHelp, path: "/page/workspace/chats/new" }, { id: "multi-agent-roundtable", - label: "??????", + label: "多智能体会商", icon: Users, path: "/page/strategy/qa/multi-agent-roundtable", }, - // { id: "expert-qa", label: "????", icon: Brain, path: "/page/strategy/qa/expert-qa" }, + // { id: "expert-qa", label: "专家问答", icon: Brain, path: "/page/strategy/qa/expert-qa" }, { id: "qa-zzjc", label: "zzJC支持", icon: Bot, path: "/page/strategy/agents/6bf/chats/new", }, - { id: "qa-zzxd", label: "zzXD??", icon: Layout, path: "/page/strategy/agents/10d69686718349688e58a8790cb61024/chats/new", }, - { id: "qa-research", label: "????", icon: FileText, path: "/page/canvas/ai-writing" }, + { + id: "qa-zzxd", + label: "zzXD应用", + icon: Layout, + path: "/page/strategy/agents/10d69686718349688e58a8790cb61024/chats/new", + }, + { id: "qa-research", label: "课题研究", icon: FileText, path: "/page/canvas/ai-writing" }, ], }, // { // id: "light-app-center", - // label: "???", + // label: "应用中心", // icon: Grid3X3, // children: [ // { // id: "light-app-note-management", - // label: "????", + // label: "笔记管理", // icon: NotebookPen, // children: [ // { // id: "light-app-new-note", - // label: "????", + // label: "新建笔记", // icon: Plus, // path: "/page/strategy/light-app/new-note", // }, // { // id: "light-app-note-list", - // label: "????", + // label: "笔记列表", // icon: List, // path: "/page/strategy/light-app/notes", // }, // { // id: "light-app-note-qa", - // label: "????", + // label: "笔记问答", // icon: MessageSquareCode, // path: "/page/strategy/light-app/note-qa", // }, // ], // }, - // { id: "light-app-square", label: "????", icon: Layout }, - // { id: "light-app-records", label: "????", icon: History }, + // { id: "light-app-square", label: "应用广场", icon: Layout }, + // { id: "light-app-records", label: "使用记录", icon: History }, // ], // }, { id: "task-management", - label: "????", + label: "任务管理", icon: Target, children: [ { id: "xk-center-task", - label: "XK???", + label: "XK中任务", icon: Folder, children: [ { id: "xk-task-jc", - label: "??JC", + label: "任务JC", icon: ListTodo, path: "/page/strategy/task-management/xk-task-jc", }, { id: "xk-task-dispatch", - label: "????", + label: "任务调度", icon: ListTodo, path: "/page/strategy/task-management/xk-task-dispatch", }, @@ -131,7 +135,7 @@ export const sidebarMenuItems: MenuItem[] = [ }, { id: "coh-center-task", - label: "COH???", + label: "COH中任务", icon: Folder, children: [ { @@ -142,7 +146,7 @@ export const sidebarMenuItems: MenuItem[] = [ }, { id: "coh-task-fx", - label: "??FX", + label: "任务FX", icon: ListTodo, path: "/page/strategy/task-management/plan-task/plan-task-fx", }, @@ -156,12 +160,12 @@ export const sidebarMenuItems: MenuItem[] = [ }, { id: "pg-center-task", - label: "PG???", + label: "PG中任务", icon: Folder, children: [ { id: "pg-task-pg", - label: "??PG", + label: "任务PG", icon: ListTodo, path: "/page/strategy/task-management/effect-task-pg", }, @@ -173,7 +177,7 @@ export const sidebarMenuItems: MenuItem[] = [ }, { id: "pg-task-info-pg", - label: "??PG", + label: "信息PG", icon: ListTodo, path: "/page/strategy/task-management/effect-info-pg", }, @@ -181,24 +185,24 @@ export const sidebarMenuItems: MenuItem[] = [ }, { id: "ty-center-task", - label: "TY???", + label: "TY中任务", icon: Folder, children: [ { id: "ty-task-xdty", - label: "XDTY??", + label: "XDTY任务", icon: ListTodo, path: "/page/strategy/task-management/mnty-task-mechanism", }, { id: "ty-task-plan", - label: "??TY??", + label: "方案TY任务", icon: ListTodo, path: "/page/strategy/task-management/mnty-task-plan", }, { id: "ty-task-xxty", - label: "XXTY??", + label: "XXTY任务", icon: ListTodo, path: "/page/strategy/task-management/mnty-task-zsty", }, @@ -208,61 +212,61 @@ export const sidebarMenuItems: MenuItem[] = [ }, { id: "comprehensive-management", - label: "????", + label: "综合管理", icon: Settings, children: [ - { id: "mgmt-agents", label: "?????", icon: Bot, path: "/page/strategy/agents" }, + { id: "mgmt-agents", label: "智能体管理", icon: Bot, path: "/page/strategy/agents" }, { id: "mgmt-business-chain-mapping", - label: "????", + label: "配置管理", icon: Network, path: "/page/strategy/business-chain-mapping", }, { id: "mgmt-business-chains", - label: "??????", + label: "业务链条配置", icon: Layers, path: "/page/strategy/business-chains", }, - { id: "mgmt-skills", label: "????", icon: Sparkles, path: "/page/strategy/skills" }, - { id: "mgmt-memory", label: "????", icon: Brain, path: "/page/strategy/memory" }, + { id: "mgmt-skills", label: "技能管理", icon: Sparkles, path: "/page/strategy/skills" }, + { id: "mgmt-memory", label: "记忆管理", icon: Brain, path: "/page/strategy/memory" }, { id: "mgmt-tasks", - label: "????", + label: "定时任务", icon: ListChecks, path: "/page/strategy/scheduled/tasks", }, { id: "mgmt-llm-metrics", - label: "???????", + label: "大模型调用统计", icon: Gauge, path: "/page/strategy/settings/llm-metrics", adminOnly: true, }, { id: "mgmt-users", - label: "????", + label: "用户管理", icon: Users, path: "/page/strategy/admin/users", adminOnly: true, }, { id: "mgmt-user-leaderboard", - label: "?????", + label: "用户排行榜", icon: Trophy, path: "/page/strategy/admin/user-leaderboard", adminOnly: true, }, { id: "mgmt-admin-scheduled-tasks", - label: "??????", + label: "定时任务管理", icon: CalendarClock, path: "/page/strategy/admin/scheduled-tasks", adminOnly: true, }, { id: "mgmt-user-activity", - label: "??????", + label: "用户活动审计", icon: History, path: "/page/strategy/admin/user-activity", adminOnly: true, @@ -271,24 +275,24 @@ export const sidebarMenuItems: MenuItem[] = [ }, { id: "resource-management", - label: "????", + label: "资源管理", icon: Database, children: [ { id: "resource-network-xwt", - label: "??xwt????", + label: "网络xwt资源管理", icon: Network, path: "/page/strategy/resource-management/resource-network-actor", }, { id: "resource-knowledge-native", - label: "????", + label: "问答梳理", icon: BookOpen, path: "/page/workspace/knowledge", }, { id: "resource-evaluation-index", - label: "??????", + label: "作战资源管理", icon: FileBox, path: "/page/strategy/resource-management/resource-evaluation-index", }, @@ -296,7 +300,7 @@ export const sidebarMenuItems: MenuItem[] = [ }, ]; -/** ??????? id ????????????????? */ +/** 默认展开的菜单 id 集合。 */ export const defaultExpandedIds: ReadonlySet = new Set([ "qa-center", "light-app-center", @@ -306,7 +310,7 @@ export const defaultExpandedIds: ReadonlySet = new Set([ "comprehensive-management", ]); -/** ? admin ???????? admin ??? ``adminOnly: true`` ?????? */ +/** 按 admin 角色过滤菜单:非 admin 不展示 ``adminOnly: true`` 的项及其子项。 */ export function filterMenuItemsByRole(items: MenuItem[], isAdmin: boolean): MenuItem[] { return items .filter((item) => !item.adminOnly || isAdmin) diff --git a/frontend-web/src/strategy-components/Header.tsx b/frontend-web/src/strategy-components/Header.tsx index ac2053d0..795ca276 100644 --- a/frontend-web/src/strategy-components/Header.tsx +++ b/frontend-web/src/strategy-components/Header.tsx @@ -2,8 +2,9 @@ import { Bell, ChevronDown, FileText, Moon, Palette, User } from "lucide-react"; import { useState } from "react"; import { useLocation, useNavigate } from "react-router-dom"; -import { NotificationDialog } from "@/components/workspace/notification-dialog"; import { Button } from "@/components/ui/button"; +import "@/components/page-sdebar.css"; +import { NotificationDialog } from "@/components/workspace/notification-dialog"; import { getStoredAuth } from "@/core/auth"; import { isWujieEnv } from "@/core/embed/wujie"; import { useUnreadCount } from "@/core/notifications"; @@ -12,7 +13,6 @@ import { useSidebarMenuItems } from "@/core/page-layout/use-sidebar-menu"; import { cn } from "@/lib/utils"; import { useTheme } from "../contexts/ThemeContext"; -import "@/components/page-sdebar.css"; const iconButtonClass = (isDark: boolean) => cn( @@ -98,12 +98,12 @@ const Header = ({ collapsed }: HeaderProps) => { {!collapsed && ( - + CM助手 )} {showTopNav && visibleMenuItems.length ? ( -