/**
 * 收入评估工具函数
 */

/**
 * 收入等级映射表
 */
export const INCOME_LEVEL_MAP = {
  '-': {
    name: '无记录',
    range: '查询无社保记录',
    minAmount: 0,
    maxAmount: 0,
    color: '#94a3b8',
    riskLevel: 'high',
    description: '未发现社保缴费记录，无法进行收入评估'
  },
  'A': {
    name: 'A级收入',
    range: '2,000 - 4,000 元',
    minAmount: 2000,
    maxAmount: 4000,
    color: '#ef4444',
    riskLevel: 'medium-high',
    description: '基础收入水平，消费能力有限'
  },
  'B': {
    name: 'B级收入',
    range: '4,000 - 6,000 元',
    minAmount: 4000,
    maxAmount: 6000,
    color: '#f97316',
    riskLevel: 'medium',
    description: '普通收入水平，具备基础消费能力'
  },
  'C': {
    name: 'C级收入',
    range: '6,000 - 8,000 元',
    minAmount: 6000,
    maxAmount: 8000,
    color: '#eab308',
    riskLevel: 'medium-low',
    description: '中等收入水平，消费能力良好'
  },
  'D': {
    name: 'D级收入',
    range: '8,000 - 10,000 元',
    minAmount: 8000,
    maxAmount: 10000,
    color: '#84cc16',
    riskLevel: 'low',
    description: '中等偏上收入，消费能力较强'
  },
  'E': {
    name: 'E级收入',
    range: '10,000 - 14,000 元',
    minAmount: 10000,
    maxAmount: 14000,
    color: '#22c55e',
    riskLevel: 'very-low',
    description: '良好收入水平，消费能力强劲'
  },
  'F': {
    name: 'F级收入',
    range: '14,000 - 18,000 元',
    minAmount: 14000,
    maxAmount: 18000,
    color: '#10b981',
    riskLevel: 'very-low',
    description: '较高收入水平，消费能力很强'
  },
  'G': {
    name: 'G级收入',
    range: '18,000 - 22,000 元',
    minAmount: 18000,
    maxAmount: 22000,
    color: '#06b6d4',
    riskLevel: 'minimal',
    description: '高收入水平，消费能力强大'
  },
  'H': {
    name: 'H级收入',
    range: '22,000 - 26,000 元',
    minAmount: 22000,
    maxAmount: 26000,
    color: '#3b82f6',
    riskLevel: 'minimal',
    description: '很高收入水平，消费能力顶级'
  },
  'I': {
    name: 'I级收入',
    range: '26,000 - 30,000 元',
    minAmount: 26000,
    maxAmount: 30000,
    color: '#8b5cf6',
    riskLevel: 'none',
    description: '优秀收入水平，消费能力超强'
  },
  'J': {
    name: 'J级收入',
    range: '30,000+ 元',
    minAmount: 30000,
    maxAmount: Infinity,
    color: '#d946ef',
    riskLevel: 'none',
    description: '卓越收入水平，消费潜力无限'
  }
}

/**
 * 获取收入等级信息
 * @param {string} level - 收入等级
 * @returns {object} 等级信息
 */
export const getIncomeLevelInfo = (level) => {
  return INCOME_LEVEL_MAP[level] || {
    name: '未知等级',
    range: '数据异常',
    minAmount: 0,
    maxAmount: 0,
    color: '#94a3b8',
    riskLevel: 'unknown',
    description: '数据异常，无法进行准确评估'
  }
}

/**
 * 获取收入等级显示名称
 * @param {string} level - 收入等级
 * @returns {string} 显示名称
 */
export const getIncomeLevelName = (level) => {
  const levelInfo = getIncomeLevelInfo(level)
  return levelInfo.name
}

/**
 * 获取收入范围
 * @param {string} level - 收入等级
 * @returns {string} 收入范围
 */
export const getIncomeRange = (level) => {
  const levelInfo = getIncomeLevelInfo(level)
  return levelInfo.range
}

/**
 * 获取收入等级颜色
 * @param {string} level - 收入等级
 * @returns {string} 颜色值
 */
