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

const instance = axios.create({
    // baseURL: process.env.API_BASE_URL,
    baseURL: 'http://localhost:8080',
    timeout: 10000,
    headers: {
      'Content-Type': 'application/json'
    }
  })
  
  // 请求拦截器
  instance.interceptors.request.use(
    (config) => {
      // 添加认证 token
      const token = localStorage.getItem('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