import { useNavigate, useLocation } from 'react-router-dom'
import { Dropdown, Avatar } from 'antd'
import {
UserOutlined,
LogoutOutlined,
// SettingOutlined, // MVP阶段暂时隐藏设置按钮
ControlOutlined,
BankOutlined,
} from '@ant-design/icons'
import type { MenuProps } from 'antd'
import { MODULES } from '../modules/moduleRegistry'
import { useAuth } from '../auth'
/**
* 顶部导航栏组件
*
* @description
* - 显示Logo和平台名称
* - 显示模块导航(根据用户权限过滤)⭐ Week 2 Day 7 新增
* - 显示用户菜单
*
* @version Week 2 Day 7 - 任务17:集成权限系统
*/
const TopNavigation = () => {
const navigate = useNavigate()
const location = useLocation()
const { user, logout: authLogout, hasModule } = useAuth()
// 根据用户模块权限过滤可显示的模块
const availableModules = MODULES.filter(module => {
// 没有 moduleCode 的模块跳过(占位模块)
if (!module.moduleCode) return false;
// 检查用户是否有权限访问
return hasModule(module.moduleCode);
});
// 获取当前激活的模块
const activeModule = availableModules.find(module =>
location.pathname.startsWith(module.path)
)
// 检查用户权限,决定显示哪些切换入口
const userRole = user?.role || ''
const canAccessAdmin = ['SUPER_ADMIN', 'PROMPT_ENGINEER'].includes(userRole)
const canAccessOrg = ['HOSPITAL_ADMIN', 'PHARMA_ADMIN', 'DEPARTMENT_ADMIN', 'SUPER_ADMIN'].includes(userRole)
// 用户菜单 - 动态构建
const userMenuItems: MenuProps['items'] = [
{
key: 'profile',
icon:
AI临床研究平台