Refine ops health widget layout
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
tests / ui (push) Has been cancelled

This commit is contained in:
Codex Agent
2026-01-01 21:35:22 +01:00
parent 2fc8232d57
commit 8b4950c79d
9 changed files with 295 additions and 111 deletions

View File

@@ -54,6 +54,7 @@ class QueueHealthWidget extends Widget
'alertCount' => count($alerts),
'stalledAssets' => (int) ($snapshot['stalled_assets'] ?? 0),
'stalledMinutes' => $stalledMinutes,
'statusSummary' => $this->summarizeSeverities($queues),
];
}
@@ -72,6 +73,7 @@ class QueueHealthWidget extends Widget
'severity' => (string) ($queue['severity'] ?? 'unknown'),
'warning' => (int) ($limits['warning'] ?? 0),
'critical' => (int) ($limits['critical'] ?? 0),
'utilization_label' => $this->formatUtilizationLabel($size, $limits),
];
}
@@ -100,4 +102,62 @@ class QueueHealthWidget extends Widget
return null;
}
}
private function summarizeSeverities(array $queues): array
{
$counts = [
'ok' => 0,
'warning' => 0,
'critical' => 0,
'unknown' => 0,
];
foreach ($queues as $queue) {
$severity = $queue['severity'] ?? 'unknown';
if (! array_key_exists($severity, $counts)) {
$severity = 'unknown';
}
$counts[$severity]++;
}
return collect($counts)
->map(fn (int $count, string $severity) => [
'severity' => $severity,
'label' => __('admin.ops_health.severity.'.$severity),
'count' => $count,
])
->values()
->all();
}
private function formatUtilizationLabel(int $size, array $limits): string
{
if ($size < 0) {
return __('admin.ops_health.queue.utilization_na');
}
$critical = (int) ($limits['critical'] ?? 0);
$warning = (int) ($limits['warning'] ?? 0);
if ($critical > 0) {
$percent = (int) round(($size / $critical) * 100);
return __('admin.ops_health.queue.utilization_of', [
'percent' => $percent,
'label' => __('admin.ops_health.severity.critical'),
]);
}
if ($warning > 0) {
$percent = (int) round(($size / $warning) * 100);
return __('admin.ops_health.queue.utilization_of', [
'percent' => $percent,
'label' => __('admin.ops_health.severity.warning'),
]);
}
return __('admin.ops_health.queue.utilization_na');
}
}