Files
xingrin/frontend/types/target.types.ts

117 lines
2.2 KiB
TypeScript
Raw Normal View History

2025-12-12 18:04:57 +08:00
/**
* Target
*/
/**
*
*/
export type TargetType = 'domain' | 'ip' | 'cidr'
/**
*
*/
export interface Target {
id: number
name: string
type: TargetType // 后端字段type
description?: string
createdAt: string // 后端字段created_at自动转换为 createdAt
lastScannedAt?: string // 后端字段last_scanned_at自动转换为 lastScannedAt
// 关联数据(通过 serializer 添加)
organizations?: Array<{
id: number
name: string
}>
}
/**
*
*/
export interface TargetDetail extends Target {
summary: {
subdomains: number
websites: number
endpoints: number
ips: number
vulnerabilities: {
total: number
critical: number
high: number
medium: number
low: number
}
}
}
/**
*
*/
export interface TargetsResponse {
results: Target[]
total: number // 后端返回 total不是 count
page: number // 当前页码
pageSize: number // 每页大小
totalPages: number // 总页数
// 兼容字段(为了向后兼容)
count?: number // 可选,等同于 total
next?: string | null
previous?: string | null
}
/**
*
*/
export interface CreateTargetRequest {
name: string
description?: string
}
/**
*
*/
export interface UpdateTargetRequest {
name?: string
description?: string
}
/**
*
*/
export interface BatchDeleteTargetsRequest {
ids: number[]
}
/**
*
*/
export interface BatchDeleteTargetsResponse {
deletedCount: number
failedIds?: number[]
}
/**
*
*/
export interface BatchCreateTargetsRequest {
targets: Array<{
name: string
description?: string
}>
organizationId?: number // 可选:关联到指定组织
}
/**
*
*/
export interface BatchCreateTargetsResponse {
createdCount: number
reusedCount: number
failedCount: number
failedTargets: Array<{
name: string
reason: string
}>
message: string
}