import request, { IWorkspaceResponse, IListWorkspaceResponse } from '/@/api/http/request' import { DeviceValue, DOMAIN } from '/@/types/device' import { DeviceLogUploadStatusEnum } from '/@/types/device-log' import { getWorkspaceId } from '/@/utils/index'; const MNG_API_PREFIX = '/manage/api/v1' export interface GetDeviceUploadLogListParams { device_sn: string, page: number, page_size: number, begin_time?: number, // 开始时间 end_time?: number, // 结束时间 status?: DeviceLogUploadStatusEnum, // 日志上传状态 logs_information?: string // 搜索内容 } export interface BriefDeviceInfo { sn: string, device_model: DeviceValue, device_callsign: string } export interface DeviceLogProgressInfo { device_sn: string, device_model_domain: DOMAIN, progress: number, // 进度 result: number, // 上传结果 upload_rate: number, // 上传速率 status: DeviceLogUploadStatusEnum // 上传状态 } export interface DeviceLogItem { boot_index: number, // 日志id start_time: number, // 日志开始时间 end_time: number, // 日志结束时间 size: number // 日志大小 } export interface DeviceLogFileInfo { device_sn: string, module: DOMAIN, result: number, object_key: string, file_id: string, list: DeviceLogItem[] } export interface DeviceLogFileListInfo { files: DeviceLogFileInfo[] } export interface GetDeviceUploadLogListRsp { logs_id: string, // 记录id happen_time: string, // 发生时间 user_name: string, // 用户 logs_information: string, // 异常描述 create_time: string, // 上传时间 status: DeviceLogUploadStatusEnum, // 日志上传状态 device_topo: { // 设备topo hosts: BriefDeviceInfo[], parents: BriefDeviceInfo[] }, logs_progress: DeviceLogProgressInfo[], // 日志上传进度 device_logs: DeviceLogFileListInfo // 设备日志 } /** * 获取设备上传日志列表信息 * @param params * @returns */ export async function getDeviceUploadLogList(params: GetDeviceUploadLogListParams): Promise> { const resp = await request.get(`${MNG_API_PREFIX}/workspaces/${getWorkspaceId()}/devices/${params.device_sn}/logs-uploaded`, { params: params }) return resp.data } export interface GetDeviceLogListParams { device_sn: string, domain: DOMAIN[] } /** * 获取设备日志列表信息 * @param params * @returns */ export async function getDeviceLogList(params: GetDeviceLogListParams): Promise> { const domain = params.domain ? params.domain : [] const resp = await request.get(`${MNG_API_PREFIX}/workspaces/${getWorkspaceId()}/devices/${params.device_sn}/logs`, { params: { domain_list: domain.join(',') } }) return resp.data } export interface UploadDeviceLogBody { device_sn: string happen_time: string // 发生时间 logs_information: string // 异常描述 files: { list: DeviceLogItem[], device_sn: string, module: DOMAIN }[] } /** * 上传设备日志 * @param body * @returns */ export async function postDeviceUpgrade(body: UploadDeviceLogBody): Promise> { const resp = await request.post(`${MNG_API_PREFIX}/workspaces/${getWorkspaceId()}/devices/${body.device_sn}/logs`, body) return resp.data } export type DeviceLogUploadAction = 'cancel' export interface CancelDeviceLogUploadBody { device_sn: string status: DeviceLogUploadAction module_list: DOMAIN[] } // 取消上传 export async function cancelDeviceLogUpload(body: CancelDeviceLogUploadBody): Promise> { const url = `${MNG_API_PREFIX}/workspaces/${getWorkspaceId()}/devices/${body.device_sn}/logs` const result = await request.delete(url, { data: body }) return result.data } export interface DeleteDeviceLogUploadBody { device_sn: string logs_id: string } // 取消上传 export async function deleteDeviceLogUpload(body: DeleteDeviceLogUploadBody): Promise> { const url = `${MNG_API_PREFIX}/workspaces/${getWorkspaceId()}/devices/${body.device_sn}/logs/${body.logs_id}` const result = await request.delete(url, { data: body }) return result.data } export interface GetUploadDeviceLogUrlParams { logs_id: string, file_id: string, } // export interface GetUploadDeviceLogRsp{ // url: string // } /** * 获取设备上传日志url * @param params * @returns */ export async function getUploadDeviceLogUrl(params: GetUploadDeviceLogUrlParams): Promise> { const resp = await request.get(`${MNG_API_PREFIX}/workspaces/${getWorkspaceId()}/logs/${params.logs_id}/url/${params.file_id}`) return resp.data }