Files
unionflow-mobile-apps/lib/features/settings/data/models/system_metrics_model.dart
dahoud d094d6db9c Initial commit: unionflow-mobile-apps
Application Flutter complète (sans build artifacts).

Signed-off-by: lions dev Team
2026-03-15 16:30:08 +00:00

158 lines
4.2 KiB
Dart

import 'package:json_annotation/json_annotation.dart';
part 'system_metrics_model.g.dart';
/// Modèle pour les métriques système en temps réel
@JsonSerializable(fieldRename: FieldRename.none)
class SystemMetricsModel {
// Métriques CPU
final double? cpuUsagePercent;
final int? availableProcessors;
final double? systemLoadAverage;
// Métriques mémoire
final int? totalMemoryBytes;
final int? usedMemoryBytes;
final int? freeMemoryBytes;
final int? maxMemoryBytes;
final double? memoryUsagePercent;
final String? totalMemoryFormatted;
final String? usedMemoryFormatted;
final String? freeMemoryFormatted;
// Métriques disque
final int? totalDiskBytes;
final int? usedDiskBytes;
final int? freeDiskBytes;
final double? diskUsagePercent;
final String? totalDiskFormatted;
final String? usedDiskFormatted;
final String? freeDiskFormatted;
// Métriques utilisateurs
final int? activeUsersCount;
final int? totalUsersCount;
final int? activeSessionsCount;
final int? failedLoginAttempts24h;
// Métriques API
final int? apiRequestsLastHour;
final int? apiRequestsToday;
final double? averageResponseTimeMs;
final int? totalRequestsCount;
// Métriques base de données
final int? dbConnectionPoolSize;
final int? dbActiveConnections;
final int? dbIdleConnections;
final bool? dbHealthy;
// Métriques erreurs et logs
final int? criticalErrorsCount;
final int? warningsCount;
final int? infoLogsCount;
final int? debugLogsCount;
final int? totalLogsCount;
// Métriques réseau
final double? networkBytesReceivedPerSec;
final double? networkBytesSentPerSec;
final String? networkInFormatted;
final String? networkOutFormatted;
// Métriques système
final String? systemStatus;
final int? uptimeMillis;
final String? uptimeFormatted;
final String? startTime;
final String? currentTime;
final String? javaVersion;
final String? quarkusVersion;
final String? applicationVersion;
// Métriques maintenance
final String? lastBackup;
final String? nextScheduledMaintenance;
final String? lastMaintenance;
// URLs
final String? apiBaseUrl;
final String? authServerUrl;
final String? cdnUrl;
// Cache
final int? totalCacheSizeBytes;
final String? totalCacheSizeFormatted;
final int? totalCacheEntries;
const SystemMetricsModel({
this.cpuUsagePercent,
this.availableProcessors,
this.systemLoadAverage,
this.totalMemoryBytes,
this.usedMemoryBytes,
this.freeMemoryBytes,
this.maxMemoryBytes,
this.memoryUsagePercent,
this.totalMemoryFormatted,
this.usedMemoryFormatted,
this.freeMemoryFormatted,
this.totalDiskBytes,
this.usedDiskBytes,
this.freeDiskBytes,
this.diskUsagePercent,
this.totalDiskFormatted,
this.usedDiskFormatted,
this.freeDiskFormatted,
this.activeUsersCount,
this.totalUsersCount,
this.activeSessionsCount,
this.failedLoginAttempts24h,
this.apiRequestsLastHour,
this.apiRequestsToday,
this.averageResponseTimeMs,
this.totalRequestsCount,
this.dbConnectionPoolSize,
this.dbActiveConnections,
this.dbIdleConnections,
this.dbHealthy,
this.criticalErrorsCount,
this.warningsCount,
this.infoLogsCount,
this.debugLogsCount,
this.totalLogsCount,
this.networkBytesReceivedPerSec,
this.networkBytesSentPerSec,
this.networkInFormatted,
this.networkOutFormatted,
this.systemStatus,
this.uptimeMillis,
this.uptimeFormatted,
this.startTime,
this.currentTime,
this.javaVersion,
this.quarkusVersion,
this.applicationVersion,
this.lastBackup,
this.nextScheduledMaintenance,
this.lastMaintenance,
this.apiBaseUrl,
this.authServerUrl,
this.cdnUrl,
this.totalCacheSizeBytes,
this.totalCacheSizeFormatted,
this.totalCacheEntries,
});
factory SystemMetricsModel.fromJson(Map<String, dynamic> json) =>
_$SystemMetricsModelFromJson(json);
Map<String, dynamic> toJson() => _$SystemMetricsModelToJson(this);
/// Helper pour formater un pourcentage
String formatPercent(double? percent) {
if (percent == null) return '0%';
return '${percent.toStringAsFixed(1)}%';
}
}