/**
 * 应用配置文件
 * 包含应用的基础配置、API配置、功能开关等
 */

// 环境配置
export const ENV_CONFIG = {
  // 开发环境
  development: {
    API_BASE_URL: 'https://dev-api.xlxumu.com',
    WS_BASE_URL: 'wss://dev-ws.xlxumu.com',
    CDN_BASE_URL: 'https://dev-cdn.xlxumu.com',
    DEBUG: true,
    LOG_LEVEL: 'debug'
  },
  
  // 测试环境
  testing: {
    API_BASE_URL: 'https://test-api.xlxumu.com',
    WS_BASE_URL: 'wss://test-ws.xlxumu.com',
    CDN_BASE_URL: 'https://test-cdn.xlxumu.com',
    DEBUG: true,
    LOG_LEVEL: 'info'
  },
  
  // 生产环境
  production: {
    API_BASE_URL: 'https://api.xlxumu.com',
    WS_BASE_URL: 'wss://ws.xlxumu.com',
    CDN_BASE_URL: 'https://cdn.xlxumu.com',
    DEBUG: false,
    LOG_LEVEL: 'error'
  }
}

// 当前环境
export const CURRENT_ENV = process.env.NODE_ENV || 'development'

// 当前环境配置
export const CONFIG = ENV_CONFIG[CURRENT_ENV]

// 应用基础信息
export const APP_INFO = {
  NAME: '畜牧管理系统',
  VERSION: '1.0.0',
  BUILD_TIME: '2024-01-01 00:00:00',
  AUTHOR: 'XLXUMU Team',
  DESCRIPTION: '智慧畜牧业管理平台',
  KEYWORDS: ['畜牧', '养殖', '管理', '智慧农业'],
  
  // 小程序信息
  MINI_PROGRAMS: {
    'farming-manager': {
      name: '养殖管理',
      appId: 'wx1234567890abcdef',
      version: '1.0.0',
      description: '专业的养殖场管理工具'
    },
    'cattle-trading': {
      name: '牲畜交易',
      appId: 'wx2345678901bcdefg',
      version: '1.0.0',
      description: '安全便捷的牲畜交易平台'
    },
    'beef-mall': {
      name: '牛肉商城',
      appId: 'wx3456789012cdefgh',
      version: '1.0.0',
      description: '优质牛肉在线购买平台'
    },
    'bank-supervision': {
      name: '银行监管',
      appId: 'wx4567890123defghi',
      version: '1.0.0',
      description: '畜牧业金融监管服务'
    },
    'insurance-supervision': {
      name: '保险监管',
      appId: 'wx5678901234efghij',
      version: '1.0.0',
      description: '畜牧业保险监管平台'
    }
  }
}

// API配置
export const API_CONFIG = {
  // 请求超时时间
  TIMEOUT: 10000,
  
  // 重试次数
  RETRY_COUNT: 3,
  
  // 重试间隔（毫秒）
  RETRY_INTERVAL: 1000,
  
  // 请求头配置
  HEADERS: {
    'Content-Type': 'application/json',
    'Accept': 'application/json',
    'X-Requested-With': 'XMLHttpRequest'
  },
  
  // 状态码配置
  STATUS_CODES: {
    SUCCESS: 200,
    UNAUTHORIZED: 401,
    FORBIDDEN: 403,
    NOT_FOUND: 404,
    SERVER_ERROR: 500,
    NETWORK_ERROR: -1
  },
  
  // 错误消息配置
  ERROR_MESSAGES: {
    NETWORK_ERROR: '网络连接失败，请检查网络设置',
    TIMEOUT_ERROR: '请求超时，请稍后重试',
    SERVER_ERROR: '服务器错误，请稍后重试',
    UNAUTHORIZED: '登录已过期，请重新登录',
    FORBIDDEN: '没有权限访问该资源',
    NOT_FOUND: '请求的资源不存在',
    UNKNOWN_ERROR: '未知错误，请稍后重试'
  }
}

