fix
This commit is contained in:
91
src/api/ops/discovery.ts
Normal file
91
src/api/ops/discovery.ts
Normal file
@@ -0,0 +1,91 @@
|
||||
import { request } from '@/api/request'
|
||||
|
||||
/** 与后端 discovery/summary 对齐 */
|
||||
export interface DiscoverySummary {
|
||||
device_total_current: number
|
||||
online_current: number
|
||||
offline_current: number
|
||||
other_status_current: number
|
||||
primary_scan_ids: number[]
|
||||
last_run?: DiscoveryScanRun | null
|
||||
}
|
||||
|
||||
export interface DiscoveryScanRun {
|
||||
id: number
|
||||
scan_id: number
|
||||
run_type: string
|
||||
status: string
|
||||
started_at: string
|
||||
finished_at?: string | null
|
||||
device_total: number
|
||||
online_count: number
|
||||
offline_count: number
|
||||
new_count: number
|
||||
error_message?: string
|
||||
trigger_by: string
|
||||
}
|
||||
|
||||
export interface DiscoveryDeviceRow {
|
||||
id: number
|
||||
ip_address: string
|
||||
scan_id?: number
|
||||
run_id?: number
|
||||
status: string
|
||||
mac_address?: string
|
||||
hostname?: string
|
||||
device_type?: string
|
||||
manufacturer?: string
|
||||
discovery_methods?: string
|
||||
last_seen_time?: string
|
||||
last_scan_time?: string
|
||||
first_seen_time?: string
|
||||
}
|
||||
|
||||
export interface DiscoveryDevicesResponse {
|
||||
scope: string
|
||||
scan_id?: number
|
||||
primary_scan_ids?: number[]
|
||||
total: number
|
||||
page: number
|
||||
page_size: number
|
||||
data: DiscoveryDeviceRow[]
|
||||
}
|
||||
|
||||
export interface DiscoveryScanRunsResponse {
|
||||
total: number
|
||||
page: number
|
||||
page_size: number
|
||||
data: DiscoveryScanRun[]
|
||||
}
|
||||
|
||||
export interface DiscoveryConfig {
|
||||
id: number
|
||||
primary_scan_ids: number[]
|
||||
primary_scan_ids_raw?: string
|
||||
}
|
||||
|
||||
export const fetchDiscoverySummary = () =>
|
||||
request.get<{ code: number; details?: DiscoverySummary }>('/DC-Control/v1/discovery/summary')
|
||||
|
||||
export const fetchDiscoveryDevices = (params?: {
|
||||
scope?: 'current' | 'raw'
|
||||
scan_id?: number
|
||||
page?: number
|
||||
size?: number
|
||||
status?: string
|
||||
keyword?: string
|
||||
}) =>
|
||||
request.get<{ code: number; details?: DiscoveryDevicesResponse }>('/DC-Control/v1/discovery/devices', {
|
||||
params,
|
||||
})
|
||||
|
||||
export const fetchDiscoveryScanRuns = (params?: { scan_id?: number; page?: number; size?: number }) =>
|
||||
request.get<{ code: number; details?: DiscoveryScanRunsResponse }>('/DC-Control/v1/discovery/scan-runs', {
|
||||
params,
|
||||
})
|
||||
|
||||
export const fetchDiscoveryConfig = () =>
|
||||
request.get<{ code: number; details?: DiscoveryConfig }>('/DC-Control/v1/discovery/config')
|
||||
|
||||
export const updateDiscoveryConfig = (data: { primary_scan_ids: number[] }) =>
|
||||
request.put<{ code: number; details?: DiscoveryConfig }>('/DC-Control/v1/discovery/config', data)
|
||||
58
src/api/ops/ipScan.ts
Normal file
58
src/api/ops/ipScan.ts
Normal file
@@ -0,0 +1,58 @@
|
||||
import { request } from '@/api/request'
|
||||
|
||||
/** IP 扫描任务(与 dc-control ControlIpScan 对齐) */
|
||||
export interface IpScanTask {
|
||||
id: number
|
||||
name: string
|
||||
type: string
|
||||
description?: string
|
||||
target_range: string
|
||||
port_range?: string
|
||||
config?: string
|
||||
timeout?: number
|
||||
concurrency?: number
|
||||
cron_expr?: string
|
||||
status?: string
|
||||
server_id: number
|
||||
last_scan_time?: string
|
||||
next_scan_time?: string
|
||||
last_scan_status?: string
|
||||
total_count?: number
|
||||
online_count?: number
|
||||
scan_count?: number
|
||||
enable?: boolean
|
||||
created_at?: string
|
||||
updated_at?: string
|
||||
}
|
||||
|
||||
export interface IpScanListResponse {
|
||||
total: number
|
||||
page: number
|
||||
page_size: number
|
||||
data: IpScanTask[]
|
||||
}
|
||||
|
||||
/** 扫描任务分页列表 */
|
||||
export const fetchIpScanList = (params?: { page?: number; size?: number; keyword?: string }) =>
|
||||
request.get<{ code: number; details?: IpScanListResponse; message?: string }>('/DC-Control/v1/ipscans', {
|
||||
params,
|
||||
})
|
||||
|
||||
export const fetchIpScanDetail = (id: number) =>
|
||||
request.get<{ code: number; details?: IpScanTask; message?: string }>(`/DC-Control/v1/ipscans/${id}`)
|
||||
|
||||
/** 触发一次扫描(会创建 scan_run 并调用 Agent) */
|
||||
export const triggerIpScan = (id: number) =>
|
||||
request.post<{ code: number; message?: string }>(`/DC-Control/v1/ipscans/${id}/trigger`)
|
||||
|
||||
/** 创建扫描任务 */
|
||||
export const createIpScan = (data: Partial<IpScanTask>) =>
|
||||
request.post<{ code: number; details?: IpScanTask; message?: string }>('/DC-Control/v1/ipscans', data)
|
||||
|
||||
/** 更新扫描任务 */
|
||||
export const updateIpScan = (id: number, data: Partial<IpScanTask>) =>
|
||||
request.put<{ code: number; message?: string }>(`/DC-Control/v1/ipscans/${id}`, data)
|
||||
|
||||
/** 删除扫描任务 */
|
||||
export const deleteIpScan = (id: number) =>
|
||||
request.delete<{ code: number; message?: string }>(`/DC-Control/v1/ipscans/${id}`)
|
||||
@@ -75,6 +75,10 @@ export interface TopologyNode {
|
||||
parentId?: string | null
|
||||
level?: number
|
||||
position?: { x: number; y: number }
|
||||
/** 设计 v2.0:绑定资产 / 子拓扑 */
|
||||
ref_type?: string
|
||||
ref_id?: number
|
||||
sub_topology_id?: number | null
|
||||
created_at?: string
|
||||
updated_at?: string
|
||||
}
|
||||
@@ -155,6 +159,13 @@ export const deleteNode = (topologyId: number, nodeId: string) =>
|
||||
export const updateNodesPositions = (topologyId: number, positions: Array<{ id: string; position: { x: number; y: number } }>) =>
|
||||
request.put(`/DC-Control/v1/topologies/${topologyId}/nodes/positions`, { positions })
|
||||
|
||||
/** 按资产 ID 批量导入节点(后端生成 node_id=asset-{id} 与 ref_type=asset) */
|
||||
export const batchImportAssetNodes = (topologyId: number, asset_ids: number[]) =>
|
||||
request.post<{ code: number; details?: { message: string; imported: number } }>(
|
||||
`/DC-Control/v1/topologies/${topologyId}/nodes/batch-import`,
|
||||
{ asset_ids },
|
||||
)
|
||||
|
||||
// ==================== 链路管理接口 ====================
|
||||
|
||||
/** 获取链路列表 */
|
||||
|
||||
Reference in New Issue
Block a user