/**
 * 高德 API 诊断工具
 * 在浏览器控制台运行此脚本，诊断 API 问题
 */

async function diagnoseAmapAPI() {
  console.log('='.repeat(60))
  console.log('🔍 高德地图 API 诊断工具')
  console.log('='.repeat(60))
  console.log('')

  // 1. 读取当前配置
  console.log('📋 步骤 1/5: 检查当前配置')
  console.log('-'.repeat(60))

  const currentKey = 'c30e9ebd414fd6a4dfcc1ba8c2060dbb'
  console.log('当前 API Key:', currentKey)
  console.log('Key 长度:', currentKey.length, currentKey.length === 32 ? '✅' : '❌ (应该是32位)')
  console.log('')

  // 2. 测试 API 连接
  console.log('📋 步骤 2/5: 测试 API 连接')
  console.log('-'.repeat(60))

  const testOrigin = '108.020961,30.186459'
  const testDestination = '108.010961,30.176459'

  const testUrl = `https://restapi.amap.com/v3/direction/driving?key=${currentKey}&origin=${testOrigin}&destination=${testDestination}&extensions=all&output=json`

  try {
    const response = await fetch(testUrl)
    const data = await response.json()

    console.log('API 响应状态:', response.status)
    console.log('API 返回数据:', data)
    console.log('')

    // 3. 分析响应
    console.log('📋 步骤 3/5: 分析 API 响应')
    console.log('-'.repeat(60))

    if (data.status === '1') {
      console.log('✅ API 调用成功！')
      console.log('路线距离:', data.route.paths[0].distance, '米')
      console.log('预计时间:', data.route.paths[0].duration, '秒')
      console.log('')
      console.log('🎉 恭喜！你的 API Key 配置正确，可以正常使用路径规划功能。')
    } else {
      console.log('❌ API 调用失败')
      console.log('错误代码:', data.infocode)
      console.log('错误信息:', data.info)
      console.log('')

      // 4. 错误诊断
      console.log('📋 步骤 4/5: 错误诊断')
      console.log('-'.repeat(60))

      const errorMap = {
        '10001': {
          name: 'INVALID_USER_KEY',
          reason: 'Key 不存在或已过期',
          solution: [
            '1. 检查 Key 是否复制完整',
            '2. 登录高德控制台确认 Key 状态',
            '3. 如果 Key 已删除，请创建新的 Key'
          ]
        },
        '10003': {
          name: 'DAILY_QUERY_OVER_LIMIT',
          reason: '访问次数超出限制',
          solution: [
            '1. 等待明天配额重置',
            '2. 升级到付费套餐',
            '3. 临时使用直线距离功能'
          ]
        },
        '10004': {
          name: 'IP_QUERY_OVER_LIMIT',
          reason: 'IP 白名单校验失败',
          solution: [
            '1. 在控制台将当前 IP 添加到白名单',
            '2. 或者删除 IP 白名单限制'
          ]
        },
        '10005': {
          name: 'INVALID_USER_SCODE',
          reason: '用户签名未通过',
          solution: [
            '1. 检查是否配置了数字签名',
            '2. 如果不需要签名，在控制台关闭'
          ]
        },
        '10009': {
          name: 'USERKEY_PLAT_NOMATCH',
          reason: '⚠️ Key 的类型与请求的服务不匹配',
          solution: [
            '❌ 你提供的是 "Web 端（JS API）" 类型的 Key',
            '✅ 需要的是 "Web 服务 API" 类型的 Key',
            '',
            '解决步骤：',
            '1. 访问 https://console.amap.com/dev/key/app',
            '2. 点击"添加 Key"',
            '3. ⭐ 服务平台选择 "Web 服务"',
            '4. 提交后复制新的 Key',
            '5. 替换代码中的 Key'
          ]
        },
        '10010': {
          name: 'IP_ACCESS_LIMITED',
          reason: 'IP 访问受限',
          solution: [
            '1. 检查 IP 白名单配置',
            '2. 确认当前 IP 在允许列表中'
          ]
        },
        '20003': {
          name: 'INVALID_PARAMS',
          reason: '请求参数非法',
          solution: [
            '1. 检查坐标格式是否正确',
            '2. 确认坐标在中国境内'
          ]
        }
      }

      const error = errorMap[data.infocode]
      if (error) {
        console.log('错误名称:', error.name)
        console.log('问题原因:', error.reason)
        console.log('')
        console.log('解决方案:')
        error.solution.forEach((step, index) => {
          console.log(step)
        })
      } else {
        console.log('未知错误代码，请查阅高德官方文档：')
        console.log('https://lbs.amap.com/api/webservice/guide/tools/info')
      }
    }
  } catch (error) {
    console.log('❌ 网络请求失败')
    console.log('错误信息:', error.message)
    console.log('')
    console.log('可能原因：')
    console.log('1. 网络连接问题')
    console.log('2. CORS 跨域限制（正常，Web 服务 API 不受影响）')
    console.log('3. 防火墙阻止了请求')
  }

  console.log('')
  console.log('📋 步骤 5/5: 建议操作')
  console.log('-'.repeat(60))
  console.log('')
  console.log('👉 立即操作：')
  console.log('1. 访问: https://console.amap.com/dev/key/app')
  console.log('2. 创建 "Web 服务" 类型的 Key')
  console.log('3. 开通 "路径规划" 服务')
  console.log('4. 替换代码中的 Key')
  console.log('')
  console.log('📚 相关文档：')
  console.log('- API 问题诊断: 项目根目录/API问题诊断.md')
  console.log('- 测试指南: 项目根目录/如何测试路径规划.md')
  console.log('')
  console.log('='.repeat(60))
  console.log('诊断完成！')
  console.log('='.repeat(60))
}

// 自动运行诊断
console.log('⏳ 开始诊断...\n')
diagnoseAmapAPI()
