mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-01 17:00:21 +08:00
fix(admin): run destructive purges as cleanup tasks
This commit is contained in:
@@ -253,7 +253,7 @@ export interface CleanupRunListResponse {
|
||||
items: CleanupRunRecord[]
|
||||
}
|
||||
|
||||
export interface RequestBodyCleanupTaskResponse {
|
||||
export interface CleanupTaskResponse {
|
||||
message: string
|
||||
task: CleanupRunRecord
|
||||
}
|
||||
@@ -1073,16 +1073,25 @@ export const adminApi = {
|
||||
},
|
||||
|
||||
// 数据清空
|
||||
purgeConfig: () => purge<{ message: string; deleted: Record<string, number> }>('config'),
|
||||
purgeUsers: () => purge<{ message: string; deleted: Record<string, number> }>('users'),
|
||||
purgeUsage: () => purge<{ message: string; deleted: Record<string, number> }>('usage'),
|
||||
purgeAuditLogs: () => purge<{ message: string; deleted: Record<string, number> }>('audit-logs'),
|
||||
purgeRequestBodies: () => purge<{ message: string; cleaned: Record<string, number> }>('request-bodies'),
|
||||
async purgeRequestBodiesAsync(): Promise<RequestBodyCleanupTaskResponse> {
|
||||
const response = await apiClient.post<RequestBodyCleanupTaskResponse>('/api/admin/system/purge/request-bodies/task')
|
||||
purgeConfig: () => purge<CleanupTaskResponse>('config'),
|
||||
purgeUsers: () => purge<CleanupTaskResponse>('users'),
|
||||
async purgeUsage(): Promise<CleanupTaskResponse> {
|
||||
const response = await apiClient.post<CleanupTaskResponse>('/api/admin/system/purge/usage')
|
||||
return response.data
|
||||
},
|
||||
async purgeAuditLogs(): Promise<CleanupTaskResponse> {
|
||||
const response = await apiClient.post<CleanupTaskResponse>('/api/admin/system/purge/audit-logs')
|
||||
return response.data
|
||||
},
|
||||
purgeRequestBodies: () => purge<CleanupTaskResponse>('request-bodies'),
|
||||
async purgeRequestBodiesAsync(): Promise<CleanupTaskResponse> {
|
||||
const response = await apiClient.post<CleanupTaskResponse>('/api/admin/system/purge/request-bodies/task')
|
||||
return response.data
|
||||
},
|
||||
async purgeStats(): Promise<CleanupTaskResponse> {
|
||||
const response = await apiClient.post<CleanupTaskResponse>('/api/admin/system/purge/stats')
|
||||
return response.data
|
||||
},
|
||||
purgeStats: () => purge<{ message: string }>('stats'),
|
||||
async getCleanupRuns(): Promise<CleanupRunListResponse> {
|
||||
const response = await apiClient.get<CleanupRunListResponse>('/api/admin/system/cleanup/runs')
|
||||
return response.data
|
||||
|
||||
@@ -432,6 +432,11 @@ function cleanupKindLabel(kind: string): string {
|
||||
audit_cleanup: '审计日志',
|
||||
request_candidate_cleanup: '候选记录',
|
||||
request_bodies: '请求体',
|
||||
config_purge: '配置清空',
|
||||
users_purge: '用户清空',
|
||||
usage_purge: '使用记录清空',
|
||||
audit_logs_purge: '审计日志清空',
|
||||
stats_purge: '统计聚合清空',
|
||||
system_cleanup: '系统清理',
|
||||
}
|
||||
return labels[kind] || kind
|
||||
|
||||
@@ -62,37 +62,37 @@ const purgeItems: PurgeItem[] = [
|
||||
{
|
||||
key: 'config',
|
||||
title: '清空配置',
|
||||
description: '删除所有提供商、端点、API Key 和模型配置',
|
||||
description: '后台删除所有提供商、端点、API Key 和模型配置',
|
||||
buttonText: '清空配置',
|
||||
icon: markRaw(Settings),
|
||||
confirmMessage: '确定要清空所有提供商配置吗?这将删除所有提供商、端点、API Key 和模型配置,操作不可逆。',
|
||||
confirmMessage: '确定要后台清空所有提供商配置吗?这将删除所有提供商、端点、API Key 和模型配置,操作不可逆。',
|
||||
action: () => adminApi.purgeConfig(),
|
||||
},
|
||||
{
|
||||
key: 'users',
|
||||
title: '清空用户',
|
||||
description: '删除所有非管理员用户及其 API Keys',
|
||||
description: '后台删除所有非管理员用户及其 API Keys',
|
||||
buttonText: '清空用户',
|
||||
icon: markRaw(Users),
|
||||
confirmMessage: '确定要清空所有非管理员用户吗?管理员账户将被保留,操作不可逆。',
|
||||
confirmMessage: '确定要后台清空所有非管理员用户吗?管理员账户将被保留,操作不可逆。',
|
||||
action: () => adminApi.purgeUsers(),
|
||||
},
|
||||
{
|
||||
key: 'usage',
|
||||
title: '清空使用记录',
|
||||
description: '删除全部使用记录和请求候选记录',
|
||||
description: '后台清空全部使用记录和请求候选记录',
|
||||
buttonText: '清空记录',
|
||||
icon: markRaw(BarChart3),
|
||||
confirmMessage: '确定要清空全部使用记录吗?所有请求统计数据将被永久删除,操作不可逆。',
|
||||
confirmMessage: '确定要后台清空全部使用记录吗?所有请求统计数据将被永久删除,操作不可逆。',
|
||||
action: () => adminApi.purgeUsage(),
|
||||
},
|
||||
{
|
||||
key: 'audit-logs',
|
||||
title: '清空审计日志',
|
||||
description: '删除全部审计日志记录',
|
||||
description: '后台删除全部审计日志记录',
|
||||
buttonText: '清空日志',
|
||||
icon: markRaw(Shield),
|
||||
confirmMessage: '确定要清空全部审计日志吗?所有安全事件记录将被永久删除,操作不可逆。',
|
||||
confirmMessage: '确定要后台清空全部审计日志吗?所有安全事件记录将被永久删除,操作不可逆。',
|
||||
action: () => adminApi.purgeAuditLogs(),
|
||||
},
|
||||
{
|
||||
@@ -107,10 +107,10 @@ const purgeItems: PurgeItem[] = [
|
||||
{
|
||||
key: 'stats',
|
||||
title: '清空统计聚合',
|
||||
description: '删除统计聚合数据,保留原始使用记录;统计可从原始使用记录重新构建',
|
||||
description: '后台删除统计聚合数据并重建,保留原始使用记录',
|
||||
buttonText: '清空统计聚合',
|
||||
icon: markRaw(PieChart),
|
||||
confirmMessage: '确定要清空全部统计聚合数据吗?原始使用记录会保留,仪表盘和累计统计可从原始记录重新构建。',
|
||||
confirmMessage: '确定要后台清空全部统计聚合数据吗?原始使用记录会保留,仪表盘和累计统计会从原始记录重新构建。',
|
||||
action: () => adminApi.purgeStats(),
|
||||
},
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user