import { request, uploadRequest } from '@/utils/request'

/**
 * 任務相關 API
 */
export const jobsAPI = {
  /**
   * 上傳檔案
   * @param {FormData} formData - 包含檔案和設定的表單資料
   */
  uploadFile(formData) {
    return uploadRequest.post('/files/upload', formData, {
      onUploadProgress: (progressEvent) => {
        // 上傳進度回調在外部處理
        if (formData.onUploadProgress) {
          formData.onUploadProgress(progressEvent)
        }
      }
    })
  },
  
  /**
   * 取得使用者任務列表
   * @param {Object} params - 查詢參數
   * @param {number} params.page - 頁數
   * @param {number} params.per_page - 每頁數量
   * @param {string} params.status - 任務狀態篩選
   */
  getJobs(params = {}) {
    const defaultParams = {
      page: 1,
      per_page: 20,
      status: 'all'
    }
    return request.get('/jobs', { params: { ...defaultParams, ...params } })
  },
  
  /**
   * 取得任務詳細資訊
   * @param {string} jobUuid - 任務 UUID
   */
  getJobDetail(jobUuid) {
    return request.get(`/jobs/${jobUuid}`)
  },
  
  /**
   * 重試失敗任務
   * @param {string} jobUuid - 任務 UUID
   */
  retryJob(jobUuid) {
    return request.post(`/jobs/${jobUuid}/retry`)
  },
  
  /**
   * 取消任務
   * @param {string} jobUuid - 任務 UUID
   */
  cancelJob(jobUuid) {
    return request.post(`/jobs/${jobUuid}/cancel`)
  },
  
  /**
   * 刪除任務
   * @param {string} jobUuid - 任務 UUID
   */
  deleteJob(jobUuid) {
    return request.delete(`/jobs/${jobUuid}`)
  }
}

/**
 * 檔案相關 API
 */
export const filesAPI = {
  /**
   * 下載翻譯檔案
   * @param {string} jobUuid - 任務 UUID
   * @param {string} languageCode - 語言代碼
   */
  downloadFile(jobUuid, languageCode) {
    return request.get(`/files/${jobUuid}/download/${languageCode}`, {
      responseType: 'blob'
    })
  },
  
  /**
   * 批量下載檔案
   * @param {string} jobUuid - 任務 UUID
   */
  downloadAllFiles(jobUuid) {
    return request.get(`/files/${jobUuid}/download/batch`, {
      responseType: 'blob'
    })
  },
  
  /**
   * 取得檔案資訊
   * @param {string} jobUuid - 任務 UUID
   */
  getFileInfo(jobUuid) {
    return request.get(`/files/${jobUuid}/info`)
  }
}