export const getIncomeLevelColor = (level) => {
  const levelInfo = getIncomeLevelInfo(level)
  return levelInfo.color
}

/**
 * 获取风险等级
 * @param {string} level - 收入等级
 * @returns {string} 风险等级
 */
export const getRiskLevel = (level) => {
  const levelInfo = getIncomeLevelInfo(level)
  return levelInfo.riskLevel
}

/**
 * 格式化金额
 * @param {number} amount - 金额
 * @returns {string} 格式化后的金额
 */
export const formatAmount = (amount) => {
  if (!amount || amount === 0) return '0'
  
  return amount.toLocaleString('zh-CN', {
    style: 'currency',
    currency: 'CNY',
    minimumFractionDigits: 0,
    maximumFractionDigits: 0
  })
}

/**
 * 获取收入等级排名百分比
 * @param {string} level - 收入等级
 * @returns {number} 排名百分比 (0-100)
 */
export const getIncomePercentile = (level) => {
  const percentileMap = {
    '-': 0,
    'A': 10,
    'B': 25,
    'C': 40,
    'D': 55,
    'E': 70,
    'F': 80,
    'G': 85,
    'H': 90,
    'I': 95,
    'J': 99
  }
  
  return percentileMap[level] || 0
}

/**
 * 获取市场对比描述
 * @param {string} level - 收入等级
 * @returns {string} 市场对比描述
 */
export const getMarketComparison = (level) => {
  const percentile = getIncomePercentile(level)
  
  if (percentile === 0) {
    return '无社保记录，无法与市场平均水平进行对比'
  } else if (percentile <= 20) {
    return `低于市场平均收入水平，处于收入分布的底部${percentile}%区间`
  } else if (percentile <= 40) {
    return `略低于市场平均收入水平，处于收入分布的底部${percentile}%区间`
  } else if (percentile <= 60) {
    return `接近市场平均收入水平，处于收入分布的中等${percentile}%区间`
  } else if (percentile <= 80) {
    return `高于市场平均收入水平，处于收入分布的上层${percentile}%区间`
  } else if (percentile <= 90) {
    return `显著高于市场平均收入水平，处于收入分布的顶部${100-percentile}%区间`
  } else {
    return `远超市场绝大多数收入水平，处于收入分布的顶部${100-percentile}%区间`
  }
}

/**
 * 获取信用风险评估
 * @param {string} level - 收入等级
 * @returns {object} 风险评估信息
 */
export const getCreditRiskAssessment = (level) => {
  const riskAssessments = {
    '-': {
      level: '高风险',
      description: '缺乏社保记录，收入稳定性存在不确定性，信用风险较高',
      score: 20,
      recommendations: ['核实收入来源', '要求担保措施', '谨慎放贷']
    },
    'A': {
      level: '中高风险',
      description: '收入水平较低，还款能力有限，需要谨慎评估信用风险',
      score: 35,
      recommendations: ['评估还款能力', '适当降低额度', '关注还款记录']
    },
    'B': {
      level: '中等风险',
      description: '收入水平一般，具备基础还款能力，信用风险中等',
      score: 50,
      recommendations: ['正常业务流程', '定期跟踪', '建立信用档案']
    },
    'C': {
      level: '中低风险',
      description: '收入稳定，还款能力良好，信用风险较低',
      score: 65,
      recommendations: ['可正常合作', '适度提升额度', '优化服务']
    },
    'D': {
      level: '低风险',
      description: '收入较高，还款能力强，信用风险低',
      score: 75,
      recommendations: ['优质客户', '提升服务等级', '拓展业务']
    },
    'E': {
      level: '很低风险',
      description: '收入良好，还款能力很强，信用风险很低',
      score: 85,
      recommendations: ['重点客户', '专享服务', '深度合作']
    },
    'F': {
      level: '极低风险',
      description: '高收入群体，还款能力优秀，信用风险极低',
      score: 90,
      recommendations: ['VIP客户', '定制服务', '战略合作']
    },
    'G': {
      level: '极低风险',
      description: '高收入群体，还款能力卓越，信用风险极低',
      score: 92,
      recommendations: ['顶级客户', '私人定制', '长期合作']
    },
    'H': {
      level: '无风险',
      description: '高端收入群体，还款能力顶级，几乎无信用风险',
      score: 95,
      recommendations: ['钻石客户', '专属服务', '全面合作']
    },
    'I': {
      level: '无风险',
      description: '精英收入群体，还款能力完美，无信用风险',
      score: 97,
      recommendations: ['白金客户', '尊享服务', '全方位合作']
    },
    'J': {
      level: '零风险',
      description: '顶级收入群体，还款能力无限，零信用风险',
      score: 99,
      recommendations: ['至尊客户', '顶级服务', '战略伙伴']
    }
  }
  
  return riskAssessments[level] || {
    level: '未知风险',
    description: '数据异常，无法进行风险评估',
    score: 0,
    recommendations: ['数据核实', '人工审核', '谨慎处理']
  }
}

