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 */ downloadCombineFile(jobUuid) { return request.get(`/files/${jobUuid}/download/combine`, { responseType: 'blob' }) }, /** * 取得檔案資訊 * @param {string} jobUuid - 任務 UUID */ getFileInfo(jobUuid) { return request.get(`/files/${jobUuid}/info`) } }