import apiClient from './client'

export interface AIConfig {
  id: number
  name: string
  provider: 'openai' | 'anthropic' | 'custom'
  baseUrl: string  // 注意：后端返回的是 baseUrl 而不是 baseURL
  apiKey: string
  models?: string[]
  defaultModel: string
  settings?: Record<string, any>
  isActive: boolean
  isDefault: boolean
  createdAt: string
  updatedAt: string
}

export interface CreateAIConfigRequest {
  name: string
  provider: 'openai' | 'anthropic' | 'custom'
  baseUrl: string  // 注意：后端使用 baseUrl 而不是 baseURL
  apiKey: string
  defaultModel?: string
  settings?: Record<string, any>
  isActive?: boolean
  isDefault?: boolean
}

export interface UpdateAIConfigRequest {
  name?: string
  provider?: 'openai' | 'anthropic' | 'custom'
  baseUrl?: string  // 注意：后端使用 baseUrl 而不是 baseURL
  apiKey?: string
  defaultModel?: string
  settings?: Record<string, any>
  isActive?: boolean
  isDefault?: boolean
}

export interface ModelInfo {
  id: string
  name: string
  ownedBy: string
}

export interface GetModelsRequest {
  baseUrl: string  // 注意：后端使用 baseUrl 而不是 baseURL
  apiKey: string
  provider: 'openai' | 'anthropic' | 'custom'
}

export interface GetModelsResponse {
  models: ModelInfo[]
}

export interface TestAIConfigRequest {
  baseUrl: string  // 注意：后端使用 baseUrl 而不是 baseURL
  apiKey: string
  provider: 'openai' | 'anthropic' | 'custom'
  model: string
}

export interface TestAIConfigResponse {
  success: boolean
  message: string
  latency: number
}

export interface AIConfigListResponse {
  list: AIConfig[]
  total: number
}

export const aiConfigApi = {
  // 创建AI配置
  createAIConfig: (data: CreateAIConfigRequest) => {
    return apiClient.post<AIConfig>('/app/ai-config', data)
  },

  // 获取AI配置列表
  getAIConfigList: () => {
    return apiClient.get<AIConfigListResponse>('/app/ai-config')
  },

  // 更新AI配置
  updateAIConfig: (id: number, data: UpdateAIConfigRequest) => {
    return apiClient.put<AIConfig>(`/app/ai-config/${id}`, data)
  },

  // 删除AI配置
  deleteAIConfig: (id: number) => {
    return apiClient.delete<null>(`/app/ai-config/${id}`)
  },

  // 获取模型列表
  getModels: (data: GetModelsRequest) => {
    return apiClient.post<GetModelsResponse>('/app/ai-config/models', data)
  },

  // 测试AI配置（用于新建时，需要传递完整信息）
  testAIConfig: (data: TestAIConfigRequest) => {
    return apiClient.post<TestAIConfigResponse>('/app/ai-config/test', data)
  },

  // 通过ID测试AI配置（用于已保存的配置，后端会从数据库获取完整API Key）
  testAIConfigById: (id: number) => {
    return apiClient.post<TestAIConfigResponse>(`/app/ai-config/${id}/test`)
  },

  // 通过ID获取模型列表（用于已保存的配置，后端会从数据库获取完整API Key）
  getModelsByConfigId: (id: number) => {
    return apiClient.get<GetModelsResponse>(`/app/ai-config/${id}/models`)
  },
}