// 存储配置
export const STORAGE_CONFIG = {
  // 存储键名前缀
  KEY_PREFIX: 'xlxumu_',
  
  // 默认过期时间（毫秒）
  DEFAULT_EXPIRE_TIME: 7 * 24 * 60 * 60 * 1000, // 7天
  
  // 最大存储大小（字节）
  MAX_SIZE: 10 * 1024 * 1024, // 10MB
  
  // 缓存配置
  CACHE: {
    API_CACHE_TIME: 5 * 60 * 1000, // API缓存5分钟
    IMAGE_CACHE_TIME: 24 * 60 * 60 * 1000, // 图片缓存24小时
    USER_CACHE_TIME: 30 * 24 * 60 * 60 * 1000 // 用户信息缓存30天
  }
}

// 上传配置
export const UPLOAD_CONFIG = {
  // 最大文件大小（字节）
  MAX_FILE_SIZE: 10 * 1024 * 1024, // 10MB
  
  // 允许的文件类型
  ALLOWED_TYPES: {
    image: ['jpg', 'jpeg', 'png', 'gif', 'webp'],
    video: ['mp4', 'avi', 'mov', 'wmv'],
    document: ['pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx'],
    audio: ['mp3', 'wav', 'aac', 'm4a']
  },
  
  // 上传路径配置
  UPLOAD_PATHS: {
    avatar: '/uploads/avatars/',
    livestock: '/uploads/livestock/',
    documents: '/uploads/documents/',
    reports: '/uploads/reports/',
    certificates: '/uploads/certificates/'
  },
  
  // 图片压缩配置
  IMAGE_COMPRESS: {
    quality: 0.8,
    maxWidth: 1920,
    maxHeight: 1080
  }
}

// 地图配置
export const MAP_CONFIG = {
  // 默认中心点（北京）
  DEFAULT_CENTER: {
    longitude: 116.397428,
    latitude: 39.90923
  },
  
  // 默认缩放级别
  DEFAULT_SCALE: 16,
  
  // 地图类型
  MAP_TYPES: {
    NORMAL: 'normal',
    SATELLITE: 'satellite',
    HYBRID: 'hybrid'
  },
  
  // 定位配置
  LOCATION: {
    type: 'gcj02',
    altitude: true,
    geocode: true,
    timeout: 10000
  }
}

// 支付配置
export const PAYMENT_CONFIG = {
  // 支付方式
  PAYMENT_METHODS: {
    WECHAT: 'wechat',
    ALIPAY: 'alipay',
    BANK_CARD: 'bank_card',
    BALANCE: 'balance'
  },
  
  // 支付环境
  PAYMENT_ENV: CURRENT_ENV === 'production' ? 'production' : 'sandbox',
  
  // 支付超时时间（秒）
  PAYMENT_TIMEOUT: 300,
  
  // 最小支付金额（分）
  MIN_PAYMENT_AMOUNT: 1,
  
  // 最大支付金额（分）
  MAX_PAYMENT_AMOUNT: 100000000 // 100万元
}

// 推送配置
export const PUSH_CONFIG = {
  // 推送类型
  PUSH_TYPES: {
    SYSTEM: 'system',
    BUSINESS: 'business',
    MARKETING: 'marketing'
  },
  
  // 推送渠道
  PUSH_CHANNELS: {
    WECHAT: 'wechat',
    SMS: 'sms',
    EMAIL: 'email',
    APP: 'app'
  },
  
  // 推送模板
  PUSH_TEMPLATES: {
    LOGIN_SUCCESS: 'login_success',
    ORDER_CREATED: 'order_created',
    ORDER_PAID: 'order_paid',
    ORDER_SHIPPED: 'order_shipped',
    ORDER_DELIVERED: 'order_delivered',
    HEALTH_ALERT: 'health_alert',
    BREEDING_REMINDER: 'breeding_reminder',
    FEEDING_REMINDER: 'feeding_reminder'
  }
}

