feat(admin): Windows hardware cards (CPU/RAM/GPU/Disks) with Lucide icons; feat(desktop): inventory summary cards; feat(agent/windows): extended hardware collectors (CPU/board/BIOS/memory/video/disks); fix(agent): memory units in bytes

This commit is contained in:
Esdras Renan 2025-10-10 00:01:23 -03:00
parent fcd45ff034
commit c70691bce8
6 changed files with 6200 additions and 126 deletions

View file

@ -193,7 +193,8 @@ fn build_inventory_metadata(system: &System) -> serde_json::Value {
.first()
.map(|cpu| cpu.brand().to_string())
.unwrap_or_default();
let mem_total_bytes = system.total_memory().saturating_mul(1024);
// sysinfo 0.31 já retorna bytes em total_memory/used_memory
let mem_total_bytes = system.total_memory();
let network = collect_network_addrs();
let disks = collect_disks(system);
let mut inventory = json!({
@ -489,12 +490,26 @@ fn collect_windows_extended() -> serde_json::Value {
let defender = ps("Get-MpComputerStatus | Select-Object AMRunningMode,AntivirusEnabled,RealTimeProtectionEnabled,AntispywareEnabled").unwrap_or_else(|| json!({}));
let hotfix = ps("Get-HotFix | Select-Object HotFixID,InstalledOn").unwrap_or_else(|| json!([]));
// Hardware detalhado (CPU/Board/BIOS/Memória/Vídeo/Discos)
let cpu = ps("Get-CimInstance Win32_Processor | Select-Object Name,Manufacturer,SocketDesignation,NumberOfCores,NumberOfLogicalProcessors,L2CacheSize,L3CacheSize,MaxClockSpeed").unwrap_or_else(|| json!({}));
let baseboard = ps("Get-CimInstance Win32_BaseBoard | Select-Object Product,Manufacturer,SerialNumber,Version").unwrap_or_else(|| json!({}));
let bios = ps("Get-CimInstance Win32_BIOS | Select-Object Manufacturer,SMBIOSBIOSVersion,ReleaseDate,Version").unwrap_or_else(|| json!({}));
let memory = ps("Get-CimInstance Win32_PhysicalMemory | Select-Object BankLabel,Capacity,Manufacturer,PartNumber,SerialNumber,ConfiguredClockSpeed,Speed,ConfiguredVoltage").unwrap_or_else(|| json!([]));
let video = ps("Get-CimInstance Win32_VideoController | Select-Object Name,AdapterRAM,DriverVersion,PNPDeviceID").unwrap_or_else(|| json!([]));
let disks = ps("Get-CimInstance Win32_DiskDrive | Select-Object Model,SerialNumber,Size,InterfaceType,MediaType").unwrap_or_else(|| json!([]));
json!({
"windows": {
"software": software,
"services": services,
"defender": defender,
"hotfix": hotfix,
"cpu": cpu,
"baseboard": baseboard,
"bios": bios,
"memoryModules": memory,
"videoControllers": video,
"disks": disks,
}
})
}
@ -544,8 +559,9 @@ fn collect_metrics(system: &System) -> MachineMetrics {
let collected_at = Utc::now();
let total_memory = system.total_memory();
let used_memory = system.used_memory();
let memory_total_bytes = total_memory.saturating_mul(1024);
let memory_used_bytes = used_memory.saturating_mul(1024);
// sysinfo 0.31: valores já em bytes
let memory_total_bytes = total_memory;
let memory_used_bytes = used_memory;
let memory_used_percent = if total_memory > 0 {
(used_memory as f32 / total_memory as f32) * 100.0
} else {