69 lines
3.0 KiB
JavaScript
69 lines
3.0 KiB
JavaScript
|
|
/**
|
|||
|
|
* 23-回收站 API(4 端点)
|
|||
|
|
* 路径前缀:/trash
|
|||
|
|
*
|
|||
|
|
* 对齐后端 Router:backend/server/routers/external_systems/trash_router.py
|
|||
|
|
* 关键对齐点:
|
|||
|
|
* - 后端所有端点使用 get_admin_user(管理员鉴权,高危操作),前端全部用 apiAdmin*
|
|||
|
|
* - list 端点带 params,改用 buildQueryString 拼接,避免把 params 误传为 fetch options
|
|||
|
|
*
|
|||
|
|
* 后端 GET /trash 有两种查询模式(见 trash_service.list_trash):
|
|||
|
|
* - 摘要模式(不传 resource_type):返回 {items: [], total: 0, by_type: {11种类型计数}},
|
|||
|
|
* 用于展示各资源类型的待恢复数量
|
|||
|
|
* - 明细模式(传 resource_type):返回 {items: [...], total: N, by_type: {该类型: N}},
|
|||
|
|
* items 中每项为 TrashItemOutput(含 days_in_trash 字段)
|
|||
|
|
*
|
|||
|
|
* 后端支持的资源类型(11 种,对齐 _RESOURCE_REPO_MAP):
|
|||
|
|
* system / environment / tool / token / asset / webhook_subscription /
|
|||
|
|
* quota / notification_channel / secret_rotation_policy / access_rule / test_case
|
|||
|
|
*
|
|||
|
|
* 统一响应结构:{success: true, data: {...}}
|
|||
|
|
*/
|
|||
|
|
import { apiAdminGet, apiAdminPost, apiAdminDelete } from '../base'
|
|||
|
|
import { buildUrl, buildQueryString, MODULE_PATHS } from './base'
|
|||
|
|
|
|||
|
|
const URL = buildUrl(MODULE_PATHS.RECYCLE_BIN)
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 查询回收站列表
|
|||
|
|
*
|
|||
|
|
* @param {Object} params - 查询参数
|
|||
|
|
* @param {string} [params.resource_type] - 资源类型。不传时返回摘要,传时返回明细
|
|||
|
|
* @param {number} [params.limit=50] - 每页条数(1-200)
|
|||
|
|
* @param {number} [params.offset=0] - 偏移量
|
|||
|
|
* @param {string} [params.start_time] - 起始时间(ISO8601),按 deleted_at 过滤
|
|||
|
|
* @param {string} [params.end_time] - 结束时间(ISO8601),按 deleted_at 过滤
|
|||
|
|
* @returns {Promise<{success: boolean, data: {items: Array, total: number, limit: number, offset: number, by_type: Object}}>}
|
|||
|
|
*/
|
|||
|
|
export const getTrashListApi = (params = {}) =>
|
|||
|
|
apiAdminGet(`${URL}${buildQueryString(params)}`)
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 清理过期回收站(物理删除超过保留期的软删除资源)
|
|||
|
|
*
|
|||
|
|
* @param {Object} data - 请求体
|
|||
|
|
* @param {number} data.older_than_days - 保留期天数(≥1,默认 30)
|
|||
|
|
* @returns {Promise<{success: boolean, data: {purged_count: number, by_type: Object, cutoff_at: string}}>}
|
|||
|
|
*/
|
|||
|
|
export const purgeTrashApi = (data) => apiAdminPost(`${URL}/purge`, data)
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 恢复软删除资源
|
|||
|
|
*
|
|||
|
|
* @param {string} resourceType - 资源类型
|
|||
|
|
* @param {number} resourceId - 资源 ID
|
|||
|
|
* @returns {Promise<{success: boolean, data: {resource_type: string, resource_id: number, restored: boolean, restored_at: string}}>}
|
|||
|
|
*/
|
|||
|
|
export const restoreTrashApi = (resourceType, resourceId) =>
|
|||
|
|
apiAdminPost(`${URL}/${resourceType}/${resourceId}/restore`)
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 物理删除资源(不可恢复)
|
|||
|
|
*
|
|||
|
|
* @param {string} resourceType - 资源类型
|
|||
|
|
* @param {number} resourceId - 资源 ID
|
|||
|
|
* @returns {Promise<{success: boolean, data: {resource_type: string, resource_id: number, deleted: boolean}}>}
|
|||
|
|
*/
|
|||
|
|
export const hardDeleteTrashApi = (resourceType, resourceId) =>
|
|||
|
|
apiAdminDelete(`${URL}/${resourceType}/${resourceId}`)
|