// 系统配置文件
/**
 * 全局配置文件
 * 包含应用的所有全局配置项，可在整个应用中访问
 * 支持通过外部配置文件（window.APP_CONFIG）覆盖默认配置
 */

/**
 * 获取外部配置
 * 优先使用外部配置文件中的配置，如果没有则使用默认值
 * @type {Object} 外部配置对象
 */
const externalConfig = typeof window !== 'undefined' && window.APP_CONFIG || {};

/**
 * 导出全局配置对象
 * 包含应用基本信息、API配置、布局配置、主题配置等
 * @returns {Object} 全局配置对象
 */
export default {
  /**
   * 应用基本信息配置
   * 包含应用名称、版本和描述等基本信息
   */
  app: {
    // 合并外部配置中的app配置
    ...externalConfig.app,
    // 应用名称（优先使用外部配置，否则使用默认值）
    name: externalConfig.app?.name || '仓库管理操作端',
    // 应用版本号（优先使用外部配置，否则使用默认值）
    version: externalConfig.app?.version || '1.0.0',
    // 应用描述信息（优先使用外部配置，否则使用默认值）
    description: externalConfig.app?.description || '现代化仓库管理系统前端操作界面'
  },
  
  /**
   * API配置
   * 包含API请求相关的配置，如基础URL、超时时间等
   */
  api: {
    // 合并外部配置中的api配置
    ...externalConfig.api,
    // API基础URL（优先使用外部配置，其次使用环境变量，最后使用默认值）
    baseUrl: externalConfig.api?.baseUrl || import.meta.env.VITE_API_BASE_URL || '/api',
    // API请求超时时间（毫秒）（优先使用外部配置，否则使用默认值）
    timeout: externalConfig.api?.timeout || 30000, // 30秒超时
    // 请求失败重试次数（优先使用外部配置，否则使用默认值）
    retryCount: externalConfig.api?.retryCount || 3, // 请求失败重试次数
    // 重试间隔时间（毫秒）（优先使用外部配置，否则使用默认值）
    retryDelay: externalConfig.api?.retryDelay || 1000 // 重试间隔（毫秒）
  },
  
  /**
   * 布局配置
   * 包含应用界面布局相关的配置，如侧边栏宽度、头部高度等
   */
  layout: {
    // 侧边栏宽度（像素）
    sidebarWidth: 240,
    // 头部导航栏高度（像素）
    headerHeight: 60,
    // 过渡动画时长（毫秒）
    transitionDuration: 300,
    // 是否显示面包屑导航
    showBreadcrumb: true
  },
  
  /**
   * 主题配置
   * 包含应用界面主题相关的配置，如颜色、字体大小等
   */
  theme: {
    // 主色调（蓝色）
    primaryColor: '#1890ff',
    // 成功状态颜色（绿色）
    successColor: '#52c41a',
    // 警告状态颜色（黄色）
    warningColor: '#faad14',
    // 错误状态颜色（红色）
    errorColor: '#f5222d',
    // 基础字体大小（像素）
    fontSize: 14,
    // 是否开启暗黑模式
    darkMode: false
  },
  
  /**
   * 缓存配置
   * 包含应用数据缓存相关的配置
   */
  cache: {
    // 是否启用缓存
    enable: true,
    // 默认缓存过期时间（毫秒）（24小时）
    defaultExpireTime: 24 * 60 * 60 * 1000
  },
  
  /**
   * 分页配置
   * 包含数据分页显示相关的配置
   */
  pagination: {
    // 可选的每页记录数
    pageSizes: [10, 20, 50, 100],
    // 默认每页记录数
    defaultPageSize: 20
  },
  
  /**
   * 上传配置
   * 包含文件上传相关的配置，如最大文件大小、允许的文件类型等
   */
  upload: {
    // 最大文件大小（字节）（10MB）
    maxSize: 10 * 1024 * 1024,
    // 允许上传的文件类型
    allowedTypes: ['jpg', 'jpeg', 'png', 'gif', 'pdf', 'doc', 'docx', 'xls', 'xlsx']
  },
  
  /**
   * 日期时间格式配置
   * 包含日期和时间的格式化配置
   */
  date: {
    // 日期格式
    format: 'YYYY-MM-DD',
    // 时间格式
    timeFormat: 'HH:mm:ss',
    // 日期时间格式
    dateTimeFormat: 'YYYY-MM-DD HH:mm:ss'
  },
  
  /**
   * 权限配置
   * 包含应用权限相关的配置，如超级管理员角色、默认角色等
   */
  permission: {
    // 超级管理员角色名称
    superAdminRole: 'admin',
    // 默认用户角色名称
    defaultRole: 'user'
  }
}