/**
 * 导航配置文件
 * 定义所有导航项及其权限要求
 */

import { MEETING_ATTENDANCE_ROLES } from '@/features/meeting-attendance/constants/roles';

export interface NavItem {
  name: string;
  path: string;
  icon: any; // 使用 any 类型，因为这是配置文件
  /**
   * 访问此导航项所需的权限
   * 如果有多个，满足其中一个即可 (OR 逻辑)
   */
  permissions?: string[];
  /**
   * 访问此导航项所需的角色
   * 如果有多个,满足其中一个即可 (OR 逻辑)
   */
  roles?: string[];
  /**
   * 子菜单项
   */
  subItems?: SubNavItem[];
}

export interface SubNavItem {
  name: string;
  path: string;
  /**
   * 访问此子菜单所需的权限
   */
  permissions?: string[];
  /**
   * 访问此子菜单所需的角色
   */
  roles?: string[];
}

/**
 * 获取导航配置
 * @param t - 翻译函数对象
 * @param icons - 图标组件对象
 * @returns 导航项数组
 */
export function getNavigationConfig(t: any, icons: any): NavItem[] {
  return [
    {
      name: t.nav.dashboard,
      path: '/overview',
      icon: icons.dashboard,
      // 概览页面所有人都可以访问
    },
    {
      name: t.nav.organization,
      path: '/organization',
      icon: icons.organization,
      // 需要列表权限（管理权限）才能访问组织架构菜单
      // 普通员工只有 read 权限，无法看到此菜单
      permissions: ['user:list', 'department:list', 'org:list', 'user:create'],
      // 不需要子导航，Organization 模块有独立的二级导航栏
    },
    {
      name: t.nav.syncCenter,
      path: '/sync-center',
      icon: icons.syncCenter,
      permissions: ['organization:sync'],
    },
    {
      name: t.nav.approvals,
      path: '/approval-center',
      icon: icons.approvals,
      permissions: ['approval:read', 'approval:list'],
    },
    {
      name: t.nav.automation,
      path: '/automation',
      icon: icons.automation,
      permissions: ['automation:read', 'workflow:read'],
    },
    {
      name: t.nav.parts,
      path: '/parts',
      icon: icons.parts,
      permissions: ['parts:read'],
      // 不需要子导航，因为 Parts 页面有独立的二级导航栏
    },
    {
      name: t.nav.formEngine,
      path: '/forms',
      icon: icons.forms,
      // 表单管理需要表单设计或管理权限，而不是简单的查看权限
      permissions: ['form:create', 'form:design', 'form:definition:create', 'form:admin'],
    },
    {
      name: t.nav.feedback,
      path: '/feedback',
      icon: icons.feedback,
      // 无子导航，使用二级导航布局
    },
    {
      name: t.nav.tickets,
      path: '/tickets',
      icon: icons.tickets,
      permissions: ['ticket:read', 'ticket:create'],
      // 无子导航，使用二级导航布局
    },
    {
      name: t.nav.internalApps,
      path: '/internal-apps',
      icon: icons.internalApps,
      // 全员可见（平台层 SSO 通过即可），无权限门槛；详见 docs/modules/internal-app-platform/05-ui-interaction-spec.md §1
    },
    {
      name: t.nav.knowledgeBase,
      path: '/knowledge-base',
      icon: icons.knowledgeBase,
      // MVP 阶段仅要求登录，不做权限控制
    },
    {
      name: t.nav.performance,
      path: '/performance',
      icon: icons.performance,
      // 绩效管理模块，登录用户可访问
    },
    {
      name: t.nav.devtracker,
      path: '/devtracker',
      icon: icons.devtracker,
      permissions: ['devtracker:read'],
    },
    {
      name: t.nav.meetingAttendance,
      path: '/meetingattendance/dashboard',
      icon: icons.meetingAttendance,
      roles: MEETING_ATTENDANCE_ROLES,
    },
    {
      name: t.nav.robotManager,
      path: '/robot-manager/my-work',
      icon: icons.robotManager,
      permissions: ['robot-manager:read'],
    },
    {
      name: t.nav.platformMaster,
      path: '/platform-master/customers',
      icon: icons.organization, // 复用组织图标（主数据 = 组织级共用资源）
      permissions: ['robot-manager:read'],
    },
    {
      name: t.nav.opsCenter,
      path: '/ops-center/m365-dormant',
      icon: icons.opsCenter,
      permissions: ['m365-dormant:read'],
    },
    {
      name: t.nav.aiUsage,
      path: '/ai-usage',
      icon: icons.aiAssistant, // 复用 AI 助手图标
      permissions: ['ai-usage:view-all', 'ai-usage:view-own'],
    },
    {
      name: t.nav.siteAttendance,
      path: '/siteattendance/admin/checkpoints',
      icon: icons.meetingAttendance, // 复用会议出勤图标
      permissions: ['site-attendance:checkpoint:manage'],
    },
    {
      name: t.nav.iamAdmin,
      path: '/iam-admin',
      icon: icons.iamAdmin,
      permissions: ['iam_admin:read', 'iam_admin:manage', 'system:admin'],
    },
    {
      name: t.nav.audit,
      path: '/audit',
      icon: icons.audit,
      permissions: ['audit:read'],
      // 无子导航，使用二级导航布局
    },
    {
      name: t.nav.logs,
      path: '/logs',
      icon: icons.logs,
      permissions: ['log:read', 'log:config', 'log:alert'],
      // 无子导航，使用二级导航布局
    },
  ];
}
