You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

299 lines
9.8 KiB
C#

using System;
using System.Collections.Generic;
using Haoliang.Models.Common;
namespace Haoliang.Models.Models.System
{
/// <summary>
/// Rule execution history
/// </summary>
public class RuleExecutionHistory
{
public int ExecutionId { get; set; }
public int RuleId { get; set; }
public string RuleName { get; set; }
public string InputDataJson { get; set; }
public string Result { get; set; }
public bool Success { get; set; }
public string ErrorMessage { get; set; }
public TimeSpan ExecutionTime { get; set; }
public DateTime ExecutionTimeUtc { get; set; }
public string ExecutedBy { get; set; }
public string Context { get; set; }
}
/// <summary>
/// Cache statistics
/// </summary>
public class CacheStats
{
public long TotalItems { get; set; }
public long HitCount { get; set; }
public long MissCount { get; set; }
public double HitRate => HitCount + MissCount > 0 ? (double)HitCount / (HitCount + MissCount) : 0;
public long MemoryUsageBytes { get; set; }
public DateTime LastCleared { get; set; }
public Dictionary<string, long> ItemsByType { get; set; }
public Dictionary<string, long> EvictionReasons { get; set; }
}
/// <summary>
/// WebSocket statistics
/// </summary>
public class WebSocketStats
{
public DateTime Timestamp { get; set; }
public int ConnectedClients { get; set; }
public int TotalConnections { get; set; }
public int DisconnectedClients { get; set; }
public int ActiveStreams { get; set; }
public long MessagesSent { get; set; }
public long MessagesReceived { get; set; }
public long BytesSent { get; set; }
public long BytesReceived { get; set; }
public Dictionary<string, int> ClientsByType { get; set; }
public Dictionary<string, int> MessagesByType { get; set; }
}
/// <summary>
/// System performance metrics
/// </summary>
public class PerformanceMetrics
{
public DateTime Timestamp { get; set; }
public double CpuUsagePercent { get; set; }
public double MemoryUsagePercent { get; set; }
public double DiskUsagePercent { get; set; }
public double NetworkUsageMbps { get; set; }
public int ActiveThreads { get; set; }
public int QueueLength { get; set; }
public double ResponseTimeMs { get; set; }
public double ThroughputPerSecond { get; set; }
public Dictionary<string, double> CustomMetrics { get; set; }
}
/// <summary>
/// Device performance metrics
/// </summary>
public class DevicePerformanceMetrics
{
public int DeviceId { get; set; }
public string DeviceName { get; set; }
public DateTime Timestamp { get; set; }
public double CpuUsagePercent { get; set; }
public double MemoryUsagePercent { get; set; }
public double TemperatureCelsius { get; set; }
public double VibrationLevel { get; set; }
public double PowerConsumptionKW { get; set; }
public double ToolWearPercent { get; set; }
public double SpindleRpm { get; set; }
public double FeedRateMmMin { get; set; }
public double PositionAccuracyMm { get; set; }
public Dictionary<string, double> CustomMetrics { get; set; }
}
/// <summary>
/// Production quality metrics
/// </summary>
public class QualityMetrics
{
public int DeviceId { get; set; }
public string DeviceName { get; set; }
public DateTime PeriodStart { get; set; }
public DateTime PeriodEnd { get; set; }
public int TotalProduced { get; set; }
public int TotalGood { get; set; }
public int TotalRejected { get; set; }
public decimal FirstPassYieldPercent { get; set; }
public decimal ReworkRatePercent { get; set; }
public decimal ScrapRatePercent { get; set; }
public decimal QualityIndex { get; set; }
public List<DefectAnalysis> Defects { get; set; }
public List<InspectionRecord> Inspections { get; set; }
}
/// <summary>
/// Defect analysis
/// </summary>
public class DefectAnalysis
{
public string DefectType { get; set; }
public int Count { get; set; }
public decimal Percentage { get; set; }
public decimal SeverityScore { get; set; }
public List<DateTime> OccurrenceTimes { get; set; }
public string RootCause { get; set; }
public string CorrectiveAction { get; set; }
public string Responsibility { get; set; }
}
/// <summary>
/// Inspection record
/// </summary>
public class InspectionRecord
{
public int InspectionId { get; set; }
public DateTime InspectionTime { get; set; }
public string Inspector { get; set; }
public string InspectionType { get; set; }
public bool Passed { get; set; }
public decimal Score { get; set; }
public List<Defect> FoundDefects { get; set; }
public string Notes { get; set; }
public string ImageUrl { get; set; }
}
/// <summary>
/// Defect detail
/// </summary>
public class Defect
{
public string DefectType { get; set; }
public string Location { get; set; }
public decimal Severity { get; set; }
public string Description { get; set; }
public bool Critical { get; set; }
}
/// <summary>
/// System health status
/// </summary>
public class SystemHealthStatus
{
public DateTime Timestamp { get; set; }
public SystemHealth OverallHealth { get; set; }
public Dictionary<string, ComponentHealth> ComponentHealth { get; set; }
public List<HealthAlert> ActiveAlerts { get; set; }
public SystemUptime Uptime { get; set; }
public Dictionary<string, string> HealthChecks { get; set; }
}
/// <summary>
/// Component health status
/// </summary>
public class ComponentHealth
{
public string ComponentName { get; set; }
public HealthStatus Status { get; set; }
public double PerformanceScore { get; set; }
public double AvailabilityScore { get; set; }
public double QualityScore { get; set; }
public DateTime LastCheck { get; set; }
public string Message { get; set; }
public Dictionary<string, object> Metrics { get; set; }
}
/// <summary>
/// Health alert
/// </summary>
public class HealthAlert
{
public string AlertId { get; set; }
public string Component { get; set; }
public AlertSeverity Severity { get; set; }
public string Message { get; set; }
public DateTime OccurredAt { get; set; }
public bool Resolved { get; set; }
public DateTime? ResolvedAt { get; set; }
public string Resolution { get; set; }
}
/// <summary>
/// System uptime information
/// </summary>
public class SystemUptime
{
public DateTime StartTime { get; set; }
public TimeSpan Uptime { get; set; }
public int RestartCount { get; set; }
public DateTime LastRestart { get; set; }
public string LastRestartReason { get; set; }
public Dictionary<string, TimeSpan> ComponentUptimes { get; set; }
}
/// <summary>
/// User preferences
/// </summary>
public class UserPreferences
{
public string UserId { get; set; }
public string Language { get; set; }
public string Theme { get; set; }
public string TimeZone { get; set; }
public bool EmailNotifications { get; set; }
public bool SMSNotifications { get; set; }
public bool PushNotifications { get; set; }
public List<string> DashboardLayout { get; set; }
public List<string> FavoriteReports { get; set; }
public Dictionary<string, object> CustomSettings { get; set; }
public DateTime LastUpdated { get; set; }
}
/// <summary>
/// Audit log entry
/// </summary>
public class AuditLog
{
public int AuditId { get; set; }
public DateTime Timestamp { get; set; }
public string UserId { get; set; }
public string UserName { get; set; }
public string Action { get; set; }
public string EntityType { get; set; }
public int? EntityId { get; set; }
public string Description { get; set; }
public string IPAddress { get; set; }
public string UserAgent { get; set; }
public bool Success { get; set; }
public string ErrorMessage { get; set; }
public Dictionary<string, object> OldValues { get; set; }
public Dictionary<string, object> NewValues { get; set; }
}
/// <summary>
/// System backup information
/// </summary>
public class BackupInfo
{
public string BackupId { get; set; }
public DateTime BackupTime { get; set; }
public string BackupType { get; set; }
public long SizeBytes { get; set; }
public string Status { get; set; }
public string Location { get; set; }
public bool IsEncrypted { get; set; }
public bool IsCompressed { get; set; }
public List<string> IncludedComponents { get; set; }
public string VerificationHash { get; set; }
public DateTime? NextScheduledBackup { get; set; }
}
#region Enums
public enum SystemHealth
{
Healthy,
Warning,
Critical,
Unknown
}
public enum HealthStatus
{
Healthy,
Degraded,
Warning,
Critical,
Unknown
}
public enum AlertSeverity
{
Low,
Medium,
High,
Critical
}
#endregion
}