feat: 新增 ReportPreviewData 接口和 ready 状态类型
This commit is contained in:
parent
6a6d0f309d
commit
80d81836a1
|
|
@ -1,7 +1,7 @@
|
|||
// 报告基础类型
|
||||
export type ReportType = 'weekly' | 'monthly'
|
||||
export type ReportFormat = 'pdf' | 'docx'
|
||||
export type ReportStatus = 'pending' | 'generating' | 'completed' | 'failed'
|
||||
export type ReportStatus = 'pending' | 'ready' | 'generating' | 'completed' | 'failed'
|
||||
|
||||
export interface ReportCreateInput {
|
||||
report_type: ReportType
|
||||
|
|
@ -39,6 +39,7 @@ export interface ClassifiedTicket {
|
|||
close_time: string
|
||||
duration_minutes: number
|
||||
availability: number | null
|
||||
isOngoing?: boolean
|
||||
}
|
||||
|
||||
// 第一章:每日在线节点统计
|
||||
|
|
@ -54,7 +55,8 @@ export interface DailyOnlineStats {
|
|||
export interface Chapter2FaultItem {
|
||||
ip: string
|
||||
fault_subcategory: string
|
||||
recoveryDays: number // 0=当日, 1=次日, ≥2=N日后
|
||||
recoveryDays: number // 0=当日, 1=次日, ≥2=N日后(仅已结单有效,进行中时为 0)
|
||||
isOngoing?: boolean
|
||||
}
|
||||
|
||||
export interface Chapter2Entry {
|
||||
|
|
@ -72,6 +74,7 @@ export interface Chapter3FaultEntry {
|
|||
faultCause: string // "更换" + parts_replaced 或 "-"
|
||||
durationMinutes: number
|
||||
countedInSla: '是' | '否'
|
||||
isOngoing?: boolean
|
||||
}
|
||||
|
||||
// 第三章:其他工单表行(7列,表头不同)
|
||||
|
|
@ -83,6 +86,7 @@ export interface Chapter3OtherEntry {
|
|||
ticketConclusion: string // conclusion
|
||||
durationMinutes: number
|
||||
countedInSla: '是' | '否'
|
||||
isOngoing?: boolean
|
||||
}
|
||||
|
||||
// 第四章:每IP服务可用性
|
||||
|
|
@ -91,6 +95,7 @@ export interface Chapter4Entry {
|
|||
totalDurationMinutes: number
|
||||
monthDays: number
|
||||
availabilityPercent: number // e.g. 97.28
|
||||
hasOngoing?: boolean
|
||||
}
|
||||
|
||||
// 月报顶层聚合数据
|
||||
|
|
@ -125,6 +130,38 @@ export interface MonthlyReportPreview {
|
|||
avgAvailability: number | null
|
||||
}
|
||||
|
||||
// 预览页完整 metadata 结构(新格式)
|
||||
export interface ReportPreviewData {
|
||||
// 原有字段
|
||||
gpuCount: number
|
||||
storageCount: number
|
||||
totalTickets: number
|
||||
gpuFaultCount: number
|
||||
storageFaultCount: number
|
||||
otherTicketCount: number
|
||||
avgAvailability: number
|
||||
// 新增字段
|
||||
resolvedCount: number
|
||||
avgDurationMinutes: number
|
||||
ongoingCount: number
|
||||
faultTicketCount: number
|
||||
affectedDeviceCount: number
|
||||
faultFreeDays: number | null // 周报为 null
|
||||
availabilityDetails: AvailabilityDetail[] | null // 周报为 null
|
||||
reportLabel: string
|
||||
// 旧格式兼容
|
||||
summary?: { total_tickets: number; resolved_tickets: number; avg_duration: number; sla_rate: number }
|
||||
categories?: Array<{ fault_category: string; count: number }>
|
||||
}
|
||||
|
||||
export interface AvailabilityDetail {
|
||||
ip: string
|
||||
deviceType: 'gpu' | 'storage' | 'other'
|
||||
durationMinutes: number
|
||||
availabilityPercent: number
|
||||
isOngoing: boolean
|
||||
}
|
||||
|
||||
// ===== 周报类型 =====
|
||||
|
||||
export interface WeeklyDailyStats {
|
||||
|
|
@ -157,6 +194,7 @@ export interface WeeklyTicketEntry {
|
|||
currentStatus: string // 'resolved' | 'closed' | 'in_progress' | 'open'
|
||||
isResolved: boolean
|
||||
steps: TicketStepRaw[]
|
||||
availability: number | null
|
||||
}
|
||||
|
||||
export interface WeeklyReportData {
|
||||
|
|
@ -175,3 +213,17 @@ export interface WeeklyReportData {
|
|||
resolvedCount: number
|
||||
pendingCount: number
|
||||
}
|
||||
|
||||
// 自然周范围(用于月报嵌入周报)
|
||||
export interface WeekRange {
|
||||
index: number // 第几周 (1, 2, 3, ...)
|
||||
start: string // "2026-04-01"
|
||||
end: string // "2026-04-05"
|
||||
label: string // "第1周(04/01-04/05)"
|
||||
}
|
||||
|
||||
// 周报附件(嵌入用)
|
||||
export interface WeeklyAttachment {
|
||||
label: string
|
||||
buffer: Buffer
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue