feat: add data import/export bundle

This commit is contained in:
LLLLLLiulei
2026-02-05 17:46:08 +08:00
parent 6d0152c8e2
commit b4bd46d067
19 changed files with 1488 additions and 17 deletions

View File

@@ -13,7 +13,9 @@ import type {
WindowStats,
ClaudeModel,
AccountUsageStatsResponse,
TempUnschedulableStatus
TempUnschedulableStatus,
AdminDataPayload,
AdminDataImportResult
} from '@/types'
/**
@@ -347,6 +349,44 @@ export async function syncFromCrs(params: {
return data
}
export async function exportData(options?: {
ids?: number[]
filters?: {
platform?: string
type?: string
status?: string
search?: string
}
includeProxies?: boolean
}): Promise<AdminDataPayload> {
const params: Record<string, string> = {}
if (options?.ids && options.ids.length > 0) {
params.ids = options.ids.join(',')
} else if (options?.filters) {
const { platform, type, status, search } = options.filters
if (platform) params.platform = platform
if (type) params.type = type
if (status) params.status = status
if (search) params.search = search
}
if (options?.includeProxies === false) {
params.include_proxies = 'false'
}
const { data } = await apiClient.get<AdminDataPayload>('/admin/accounts/data', { params })
return data
}
export async function importData(payload: {
data: AdminDataPayload
skip_default_group_bind?: boolean
}): Promise<AdminDataImportResult> {
const { data } = await apiClient.post<AdminDataImportResult>('/admin/accounts/data', {
data: payload.data,
skip_default_group_bind: payload.skip_default_group_bind
})
return data
}
export const accountsAPI = {
list,
getById,
@@ -370,7 +410,9 @@ export const accountsAPI = {
batchCreate,
batchUpdateCredentials,
bulkUpdate,
syncFromCrs
syncFromCrs,
exportData,
importData
}
export default accountsAPI

View File

@@ -9,7 +9,8 @@ import type {
ProxyAccountSummary,
CreateProxyRequest,
UpdateProxyRequest,
PaginatedResponse
PaginatedResponse,
AdminDataPayload
} from '@/types'
/**
@@ -208,6 +209,17 @@ export async function batchDelete(ids: number[]): Promise<{
return data
}
export async function exportData(filters?: {
protocol?: string
status?: 'active' | 'inactive'
search?: string
}): Promise<AdminDataPayload> {
const { data } = await apiClient.get<AdminDataPayload>('/admin/proxies/data', {
params: filters
})
return data
}
export const proxiesAPI = {
list,
getAll,
@@ -221,7 +233,8 @@ export const proxiesAPI = {
getStats,
getProxyAccounts,
batchCreate,
batchDelete
batchDelete,
exportData
}
export default proxiesAPI