import type React from 'react'
import { DashboardOutlined, RobotOutlined, UserOutlined, DollarOutlined, BookOutlined, ImportOutlined, FileOutlined, SafetyOutlined, CodeOutlined, CloudServerOutlined, SettingOutlined } 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: , 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: '/audit', name: '审计日志', icon: , requiredRole: 'ADMIN' },
{ path: '/billing', name: 'API 用量', icon: , requiredRole: 'SUPER_ADMIN' },
{ path: '/git', name: '代码仓库', icon: },
{ path: '/servers', name: '服务器运维', icon: , requiredRole: 'SUPER_ADMIN' },
{ path: '/settings', name: '系统配置', icon: , requiredRole: 'ADMIN' },
]
export function filterMenuByRole(items: AdminMenuItem[], role?: AdminRole): AdminMenuItem[] {
return items.filter(item => {
if (item.requiredRole && role && !hasRole(role, item.requiredRole)) return false
if (item.children) item.children = filterMenuByRole(item.children, role)
return true
})
}