From 8959faac91a5912f3e6fcffc0738c48830293c9d Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Sat, 21 Mar 2026 00:46:59 +0800 Subject: [PATCH] Fix ops dashboard rollout status rendering --- frontend/components/ops/OpsDashboard.tsx | 40 ++++++++++++++---------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/frontend/components/ops/OpsDashboard.tsx b/frontend/components/ops/OpsDashboard.tsx index fdc3ccc9..0e861fbc 100644 --- a/frontend/components/ops/OpsDashboard.tsx +++ b/frontend/components/ops/OpsDashboard.tsx @@ -19,12 +19,16 @@ type ProbabilityRollout = { type SystemStatusPayload = { state_storage_mode?: string; - sqlite?: { ok?: boolean; path?: string }; + db?: { ok?: boolean; db_path?: string }; features?: Record; metrics?: Record; probability?: { - mode?: string; - rollout?: ProbabilityRollout; + engine_mode?: string; + rollout?: { + decision?: ProbabilityRollout; + evaluation_report_exists?: boolean; + shadow_report_exists?: boolean; + }; }; integrations?: Record; }; @@ -184,12 +188,14 @@ export function OpsDashboard() { void loadLeaderboard(); }, [loadLeaderboard, loadUsers]); + const rolloutDecision = status?.probability?.rollout?.decision; + const rolloutVariant = useMemo(() => { - const decision = status?.probability?.rollout?.decision; + const decision = rolloutDecision?.decision; if (decision === "promote") return "success" as const; if (decision === "observe") return "warning" as const; return "danger" as const; - }, [status?.probability?.rollout?.decision]); + }, [rolloutDecision?.decision]); const submitGrant = useCallback(async () => { setGrantLoading(true); @@ -238,11 +244,11 @@ export function OpsDashboard() { Health {health?.status || "unknown"} - - SQLite {status?.sqlite?.ok ? "ok" : "error"} + + SQLite {status?.db?.ok ? "ok" : "error"} - EMOS {status?.probability?.rollout?.decision || "hold"} + EMOS {rolloutDecision?.decision || "hold"}
@@ -294,10 +300,10 @@ export function OpsDashboard() { SQLite 是否正常,以及 rollout 当前状态。 -
SQLite{status?.sqlite?.ok ? "ok" : "error"}
-
EMOS 模式{status?.probability?.mode || "-"}
-
上线门禁{status?.probability?.rollout?.decision || "-"}
-
ready_for_primary{status?.probability?.rollout?.ready_for_primary ? "true" : "false"}
+
SQLite{status?.db?.ok ? "ok" : "error"}
+
EMOS 模式{status?.probability?.engine_mode || "-"}
+
上线门禁{rolloutDecision?.decision || "-"}
+
ready_for_primary{rolloutDecision?.ready_for_primary ? "true" : "false"}
@@ -340,16 +346,16 @@ export function OpsDashboard() {
- {status?.probability?.rollout?.decision || "hold"} - - ready={status?.probability?.rollout?.ready_for_primary ? "true" : "false"} + {rolloutDecision?.decision || "hold"} + + ready={rolloutDecision?.ready_for_primary ? "true" : "false"}
阻塞原因
    - {(status?.probability?.rollout?.blocking_reasons || []).length ? ( - (status?.probability?.rollout?.blocking_reasons || []).map((reason) => ( + {(rolloutDecision?.blocking_reasons || []).length ? ( + (rolloutDecision?.blocking_reasons || []).map((reason) => (
  • {reason}