feat: 新增 ReportPreviewData 接口和 ready 状态类型

This commit is contained in:
gitadmin 2026-05-07 15:57:06 +08:00
parent 6a6d0f309d
commit 80d81836a1
1 changed files with 54 additions and 2 deletions

View File

@ -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
}