/**
 * Axios 请求封装
 *
 * @module utils/request
 * @author czj
 * @date 2026-07-09
 */

import axios, { AxiosInstance, AxiosResponse } from 'axios'
import { ElMessage } from 'element-plus'

/**
 * 创建 Axios 实例
 */
const request: AxiosInstance = axios.create({
  baseURL: '',
  timeout: 300000,  // 5 分钟超时，适合测试执行场景
  headers: {
    'Content-Type': 'application/json'
  }
})

/**
 * 请求拦截器
 */
request.interceptors.request.use(
  (config) => {
    // 可以在这里添加 token 等
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)

/**
 * 响应拦截器
 */
request.interceptors.response.use(
  (response: AxiosResponse) => {
    return response.data
  },
  (error) => {
    // 统一错误处理
    const message = error.response?.data?.detail || error.message || '请求失败'
    ElMessage.error(message)
    return Promise.reject(error)
  }
)

export default request