ForcePilot/web/src/apis/external-systems/recycle_bin_api.js
Kris f2b21c27b6 feat(external-systems): 新增外部系统集成模块完整功能
新增23个API模块、路由、状态管理与通用组件,重构重复代码,完成外部系统集成全功能搭建
2026-06-20 22:21:34 +08:00

69 lines
3.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 23-回收站 API4 端点)
* 路径前缀:/trash
*
* 对齐后端 Routerbackend/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}`)