export interface RecentOfflineDevice { deviceId: string; room?: string | null; lastSeen?: string | null; } export interface DeviceOverviewResponse { totalDevices: number; onlineDevices: number; offlineDevices: number; onlinePercentage?: number; devicesWithOutdatedVersion: number; recentOfflineDevices: RecentOfflineDevice[]; } export interface DeviceStatusByRoom { roomName: string; totalDevices: number; onlineDevices: number; offlineDevices: number; onlinePercentage?: number; } export interface DashboardGeneralInfo { totalDevices: number; totalRooms: number; onlineDevices: number; offlineDevices: number; } export interface RoomUsagePoint { date: string; onlineDevices: number; } export interface RoomUsageItem { roomName: string; weekly: RoomUsagePoint[]; monthly: RoomUsagePoint[]; weeklyTotalOnlineDevices: number; monthlyTotalOnlineDevices: number; } export interface RoomUsageResponse { weekFrom: string; weekTo: string; monthFrom: string; monthTo: string; rooms: RoomUsageItem[]; } export interface RoomHealthStatus { roomName: string; totalDevices: number; onlineDevices: number; offlineDevices: number; healthPercentage?: number; healthStatus?: string; } export interface RoomManagementResponse { totalRooms: number; rooms: RoomHealthStatus[]; roomsNeedAttention: RoomHealthStatus[]; } export interface AgentVersionStats { latestVersion: string; devicesWithLatestVersion: number; devicesWithOldVersion: number; updateCoverage?: number; } export interface TopFailedSoftware { fileName: string; failCount: number; } export interface RecentInstallActivity { deviceId: string; fileName: string; status: string; timestamp: string; message?: string | null; } export interface SoftwareDistributionResponse { totalInstallations: number; successfulInstallations: number; failedInstallations: number; pendingInstallations: number; successRate?: number; agentVersionStats: AgentVersionStats; topFailedSoftware: TopFailedSoftware[]; recentActivities: RecentInstallActivity[]; } export interface DashboardSummaryResponse { generalInfo: DashboardGeneralInfo; roomUsage: RoomUsageResponse; deviceOverview: DeviceOverviewResponse; roomManagement: RoomManagementResponse; softwareDistribution: SoftwareDistributionResponse; generatedAt: string; }