// 地区数据系统测试工具
// 用于验证双地区数据系统是否正常工作

import { regionData } from 'element-china-area-data';
import { chinaAreaList } from '@/api/system/addressarea/index';
import { convertRegionData, BackendRegionUtils } from './regionDataConverter';

/**
 * 测试基本信息地址选择系统
 */
export function testFrontendRegionData() {
  console.log('=== 测试基本信息地址选择系统 ===');
  
  if (!regionData || !Array.isArray(regionData)) {
    console.error('❌ 前端地区数据加载失败');
    return false;
  }
  
  console.log('✅ 前端地区数据加载成功');
  console.log(`📊 省份数量: ${regionData.length}`);
  
  // 测试数据结构
  const firstProvince = regionData[0];
  if (firstProvince && firstProvince.value && firstProvince.label && firstProvince.children) {
    console.log('✅ 数据结构正确');
    console.log(`📍 示例省份: ${firstProvince.label} (${firstProvince.value})`);
    
    const firstCity = firstProvince.children[0];
    if (firstCity && firstCity.children) {
      console.log(`📍 示例城市: ${firstCity.label} (${firstCity.value})`);
      console.log(`📍 示例区县: ${firstCity.children[0]?.label} (${firstCity.children[0]?.value})`);
    }
  } else {
    console.error('❌ 前端地区数据结构异常');
    return false;
  }
  
  return true;
}

/**
 * 测试供应区域管理系统
 */
export async function testBackendRegionData() {
  console.log('=== 测试供应区域管理系统 ===');
  
  try {
    const res = await chinaAreaList();
    const backendData = res.data;
    
    if (!backendData || !Array.isArray(backendData)) {
      console.error('❌ 后端地区数据加载失败');
      return false;
    }
    
    console.log('✅ 后端地区数据加载成功');
    console.log(`📊 省份数量: ${backendData.length}`);
    
    // 测试数据结构
    const firstProvince = backendData[0];
    if (firstProvince && firstProvince.id && firstProvince.areaCode && firstProvince.areaName) {
      console.log('✅ 数据结构正确');
      console.log(`📍 示例省份: ${firstProvince.areaName} (${firstProvince.areaCode})`);
      
      if (firstProvince.children && firstProvince.children.length > 0) {
        const firstCity = firstProvince.children[0];
        console.log(`📍 示例城市: ${firstCity.areaName} (${firstCity.areaCode})`);
      }
    } else {
      console.error('❌ 后端地区数据结构异常');
      return false;
    }
    
    // 测试数据转换
    const convertedData = convertRegionData(backendData);
    if (convertedData && convertedData.length > 0) {
      console.log('✅ 数据转换成功');
      console.log(`📊 转换后数据量: ${convertedData.length}`);
    } else {
      console.error('❌ 数据转换失败');
      return false;
    }
    
    // 测试工具函数
    const beijingData = BackendRegionUtils.findByAreaCode(backendData, 'CN11');
    if (beijingData) {
      console.log(`✅ 工具函数测试成功: 找到 ${beijingData.areaName}`);
    }
    
    return true;
  } catch (error) {
    console.error('❌ 后端地区数据测试失败:', error);
    return false;
  }
}

/**
 * 运行完整的地区数据系统测试
 */
export async function runRegionDataTests() {
  console.log('🚀 开始地区数据系统测试...');
  
  const frontendTest = testFrontendRegionData();
  const backendTest = await testBackendRegionData();
  
  if (frontendTest && backendTest) {
    console.log('🎉 所有测试通过！双地区数据系统工作正常');
    return true;
  } else {
    console.log('❌ 部分测试失败，请检查相关配置');
    return false;
  }
}

// 在开发环境下可以手动运行测试
if (import.meta.env.DEV) {
  // 可以在控制台运行: runRegionDataTests()
  (window as any).runRegionDataTests = runRegionDataTests;
  (window as any).testFrontendRegionData = testFrontendRegionData;
  (window as any).testBackendRegionData = testBackendRegionData;
}