import axios from 'axios'
import type { AxiosRequestConfig, AxiosResponse } from 'axios'

const instance = axios.create({
    baseURL: process.env.API_BASE_URL,
    timeout: 10000,
    headers: {
      'Content-Type': 'application/json'
    }
  })
  
  // 请求拦截器
  instance.interceptors.request.use(
    (config) => {
      // 添加认证 token
      const token = localStorage.getItem('access_token')
      if (token) {
        config.headers.Authorization = `Bearer ${token}`
      }
      return config
    },
    (error) => {
      return Promise.reject(error)
    }
  )
  
  // 响应拦截器
  instance.interceptors.response.use(
    (response) => {
      console.log('Response:', response)
      // 统一处理响应数据格式
      if (response.status === 200) {
        return response.data
      }
      return Promise.reject(response.data)
    },
    (error) => {
      // 统一错误处理
      console.error('API Error:', error.response?.status, error.message)
      return Promise.reject(error)
    }
  )

export default instance