/**
 * 获取消费能力分析
 * @param {string} level - 收入等级
 * @returns {object} 消费能力分析
 */
export const getConsumptionCapacity = (level) => {
  const capacityAnalysis = {
    '-': {
      level: '无法评估',
      description: '缺乏收入数据，无法评估消费能力',
      categories: []
    },
    'A': {
      level: '基础消费',
      description: '主要满足基本生活需求，消费能力有限',
      categories: ['基本生活用品', '必需品消费', '低价商品']
    },
    'B': {
      level: '一般消费',
      description: '能够满足日常消费需求，偶有小额娱乐支出',
      categories: ['日常用品', '基础娱乐', '小额投资']
    },
    'C': {
      level: '中等消费',
      description: '具备良好的消费能力，可进行中档消费',
      categories: ['品质商品', '休闲娱乐', '教育投资', '小额理财']
    },
    'D': {
      level: '较强消费',
      description: '消费能力较强，可进行中高档消费',
      categories: ['中高档商品', '旅游度假', '技能培训', '理财投资']
    },
    'E': {
      level: '强劲消费',
      description: '消费能力强劲，可进行高档消费和投资',
      categories: ['高档商品', '奢侈品', '高端服务', '投资理财']
    },
    'F': {
      level: '很强消费',
      description: '消费能力很强，可进行奢侈消费和多元投资',
      categories: ['奢侈品', '高端服务', '房产投资', '金融产品']
    },
    'G': {
      level: '强大消费',
      description: '消费能力强大，属于高端消费群体',
      categories: ['顶级奢侈品', '私人定制', '房产投资', '股权投资']
    },
    'H': {
      level: '顶级消费',
      description: '消费能力顶级，属于超高端消费群体',
      categories: ['超级奢侈品', '私人飞机', '豪华房产', '私募基金']
    },
    'I': {
      level: '超强消费',
      description: '消费能力超强，属于精英消费群体',
      categories: ['收藏品', '艺术品', '豪华游艇', '对冲基金']
    },
    'J': {
      level: '无限消费',
      description: '消费潜力无限，属于顶级财富群体',
      categories: ['任何商品', '私人岛屿', '慈善事业', '风险投资']
    }
  }
  
  return capacityAnalysis[level] || {
    level: '未知',
    description: '数据异常，无法分析消费能力',
    categories: []
  }
}

/**
 * 生成收入评估报告
 * @param {string} level - 收入等级
 * @returns {object} 完整的评估报告
 */
export const generateIncomeAssessmentReport = (level) => {
  const levelInfo = getIncomeLevelInfo(level)
  const riskAssessment = getCreditRiskAssessment(level)
  const consumptionCapacity = getConsumptionCapacity(level)
  const marketComparison = getMarketComparison(level)
  const percentile = getIncomePercentile(level)
  
  return {
    level,
    levelInfo,
    riskAssessment,
    consumptionCapacity,
    marketComparison,
    percentile,
    timestamp: new Date().toISOString(),
    summary: {
      grade: levelInfo.name,
      range: levelInfo.range,
      riskLevel: riskAssessment.level,
      riskScore: riskAssessment.score,
      marketPosition: `超过${percentile}%的收入水平`,
      recommendations: riskAssessment.recommendations
    }
  }
}
