Windows inventory: add osInfo fallback from sysinfo; portal detail spacing + subcategory

This commit is contained in:
Esdras Renan 2025-10-14 23:15:11 -03:00
parent 2a4bc486cf
commit 328415d9e9
2 changed files with 17 additions and 2 deletions

View file

@ -294,7 +294,21 @@ fn build_inventory_metadata(system: &System) -> serde_json::Value {
#[cfg(target_os = "windows")]
{
let extended = collect_windows_extended();
let mut extended = collect_windows_extended();
// Fallback: se osInfo vier vazio, preenche com dados do sysinfo
if let Some(win) = extended.get_mut("windows").and_then(|v| v.as_object_mut()) {
let needs_os_info = match win.get("osInfo") {
Some(v) => v.as_object().map(|m| m.is_empty()).unwrap_or(true),
None => true,
};
if needs_os_info {
let mut osmap = serde_json::Map::new();
if let Some(name) = System::name() { osmap.insert("ProductName".into(), json!(name)); }
if let Some(ver) = System::os_version() { osmap.insert("Version".into(), json!(ver)); }
if let Some(build) = System::kernel_version() { osmap.insert("BuildNumber".into(), json!(build)); }
win.insert("osInfo".into(), serde_json::Value::Object(osmap));
}
}
if let Some(obj) = inventory.as_object_mut() {
obj.insert("extended".into(), extended);
}