fix(iwooos): scope aggregate same-run status
All checks were successful
CD Pipeline / workflow-shape (push) Successful in 1s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 2m22s
CD Pipeline / build-and-deploy (push) Successful in 14m50s
CD Pipeline / post-deploy-checks (push) Successful in 2m5s
All checks were successful
CD Pipeline / workflow-shape (push) Successful in 1s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 2m22s
CD Pipeline / build-and-deploy (push) Successful in 14m50s
CD Pipeline / post-deploy-checks (push) Successful in 2m5s
This commit is contained in:
@@ -37,6 +37,10 @@ type Copy = {
|
||||
nist: string;
|
||||
siem: string;
|
||||
strictRun: string;
|
||||
aggregateVerified: string;
|
||||
aggregateOpen: string;
|
||||
aggregateScopeNote: string;
|
||||
aggregateCountsTitle: string;
|
||||
verified: string;
|
||||
functions: string;
|
||||
framework: string;
|
||||
@@ -88,7 +92,11 @@ const COPY: Record<"zh" | "en", Copy> = {
|
||||
assetTypes: "資產類型",
|
||||
nist: "NIST 控制",
|
||||
siem: "SIEM 閉環",
|
||||
strictRun: "同 run 閉環",
|
||||
strictRun: "全域 AI run",
|
||||
aggregateVerified: "全域已驗證",
|
||||
aggregateOpen: "全域未閉環",
|
||||
aggregateScopeNote: "不代表目前 Wazuh lane",
|
||||
aggregateCountsTitle: "全域 AI run 階段收據",
|
||||
verified: "24h 已驗證",
|
||||
functions: "治理六功能",
|
||||
framework: "完整資安框架",
|
||||
@@ -121,8 +129,8 @@ const COPY: Record<"zh" | "en", Copy> = {
|
||||
failed: "失敗",
|
||||
failedCollectors: "失敗 Collector",
|
||||
failedCollectorsUnavailable: "失敗原因待安全分類",
|
||||
sameRunMissing: "尚無同 run 閉環證據",
|
||||
sameRunVerified: "18 段同 run 閉環已驗證",
|
||||
sameRunMissing: "全域 AI run 尚未閉環;不代表目前 Wazuh lane",
|
||||
sameRunVerified: "全域 AI run 已驗證;不代表目前 Wazuh lane",
|
||||
loading: "正在載入資安控制平面",
|
||||
unavailable: "Live readback 無法取得",
|
||||
refresh: "重新整理資安控制平面",
|
||||
@@ -138,7 +146,11 @@ const COPY: Record<"zh" | "en", Copy> = {
|
||||
assetTypes: "Asset types",
|
||||
nist: "NIST control",
|
||||
siem: "SIEM closure",
|
||||
strictRun: "Same-run closure",
|
||||
strictRun: "Aggregate AI run",
|
||||
aggregateVerified: "Aggregate verified",
|
||||
aggregateOpen: "Aggregate open",
|
||||
aggregateScopeNote: "Does not represent the current Wazuh lane",
|
||||
aggregateCountsTitle: "Aggregate AI run stage receipts",
|
||||
verified: "Verified 24h",
|
||||
functions: "Six functions",
|
||||
framework: "Security framework",
|
||||
@@ -171,8 +183,8 @@ const COPY: Record<"zh" | "en", Copy> = {
|
||||
failed: "Failed",
|
||||
failedCollectors: "Failed collectors",
|
||||
failedCollectorsUnavailable: "Failure detail awaiting safe classification",
|
||||
sameRunMissing: "No same-run closure evidence",
|
||||
sameRunVerified: "18-stage same-run closure verified",
|
||||
sameRunMissing: "Aggregate AI run is open; this is not the current Wazuh lane",
|
||||
sameRunVerified: "Aggregate AI run is verified; this is not the current Wazuh lane",
|
||||
loading: "Loading security control plane",
|
||||
unavailable: "Live readback unavailable",
|
||||
refresh: "Refresh security control plane",
|
||||
@@ -230,20 +242,42 @@ function MetricCell({
|
||||
label,
|
||||
value,
|
||||
icon: Icon,
|
||||
detail,
|
||||
testId,
|
||||
title,
|
||||
}: {
|
||||
label: string;
|
||||
value: string | number;
|
||||
icon: typeof ShieldCheck;
|
||||
detail?: string;
|
||||
testId?: string;
|
||||
title?: string;
|
||||
}) {
|
||||
return (
|
||||
<div className="min-w-0 bg-white px-3 py-3">
|
||||
<div
|
||||
className="min-w-0 bg-white px-3 py-3"
|
||||
data-testid={testId}
|
||||
title={title}
|
||||
aria-label={title}
|
||||
>
|
||||
<div className="flex items-center gap-2 text-[11px] font-medium text-[#6f6d66]">
|
||||
<Icon className="h-3.5 w-3.5 shrink-0" aria-hidden="true" />
|
||||
<span className="truncate">{label}</span>
|
||||
</div>
|
||||
<div className="mt-2 font-mono text-xl font-semibold tracking-normal text-[#141413]">
|
||||
<div
|
||||
className="mt-2 font-mono text-xl font-semibold tracking-normal text-[#141413]"
|
||||
data-testid={testId ? `${testId}-primary` : undefined}
|
||||
>
|
||||
{value}
|
||||
</div>
|
||||
{detail ? (
|
||||
<div
|
||||
className="mt-1 text-[9px] font-medium leading-4 text-[#9f2f25]"
|
||||
data-testid={testId ? `${testId}-scope-note` : undefined}
|
||||
>
|
||||
{detail}
|
||||
</div>
|
||||
) : null}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -563,10 +597,19 @@ export function SecurityAssetControlPlaneCockpit({
|
||||
label={copy.strictRun}
|
||||
value={
|
||||
payload
|
||||
? `${payload.ai_automation.strict_runtime_completion.present_stage_count}/${payload.ai_automation.strict_runtime_completion.required_stage_count}`
|
||||
? payload.ai_automation.strict_runtime_completion.closed
|
||||
? copy.aggregateVerified
|
||||
: copy.aggregateOpen
|
||||
: "--"
|
||||
}
|
||||
icon={Bot}
|
||||
detail={payload ? copy.aggregateScopeNote : undefined}
|
||||
testId="security-aggregate-ai-run-status"
|
||||
title={
|
||||
payload
|
||||
? `${copy.strictRun}: ${payload.ai_automation.strict_runtime_completion.closed ? copy.aggregateVerified : copy.aggregateOpen}. ${copy.aggregateCountsTitle}: ${payload.ai_automation.strict_runtime_completion.present_stage_count}/${payload.ai_automation.strict_runtime_completion.required_stage_count}. ${copy.aggregateScopeNote}`
|
||||
: undefined
|
||||
}
|
||||
/>
|
||||
<MetricCell
|
||||
label={copy.verified}
|
||||
|
||||
Reference in New Issue
Block a user