// 功能开关配置
export const FEATURE_FLAGS = {
  // 基础功能
  USER_REGISTRATION: true,
  USER_LOGIN: true,
  PASSWORD_RESET: true,
  
  // 业务功能
  LIVESTOCK_MANAGEMENT: true,
  HEALTH_MONITORING: true,
  BREEDING_MANAGEMENT: true,
  FEEDING_MANAGEMENT: true,
  PRODUCTION_TRACKING: true,
  
  // 交易功能
  CATTLE_TRADING: true,
  ONLINE_PAYMENT: true,
  ORDER_TRACKING: true,
  
  // 商城功能
  BEEF_MALL: true,
  PRODUCT_CATALOG: true,
  SHOPPING_CART: true,
  ORDER_MANAGEMENT: true,
  
  // 金融功能
  LOAN_APPLICATION: true,
  INSURANCE_PURCHASE: true,
  FINANCIAL_REPORTS: true,
  
  // 高级功能
  AI_ANALYSIS: false,
  IOT_INTEGRATION: false,
  BLOCKCHAIN_TRACING: false,
  
  // 实验性功能
  VOICE_CONTROL: false,
  AR_VISUALIZATION: false,
  PREDICTIVE_ANALYTICS: false
}

// 权限配置
export const PERMISSION_CONFIG = {
  // 角色定义
  ROLES: {
    SUPER_ADMIN: 'super_admin',
    ADMIN: 'admin',
    MANAGER: 'manager',
    OPERATOR: 'operator',
    VIEWER: 'viewer',
    USER: 'user'
  },
  
  // 权限定义
  PERMISSIONS: {
    // 用户管理
    USER_CREATE: 'user:create',
    USER_READ: 'user:read',
    USER_UPDATE: 'user:update',
    USER_DELETE: 'user:delete',
    
    // 牲畜管理
    LIVESTOCK_CREATE: 'livestock:create',
    LIVESTOCK_READ: 'livestock:read',
    LIVESTOCK_UPDATE: 'livestock:update',
    LIVESTOCK_DELETE: 'livestock:delete',
    
    // 健康管理
    HEALTH_CREATE: 'health:create',
    HEALTH_READ: 'health:read',
    HEALTH_UPDATE: 'health:update',
    HEALTH_DELETE: 'health:delete',
    
    // 交易管理
    TRADE_CREATE: 'trade:create',
    TRADE_READ: 'trade:read',
    TRADE_UPDATE: 'trade:update',
    TRADE_DELETE: 'trade:delete',
    
    // 财务管理
    FINANCE_CREATE: 'finance:create',
    FINANCE_READ: 'finance:read',
    FINANCE_UPDATE: 'finance:update',
    FINANCE_DELETE: 'finance:delete',
    
    // 报表管理
    REPORT_CREATE: 'report:create',
    REPORT_READ: 'report:read',
    REPORT_EXPORT: 'report:export',
    
    // 系统管理
    SYSTEM_CONFIG: 'system:config',
    SYSTEM_LOG: 'system:log',
    SYSTEM_BACKUP: 'system:backup'
  },
  
  // 角色权限映射
  ROLE_PERMISSIONS: {
    super_admin: ['*'], // 所有权限
    admin: [
      'user:*', 'livestock:*', 'health:*', 'trade:*',
      'finance:*', 'report:*', 'system:config', 'system:log'
    ],
    manager: [
      'user:read', 'user:update', 'livestock:*', 'health:*',
      'trade:*', 'finance:read', 'report:*'
    ],
    operator: [
      'livestock:create', 'livestock:read', 'livestock:update',
      'health:*', 'trade:read', 'report:read'
    ],
    viewer: [
      'livestock:read', 'health:read', 'trade:read',
      'finance:read', 'report:read'
    ],
    user: [
      'livestock:read', 'health:read', 'report:read'
    ]
  }
}

