feat: expose multi-host runtime readiness
This commit is contained in:
@@ -125,6 +125,7 @@ export default function OpsPage({ settings, auth }: {settings: ApiSettings;auth:
|
||||
<MetricCard label="i18n:govoplan-ops.redis.5eaa1f2f" value={status?.summary.redis_url ? "configured" : "-"} tone={status?.summary.celery_enabled ? "info" : "neutral"} detail={status?.summary.redis_url ?? "-"} />
|
||||
<MetricCard label="i18n:govoplan-ops.warnings.1430f976" value={warningCount + errorCount} tone={errorCount ? "danger" : warningCount ? "warning" : "good"} detail="i18n:govoplan-ops.current_health_checks.7830bccf" />
|
||||
<MetricCard label="Runtime nodes" value={status?.summary.runtime_node_count ?? 0} tone={status?.runtime_cluster.available ? "good" : "danger"} detail={runtimeNodeMetricDetail(status)} />
|
||||
<MetricCard label="Database capacity" value={databaseCapacityValue(status)} tone={databaseCapacityTone(status)} detail="Peak pooled connections / available connections" />
|
||||
<MetricCard label="Recovery" value={status?.summary.recovery_required_count ?? 0} tone={status?.summary.recovery_required_count ? "danger" : "good"} detail="Operations requiring recovery attention" />
|
||||
<MetricCard label="Provider bindings" value={status?.governance.summary.configured_external_provider_count ?? 0} tone={status?.governance.summary.provider_attention_count ? "warning" : "good"} detail={`${status?.governance.summary.provider_attention_count ?? 0} requiring attention`} />
|
||||
</div>
|
||||
@@ -480,6 +481,24 @@ function runtimeNodeMetricDetail(status: OpsStatus | null): string {
|
||||
return `${active.api}/${expected.api} API · ${active.worker}/${expected.worker} workers`;
|
||||
}
|
||||
|
||||
function databaseCapacityValue(status: OpsStatus | null): string {
|
||||
const peak = status?.summary.database_connection_peak;
|
||||
const available = status?.summary.database_connection_available;
|
||||
return typeof peak === "number" && typeof available === "number"
|
||||
? `${peak} / ${available}`
|
||||
: "not declared";
|
||||
}
|
||||
|
||||
function databaseCapacityTone(status: OpsStatus | null): "good" | "warning" | "danger" {
|
||||
const peak = status?.summary.database_connection_peak;
|
||||
const available = status?.summary.database_connection_available;
|
||||
if (typeof peak !== "number" || typeof available !== "number") {
|
||||
return status?.runtime_cluster.state_profile === "shared" ? "danger" : "warning";
|
||||
}
|
||||
if (peak > available) return "danger";
|
||||
return peak / available >= 0.8 ? "warning" : "good";
|
||||
}
|
||||
|
||||
function workerMetricDetail(status: OpsStatus | null): string {
|
||||
if (!status?.summary.celery_enabled) return "i18n:govoplan-ops.celery_worker_setting.323d7737";
|
||||
const metrics = status.summary.worker_metrics;
|
||||
|
||||
Reference in New Issue
Block a user