// utils/constants.js - 常量定义
/**
 * API 基础配置
 */
export const API_CONFIG = {
  // 动态获取保险端后端地址
  BASE_URL: process.env.NODE_ENV === 'development' 
    ? 'http://localhost:3000/api'  // 本地开发环境
    : 'https://your-insurance-backend.com/api',  // 生产环境
  
  TIMEOUT: 10000,  // 请求超时时间
  
  // 缓存控制（避免304状态码）
  CACHE_HEADERS: {
    'Cache-Control': 'no-cache',
    'Pragma': 'no-cache'
  }
}

/**
 * 存储键名
 */
export const STORAGE_KEYS = {
  TOKEN: 'token',
  USER_INFO: 'userInfo',
  SEARCH_HISTORY: 'searchHistory',
  CART: 'cart',
  SETTINGS: 'settings'
}

/**
 * 保险产品类型
 */
export const INSURANCE_TYPES = {
  LIFE: 'life',           // 寿险
  HEALTH: 'health',       // 健康险
  ACCIDENT: 'accident',   // 意外险
  VEHICLE: 'vehicle',     // 车险
  PROPERTY: 'property',   // 财产险
  TRAVEL: 'travel',       // 旅行险
  PET: 'pet'             // 宠物险
}

/**
 * 保险产品类型中文映射
 */
export const INSURANCE_TYPE_LABELS = {
  [INSURANCE_TYPES.LIFE]: '寿险',
  [INSURANCE_TYPES.HEALTH]: '健康险',
  [INSURANCE_TYPES.ACCIDENT]: '意外险',
  [INSURANCE_TYPES.VEHICLE]: '车险',
  [INSURANCE_TYPES.PROPERTY]: '财产险',
  [INSURANCE_TYPES.TRAVEL]: '旅行险',
  [INSURANCE_TYPES.PET]: '宠物险'
}

/**
 * 申请状态
 */
export const APPLICATION_STATUS = {
  PENDING: 'pending',         // 待审核
  UNDER_REVIEW: 'under_review', // 审核中
  APPROVED: 'approved',       // 已批准
  REJECTED: 'rejected'        // 已拒绝
}

/**
 * 申请状态中文映射
 */
export const APPLICATION_STATUS_LABELS = {
  [APPLICATION_STATUS.PENDING]: '待审核',
  [APPLICATION_STATUS.UNDER_REVIEW]: '审核中',
  [APPLICATION_STATUS.APPROVED]: '已批准',
  [APPLICATION_STATUS.REJECTED]: '已拒绝'
}

/**
 * 保单状态
 */
export const POLICY_STATUS = {
  ACTIVE: 'active',           // 有效
  EXPIRED: 'expired',         // 已过期
  CANCELLED: 'cancelled',     // 已取消
  SUSPENDED: 'suspended'      // 暂停
}

/**
 * 保单状态中文映射
 */
export const POLICY_STATUS_LABELS = {
  [POLICY_STATUS.ACTIVE]: '有效',
  [POLICY_STATUS.EXPIRED]: '已过期',
  [POLICY_STATUS.CANCELLED]: '已取消',
  [POLICY_STATUS.SUSPENDED]: '暂停'
}

/**
 * 理赔状态
 */
export const CLAIM_STATUS = {
  PENDING: 'pending',         // 待处理
  REVIEWING: 'reviewing',     // 审核中
  APPROVED: 'approved',       // 已批准
  REJECTED: 'rejected',       // 已拒绝
  PAID: 'paid'               // 已赔付
}

/**
 * 理赔状态中文映射
 */
export const CLAIM_STATUS_LABELS = {
  [CLAIM_STATUS.PENDING]: '待处理',
  [CLAIM_STATUS.REVIEWING]: '审核中',
  [CLAIM_STATUS.APPROVED]: '已批准',
  [CLAIM_STATUS.REJECTED]: '已拒绝',
  [CLAIM_STATUS.PAID]: '已赔付'
}

/**
 * 用户角色
 */
export const USER_ROLES = {
  ADMIN: 1,          // 管理员
  REVIEWER: 2,       // 审核员
  CUSTOMER: 3        // 客户
}

/**
 * 用户角色中文映射
 */
export const USER_ROLE_LABELS = {
  [USER_ROLES.ADMIN]: '管理员',
  [USER_ROLES.REVIEWER]: '审核员',
  [USER_ROLES.CUSTOMER]: '客户'
}

/**
 * 性别
 */
export const GENDER = {
  UNKNOWN: 0,        // 未知
  MALE: 1,          // 男
  FEMALE: 2         // 女
}

/**
 * 性别中文映射
 */
