fix agent boot_time

fix UI scrollbar, and removed setting reset button
This commit is contained in:
Oliver Kieselbach
2026-02-17 18:23:03 +01:00
parent 4700b3a101
commit 24c024a788
4 changed files with 27 additions and 44 deletions
@@ -400,9 +400,10 @@ namespace AutopilotMonitor.Agent.Core.Monitoring.Collectors
switch (eventId)
{
case EventId_ProvisioningWillLaunch: // 358
eventType = "hello_provisioning_started";
eventType = "hello_provisioning_willlaunch";
severity = EventSeverity.Info;
message = "Windows Hello for Business provisioning started - prerequisites passed";
message = "Windows Hello for Business provisioning will launch - prerequisites passed (snapshot only, not a final state)";
_logger.Info("Windows Hello provisioning will launch - prerequisites passed (snapshot only, not a final state)");
break;
case EventId_NgcKeyRegistered: // 300
@@ -422,9 +423,9 @@ namespace AutopilotMonitor.Agent.Core.Monitoring.Collectors
break;
case EventId_ProvisioningWillNotLaunch: // 360
eventType = "hello_provisioning_skipped";
eventType = "hello_provisioning_willnotlaunch";
severity = EventSeverity.Warning;
message = "Windows Hello for Business provisioning prerequisites not met (snapshot only, not terminal)";
message = "Windows Hello for Business provisioning prerequisites not met (snapshot only, not a final state";
// DO NOT mark Hello as completed - event 360 is just a snapshot and can change
_logger.Info("Windows Hello provisioning prerequisites not met (snapshot, not terminal)");
break;
@@ -205,16 +205,21 @@ namespace AutopilotMonitor.Agent.Core.Monitoring.Tracking
if (!string.IsNullOrEmpty(lastBootUpTimeStr))
{
// WMI time format: yyyyMMddHHmmss.ffffff+/-UUU
var bootTime = ManagementDateTimeConverter.ToDateTime(lastBootUpTimeStr);
data["bootTime"] = bootTime.ToString("o"); // ISO 8601 format
data["bootTimeUtc"] = bootTime.ToUniversalTime().ToString("o");
// ManagementDateTimeConverter.ToDateTime returns DateTimeKind.Local,
// so we must explicitly convert to UTC and tag it as UTC to ensure
// correct ISO 8601 serialization with Z suffix.
var bootTimeLocal = ManagementDateTimeConverter.ToDateTime(lastBootUpTimeStr);
var bootTimeUtc = DateTime.SpecifyKind(bootTimeLocal.ToUniversalTime(), DateTimeKind.Utc);
// Calculate uptime
var uptime = DateTime.Now - bootTime;
data["bootTimeUtc"] = bootTimeUtc.ToString("o"); // always ends with Z
data["bootTime"] = bootTimeUtc.ToString("o"); // keep for compat, also UTC
// Calculate uptime using UTC to avoid local-clock drift
var uptime = DateTime.UtcNow - bootTimeUtc;
data["uptimeMinutes"] = (int)uptime.TotalMinutes;
data["uptimeHours"] = uptime.TotalHours;
_logger.Debug($"Boot time: {bootTime:o}, Uptime: {uptime.TotalMinutes:F1} minutes");
_logger.Debug($"Boot time (UTC): {bootTimeUtc:o}, Uptime: {uptime.TotalMinutes:F1} minutes");
break;
}
}
+11 -2
View File
@@ -292,6 +292,7 @@ body {
::-webkit-scrollbar {
width: 6px;
height: 6px;
transition: width 0.2s ease;
}
::-webkit-scrollbar-track {
background: transparent;
@@ -301,12 +302,16 @@ body {
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: #cbd5e1;
background: #94a3b8;
}
html:hover ::-webkit-scrollbar-thumb,
body:hover ::-webkit-scrollbar-thumb {
background: #cbd5e1;
}
::-webkit-scrollbar:hover {
width: 10px;
height: 10px;
}
/* -- Scrollbar (dark mode) -- */
.dark ::-webkit-scrollbar {
@@ -321,9 +326,13 @@ body:hover ::-webkit-scrollbar-thumb {
border-radius: 4px;
}
.dark ::-webkit-scrollbar-thumb:hover {
background: #64748b;
background: #94a3b8;
}
.dark html:hover ::-webkit-scrollbar-thumb,
.dark body:hover ::-webkit-scrollbar-thumb {
background: #475569;
}
.dark ::-webkit-scrollbar:hover {
width: 10px;
height: 10px;
}
@@ -377,31 +377,6 @@ export default function SettingsPage() {
}
};
const handleReset = () => {
if (!config) return;
setManufacturerWhitelist(config.manufacturerWhitelist);
setModelWhitelist(config.modelWhitelist);
setValidateSerialNumber(config.validateSerialNumber);
setDataRetentionDays(config.dataRetentionDays ?? 90);
setSessionTimeoutHours(config.sessionTimeoutHours ?? 5);
setEnablePerformanceCollector(config.enablePerformanceCollector ?? false);
setPerformanceCollectorInterval(config.performanceCollectorIntervalSeconds ?? 60);
setSelfDestructOnComplete(config.selfDestructOnComplete ?? false);
setKeepLogFile(config.keepLogFile ?? true);
setRebootOnComplete(config.rebootOnComplete ?? false);
setRebootDelaySeconds(config.rebootDelaySeconds ?? 10);
setEnableGeoLocation(config.enableGeoLocation ?? true);
setEnableImeMatchLog(config.enableImeMatchLog ?? false);
setLogLevel(config.logLevel ?? "Info");
setTeamsWebhookUrl(config.teamsWebhookUrl ?? "");
setTeamsNotifyOnSuccess(config.teamsNotifyOnSuccess ?? true);
setTeamsNotifyOnFailure(config.teamsNotifyOnFailure ?? true);
setDiagnosticsBlobSasUrl(config.diagnosticsBlobSasUrl ?? "");
setDiagnosticsUploadMode(config.diagnosticsUploadMode ?? "Off");
setSuccessMessage(null);
setError(null);
};
const handleAddAdmin = async () => {
if (!tenantId || !newAdminEmail.trim()) return;
@@ -597,13 +572,6 @@ export default function SettingsPage() {
</div>
{!loading && (
<div className="flex items-center space-x-3">
<button
onClick={handleReset}
disabled={saving}
className="px-4 py-2 border border-gray-300 rounded-md text-sm text-gray-700 bg-white hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed transition-colors"
>
Reset
</button>
<button
onClick={handleSave}
disabled={saving}