Files
xingrin/frontend/types/scan.types.ts
yyhuni 70cc9ad5c3 Add error_message field to scan history and display in progress dialog
- Add error_message field to ScanHistorySerializer fields list
- Update scheduled scan execution order: calculate next_run_time before triggering scan to prevent duplicate triggers
- Add error handling comment explaining retry behavior for failed scheduled scans
- Add errorMessage field to ScanProgressData and ScanRecord types in frontend
- Display error message in red alert box when scan fails in progress dialog
- Document generic
2025-12-12 19:21:51 +08:00

127 lines
3.1 KiB
TypeScript
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.
/**
* 扫描任务状态枚举
* 与后端 ScanStatus 保持一致
*/
export type ScanStatus = "cancelled" | "completed" | "failed" | "initiated" | "running"
/**
* 扫描阶段(动态,来自 engine_config 的 key
*/
export type ScanStage = string
/**
* 阶段进度状态
*/
export type StageStatus = "pending" | "running" | "completed" | "failed" | "cancelled"
/**
* 单个阶段的进度信息
*/
export interface StageProgressItem {
status: StageStatus
order: number // 执行顺序(从 0 开始)
startedAt?: string // ISO 时间字符串
duration?: number // 执行时长(秒)
detail?: string // 完成详情
error?: string // 错误信息
reason?: string // 跳过原因
}
/**
* 各阶段进度字典(动态 key
*/
export type StageProgress = Record<string, StageProgressItem>
export interface ScanRecord {
id: number
target?: number // 目标ID对应后端 target
targetName: string // 目标名称(对应后端 targetName
summary: {
subdomains: number
websites: number
directories: number
endpoints: number
ips: number
vulnerabilities: {
total: number
critical: number
high: number
medium: number
low: number
}
}
engine?: number // 引擎ID对应后端 engine
engineName: string // 引擎名称(对应后端 engineName
createdAt: string // 创建时间(对应后端 createdAt
status: ScanStatus
errorMessage?: string // 错误信息(对应后端 errorMessage失败时有值
progress: number // 0-100
currentStage?: ScanStage // 当前扫描阶段(仅 running 状态有值)
stageProgress?: StageProgress // 各阶段进度详情
}
export interface GetScansParams {
page?: number
pageSize?: number
status?: ScanStatus
search?: string
}
export interface GetScansResponse {
results: ScanRecord[] // 对应后端 results 字段
total: number
page: number
pageSize: number
totalPages: number
}
/**
* 发起扫描请求参数(用于已存在的目标/组织)
*/
export interface InitiateScanRequest {
organizationId?: number // 组织ID二选一
targetId?: number // 目标ID二选一
engineId: number // 扫描引擎ID必填
}
/**
* 快速扫描请求参数(自动创建目标并扫描)
*/
export interface QuickScanRequest {
targets: { name: string }[] // 目标列表
engineId: number // 扫描引擎ID必填
}
/**
* 快速扫描响应
*/
export interface QuickScanResponse {
message: string
targetStats: {
created: number
failed: number
}
scans: ScanTask[]
}
/**
* 单个扫描任务信息
*/
export interface ScanTask {
id: number
target: number // 目标ID
engine: number // 引擎ID
status: ScanStatus
createdAt: string
updatedAt: string
}
/**
* 发起扫描响应
*/
export interface InitiateScanResponse {
message: string // 成功消息
count: number // 创建的扫描任务数量
scans: ScanTask[] // 扫描任务列表
}