import type React from 'react' import { DollarOutlined, CodeOutlined, CloudServerOutlined, RobotOutlined, DashboardOutlined, UserOutlined, BookOutlined, ImportOutlined, SettingOutlined, FileOutlined, SafetyOutlined, } from '@ant-design/icons' import type { AdminRole } from '@/types/admin' import { hasRole } from '@/constants/roles' export interface AdminMenuItem { path: string name: string icon?: React.ReactNode requiredRole?: AdminRole children?: AdminMenuItem[] } export const adminMenuItems: AdminMenuItem[] = [ { path: '/', name: '总览', icon: }, { path: '/assistant', name: '任务助理', icon: }, { path: '/users', name: '用户管理', icon: , requiredRole: 'ADMIN', children: [ { path: '/users/admins', name: '管理员', requiredRole: 'SUPER_ADMIN' }, { path: '/users/members', name: '普通用户' }, ], }, { path: '/membership', name: '会员与额度', icon: , requiredRole: 'ADMIN' }, { path: '/knowledge', name: '知识库管理', icon: , children: [ { path: '/knowledge/bases', name: '知识库列表' }, { path: '/knowledge/sources', name: '知识源列表' }, ], }, { path: '/imports', name: '文档导入', icon: }, { path: '/files', name: '文件与 COS', icon: }, { path: '/settings', name: '系统配置', icon: , requiredRole: 'ADMIN' }, { path: '/billing', name: 'API 用量', icon: , requiredRole: 'SUPER_ADMIN' }, { path: '/git', name: '代码仓库', icon: }, { path: '/servers', name: '服务器运维', icon: , requiredRole: 'SUPER_ADMIN' }, { path: '/audit', name: '审计日志', icon: , requiredRole: 'ADMIN' }, ] export function filterMenuByRole(items: AdminMenuItem[], role?: AdminRole): AdminMenuItem[] { if (!role) return [] return items .filter((item) => !item.requiredRole || hasRole(role, item.requiredRole)) .map((item) => ({ ...item, children: item.children ? filterMenuByRole(item.children, role) : undefined, })) .filter((item) => { if (item.children && item.children.length === 0) return false return true }) }