This commit is contained in:
beabigegg
2025-10-03 08:19:40 +08:00
commit 6599716481
99 changed files with 28184 additions and 0 deletions

View File

@@ -0,0 +1,139 @@
import { request } from '@/utils/request'
/**
* 管理員相關 API
*/
export const adminAPI = {
/**
* 取得系統統計資訊
* @param {string} period - 統計週期 (day/week/month/year)
*/
getStats(period = 'month') {
return request.get('/admin/stats', { params: { period } })
},
/**
* 取得所有使用者任務
* @param {Object} params - 查詢參數
*/
getAllJobs(params = {}) {
const defaultParams = {
page: 1,
per_page: 50,
user_id: 'all',
status: 'all'
}
return request.get('/admin/jobs', { params: { ...defaultParams, ...params } })
},
/**
* 取得使用者列表
*/
getUsers() {
return request.get('/admin/users')
},
/**
* 取得使用者詳細資訊
* @param {number} userId - 使用者 ID
*/
getUserDetail(userId) {
return request.get(`/admin/users/${userId}`)
},
/**
* 更新使用者狀態
* @param {number} userId - 使用者 ID
* @param {Object} data - 更新資料
*/
updateUser(userId, data) {
return request.put(`/admin/users/${userId}`, data)
},
/**
* 取得 API 使用統計
* @param {Object} params - 查詢參數
*/
getApiUsageStats(params = {}) {
return request.get('/admin/api-usage', { params })
},
/**
* 取得系統日誌
* @param {Object} params - 查詢參數
*/
getSystemLogs(params = {}) {
const defaultParams = {
page: 1,
per_page: 100,
level: 'all'
}
return request.get('/admin/logs', { params: { ...defaultParams, ...params } })
},
/**
* 取得成本報表
* @param {Object} params - 查詢參數
*/
getCostReport(params = {}) {
return request.get('/admin/cost-report', { params })
},
/**
* 匯出報表
* @param {string} type - 報表類型
* @param {Object} params - 查詢參數
*/
exportReport(type, params = {}) {
return request.get(`/admin/export/${type}`, {
params,
responseType: 'blob'
})
},
/**
* 系統健康檢查
*/
getSystemHealth() {
return request.get('/admin/health')
},
/**
* 取得系統指標
*/
getSystemMetrics() {
return request.get('/admin/metrics')
},
/**
* 清理舊檔案
* @param {Object} options - 清理選項
*/
cleanupOldFiles(options = {}) {
const defaultOptions = {
cleanup_files: true,
cleanup_logs: false,
cleanup_cache: false,
files_days: 7,
logs_days: 30,
cache_days: 90
}
return request.post('/admin/maintenance/cleanup', { ...defaultOptions, ...options })
},
/**
* 管理員取消任務
* @param {string} jobUuid - 任務 UUID
*/
adminCancelJob(jobUuid) {
return request.post(`/admin/jobs/${jobUuid}/cancel`)
},
/**
* 管理員刪除任務
* @param {string} jobUuid - 任務 UUID
*/
adminDeleteJob(jobUuid) {
return request.delete(`/admin/jobs/${jobUuid}`)
}
}

View File

@@ -0,0 +1,44 @@
import { request } from '@/utils/request'
/**
* 認證相關 API
*/
export const authAPI = {
/**
* 使用者登入
* @param {Object} credentials - 登入憑證
* @param {string} credentials.username - AD 帳號
* @param {string} credentials.password - 密碼
*/
login(credentials) {
return request.post('/auth/login', credentials)
},
/**
* 使用者登出
*/
logout() {
return request.post('/auth/logout')
},
/**
* 取得當前使用者資訊
*/
getCurrentUser() {
return request.get('/auth/me')
},
/**
* 檢查認證狀態
*/
checkAuth() {
return request.get('/auth/check')
},
/**
* 刷新認證狀態
*/
refresh() {
return request.post('/auth/refresh')
}
}

View File

@@ -0,0 +1,113 @@
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`)
}
}

View File

@@ -0,0 +1,63 @@
import { request } from '@/utils/request'
/**
* 通知相關 API 服務
*/
export const notificationAPI = {
/**
* 獲取通知列表
* @param {Object} params - 查詢參數
* @param {number} params.page - 頁碼
* @param {number} params.per_page - 每頁數量
* @param {string} params.status - 狀態過濾 ('all', 'unread', 'read')
* @param {string} params.type - 類型過濾
*/
getNotifications(params = {}) {
return request.get('/notifications', { params })
},
/**
* 獲取單個通知詳情
* @param {string} notificationId - 通知ID
*/
getNotification(notificationId) {
return request.get(`/notifications/${notificationId}`)
},
/**
* 標記通知為已讀
* @param {string} notificationId - 通知ID
*/
markAsRead(notificationId) {
return request.post(`/notifications/${notificationId}/read`)
},
/**
* 標記所有通知為已讀
*/
markAllAsRead() {
return request.post('/notifications/read-all')
},
/**
* 刪除通知
* @param {string} notificationId - 通知ID
*/
deleteNotification(notificationId) {
return request.delete(`/notifications/${notificationId}`)
},
/**
* 清空所有已讀通知
*/
clearNotifications() {
return request.delete('/notifications/clear')
},
/**
* 創建測試通知(開發用)
*/
createTestNotification() {
return request.post('/notifications/test')
}
}