From 83d7d86cd3cb2118a2e6964a07c49edb808a276b Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 26 Jun 2026 20:48:53 +0800 Subject: [PATCH] fix(web): correct observability runtime gate count --- .../src/app/[locale]/observability/page.tsx | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/apps/web/src/app/[locale]/observability/page.tsx b/apps/web/src/app/[locale]/observability/page.tsx index 2655e3d3..8566ab00 100644 --- a/apps/web/src/app/[locale]/observability/page.tsx +++ b/apps/web/src/app/[locale]/observability/page.tsx @@ -98,6 +98,13 @@ function formatDateTime(value?: string) { }) } +function countRuntimeAllowedBoundaries(boundaries?: Record) { + return Object.entries(boundaries ?? {}).filter(([key, allowed]) => { + if (!allowed) return false + return !key.startsWith('read_only') + }).length +} + function MetricTile({ label, value, @@ -281,9 +288,14 @@ export default function ObservabilityPage({ params }: { params: { locale: string (state.serviceHealth?.rollups.target_ids_requiring_action.length ?? 0) + (state.deployment?.rollups.approval_required_target_ids.length ?? 0) const runtimeGateCount = - Object.values(state.observability?.operation_boundaries ?? {}).filter(Boolean).length + - Object.values(state.serviceHealth?.operation_boundaries ?? {}).filter(Boolean).length + - Object.values(state.deployment?.approval_boundaries ?? {}).filter(Boolean).length + countRuntimeAllowedBoundaries(state.observability?.operation_boundaries) + + countRuntimeAllowedBoundaries(state.serviceHealth?.operation_boundaries) + + Object.values(state.deployment?.approval_boundaries ?? {}).filter(Boolean).length + + (state.serviceHealth?.rollups.service_restart_allowed_count ?? 0) + + (state.serviceHealth?.rollups.endpoint_change_allowed_count ?? 0) + + (state.serviceHealth?.rollups.active_probe_allowed_count ?? 0) + + (state.serviceHealth?.rollups.notification_send_allowed_count ?? 0) + + (state.serviceHealth?.rollups.runtime_execution_allowed_count ?? 0) const domainRows = DOMAIN_ORDER.map(domainId => { const domain = state.deployment?.domains.find(item => item.domain_id === domainId)