export const GENDER_LABELS = {
  [GENDER.UNKNOWN]: '未知',
  [GENDER.MALE]: '男',
  [GENDER.FEMALE]: '女'
}

/**
 * 与受益人关系
 */
export const BENEFICIARY_RELATIONS = [
  { value: 'spouse', label: '配偶' },
  { value: 'parent', label: '父母' },
  { value: 'child', label: '子女' },
  { value: 'sibling', label: '兄弟姐妹' },
  { value: 'other', label: '其他' }
]

/**
 * 文件类型限制
 */
export const FILE_TYPES = {
  IMAGE: ['jpg', 'jpeg', 'png', 'gif', 'webp'],
  DOCUMENT: ['pdf', 'doc', 'docx', 'txt'],
  ALL: ['jpg', 'jpeg', 'png', 'gif', 'webp', 'pdf', 'doc', 'docx', 'txt']
}

/**
 * 文件大小限制（字节）
 */
export const FILE_SIZE_LIMITS = {
  IMAGE: 5 * 1024 * 1024,      // 5MB
  DOCUMENT: 10 * 1024 * 1024,  // 10MB
  DEFAULT: 5 * 1024 * 1024     // 5MB
}

/**
 * 分页配置
 */
export const PAGINATION = {
  DEFAULT_PAGE_SIZE: 10,
  DEFAULT_PAGE: 1,
  MAX_PAGE_SIZE: 100
}

/**
 * 表单验证规则
 */
export const VALIDATION_RULES = {
  PHONE: /^1[3-9]\d{9}$/,
  ID_CARD: /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[0-9Xx]$/,
  EMAIL: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
  PASSWORD: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d@$!%*?&]{8,}$/
}

/**
 * 错误码映射
 */
export const ERROR_CODES = {
  NETWORK_ERROR: 'NETWORK_ERROR',
  TIMEOUT: 'TIMEOUT',
  UNAUTHORIZED: 'UNAUTHORIZED',
  FORBIDDEN: 'FORBIDDEN',
  NOT_FOUND: 'NOT_FOUND',
  VALIDATION_ERROR: 'VALIDATION_ERROR',
  SERVER_ERROR: 'SERVER_ERROR'
}

/**
 * 错误信息映射
 */
export const ERROR_MESSAGES = {
  [ERROR_CODES.NETWORK_ERROR]: '网络连接失败，请检查网络设置',
  [ERROR_CODES.TIMEOUT]: '请求超时，请稍后重试',
  [ERROR_CODES.UNAUTHORIZED]: '登录已过期，请重新登录',
  [ERROR_CODES.FORBIDDEN]: '权限不足，无法访问',
  [ERROR_CODES.NOT_FOUND]: '请求的资源不存在',
  [ERROR_CODES.VALIDATION_ERROR]: '数据验证失败',
  [ERROR_CODES.SERVER_ERROR]: '服务器内部错误，请稍后重试'
}

/**
 * 主题颜色
 */
export const THEME_COLORS = {
  PRIMARY: '#1890ff',
  SUCCESS: '#52c41a',
  WARNING: '#faad14',
  ERROR: '#f5222d',
  INFO: '#722ed1',
  TEXT_PRIMARY: '#262626',
  TEXT_SECONDARY: '#8c8c8c',
  BORDER: '#e8e8e8',
  BACKGROUND: '#f5f5f5'
}

/**
 * 动画持续时间
 */
export const ANIMATION_DURATION = {
  FAST: 200,
  NORMAL: 300,
  SLOW: 500
}

/**
 * 微信小程序限制
 */
export const WECHAT_LIMITS = {
  MAX_REQUEST_SIZE: 1048576,      // 1MB
  MAX_UPLOAD_SIZE: 10485760,      // 10MB
  MAX_CONCURRENT_REQUESTS: 10,    // 最大并发请求数
  MAX_WEBSOCKET_CONNECTIONS: 5    // 最大WebSocket连接数
}

export default {
  API_CONFIG,
  STORAGE_KEYS,
  INSURANCE_TYPES,
  INSURANCE_TYPE_LABELS,
  APPLICATION_STATUS,
  APPLICATION_STATUS_LABELS,
  POLICY_STATUS,
  POLICY_STATUS_LABELS,
  CLAIM_STATUS,
  CLAIM_STATUS_LABELS,
  USER_ROLES,
  USER_ROLE_LABELS,
  GENDER,
  GENDER_LABELS,
  BENEFICIARY_RELATIONS,
  FILE_TYPES,
  FILE_SIZE_LIMITS,
  PAGINATION,
  VALIDATION_RULES,
  ERROR_CODES,
  ERROR_MESSAGES,
  THEME_COLORS,
  ANIMATION_DURATION,
  WECHAT_LIMITS
}