69 lines
1.5 KiB
TypeScript
69 lines
1.5 KiB
TypeScript
|
|
/**
|
|
* Health View Data Types
|
|
*
|
|
* Defines the UI model for health monitoring data.
|
|
* This layer isolates the UI from API churn by providing a stable interface
|
|
* between the API layer and the presentation layer.
|
|
*/
|
|
|
|
export interface HealthStatus {
|
|
status: 'ok' | 'degraded' | 'error' | 'unknown';
|
|
timestamp: string;
|
|
formattedTimestamp: string;
|
|
relativeTime: string;
|
|
statusLabel: string;
|
|
statusColor: string;
|
|
statusIcon: string;
|
|
}
|
|
|
|
export interface HealthMetrics {
|
|
uptime: string;
|
|
responseTime: string;
|
|
errorRate: string;
|
|
lastCheck: string;
|
|
formattedLastCheck: string;
|
|
checksPassed: number;
|
|
checksFailed: number;
|
|
totalChecks: number;
|
|
successRate: string;
|
|
}
|
|
|
|
export interface HealthComponent {
|
|
name: string;
|
|
status: 'ok' | 'degraded' | 'error' | 'unknown';
|
|
statusLabel: string;
|
|
statusColor: string;
|
|
statusIcon: string;
|
|
lastCheck: string;
|
|
formattedLastCheck: string;
|
|
responseTime: string;
|
|
errorRate: string;
|
|
}
|
|
|
|
export interface HealthAlert {
|
|
id: string;
|
|
type: 'critical' | 'warning' | 'info';
|
|
title: string;
|
|
message: string;
|
|
timestamp: string;
|
|
formattedTimestamp: string;
|
|
relativeTime: string;
|
|
severity: string;
|
|
severityColor: string;
|
|
}
|
|
|
|
import { ViewData } from "../contracts/view-data/ViewData";
|
|
|
|
export interface HealthViewData extends ViewData {
|
|
overallStatus: HealthStatus;
|
|
metrics: HealthMetrics;
|
|
components: HealthComponent[];
|
|
alerts: HealthAlert[];
|
|
hasAlerts: boolean;
|
|
hasDegradedComponents: boolean;
|
|
hasErrorComponents: boolean;
|
|
lastUpdated: string;
|
|
formattedLastUpdated: string;
|
|
}
|