// 主题配置
export const THEME_CONFIG = {
  // 默认主题
  DEFAULT_THEME: 'light',
  
  // 主题列表
  THEMES: {
    light: {
      name: '浅色主题',
      colors: {
        primary: '#2e8b57',
        secondary: '#ff4757',
        success: '#52c41a',
        warning: '#faad14',
        error: '#ff4757',
        info: '#1890ff',
        background: '#ffffff',
        surface: '#f8f9fa',
        text: '#333333',
        textSecondary: '#666666',
        border: '#e5e5e5'
      }
    },
    dark: {
      name: '深色主题',
      colors: {
        primary: '#52c41a',
        secondary: '#ff7875',
        success: '#73d13d',
        warning: '#ffc53d',
        error: '#ff7875',
        info: '#40a9ff',
        background: '#1f1f1f',
        surface: '#2f2f2f',
        text: '#ffffff',
        textSecondary: '#cccccc',
        border: '#404040'
      }
    },
    green: {
      name: '绿色主题',
      colors: {
        primary: '#389e0d',
        secondary: '#fa8c16',
        success: '#52c41a',
        warning: '#faad14',
        error: '#f5222d',
        info: '#1890ff',
        background: '#ffffff',
        surface: '#f6ffed',
        text: '#333333',
        textSecondary: '#666666',
        border: '#d9f7be'
      }
    }
  }
}

// 国际化配置
export const I18N_CONFIG = {
  // 默认语言
  DEFAULT_LOCALE: 'zh-CN',
  
  // 支持的语言
  SUPPORTED_LOCALES: {
    'zh-CN': '简体中文',
    'zh-TW': '繁體中文',
    'en-US': 'English',
    'ja-JP': '日本語',
    'ko-KR': '한국어'
  },
  
  // 语言包加载配置
  LAZY_LOAD: true,
  
  // 回退语言
  FALLBACK_LOCALE: 'zh-CN'
}

// 日志配置
export const LOG_CONFIG = {
  // 日志级别
  LEVELS: {
    ERROR: 0,
    WARN: 1,
    INFO: 2,
    DEBUG: 3
  },
  
  // 当前日志级别
  CURRENT_LEVEL: CONFIG.LOG_LEVEL || 'info',
  
  // 日志输出配置
  OUTPUT: {
    console: true,
    file: false,
    remote: CURRENT_ENV === 'production'
  },
  
  // 远程日志配置
  REMOTE: {
    url: `${CONFIG.API_BASE_URL}/api/logs`,
    batchSize: 10,
    flushInterval: 30000 // 30秒
  }
}

// 性能监控配置
export const PERFORMANCE_CONFIG = {
  // 是否启用性能监控
  ENABLED: CURRENT_ENV === 'production',
  
  // 采样率
  SAMPLE_RATE: 0.1,
  
  // 监控指标
  METRICS: {
    PAGE_LOAD_TIME: true,
    API_RESPONSE_TIME: true,
    ERROR_RATE: true,
    CRASH_RATE: true,
    MEMORY_USAGE: false,
    CPU_USAGE: false
  },
  
  // 上报配置
  REPORT: {
    url: `${CONFIG.API_BASE_URL}/api/performance`,
    interval: 60000, // 1分钟
    batchSize: 50
  }
}

// 导出默认配置
export default {
  ENV_CONFIG,
  CURRENT_ENV,
  CONFIG,
  APP_INFO,
  API_CONFIG,
  STORAGE_CONFIG,
  UPLOAD_CONFIG,
  MAP_CONFIG,
  PAYMENT_CONFIG,
  PUSH_CONFIG,
  FEATURE_FLAGS,
  PERMISSION_CONFIG,
  THEME_CONFIG,
  I18N_CONFIG,
  LOG_CONFIG,
  PERFORMANCE_CONFIG
}