feat(awooop): expose ansible runtime readiness
This commit is contained in:
@@ -252,7 +252,9 @@
|
||||
"autoRepair": "Auto repair",
|
||||
"qualityDetail": "Average {score}, red {red}",
|
||||
"qualityPending": "Quality summary is still calculating; other evidence is already shown",
|
||||
"executionBackendDetail": "Execution evidence: operations {operations} (effective {effective} / audit {auditOnly}), auto-repair {autoRepair}; Ansible audit {ansibleRecords}, candidates {ansibleCandidates}, check-mode {checkMode}, apply {apply}, pending wiring {pending}",
|
||||
"executionBackendDetail": "Execution evidence: operations {operations} (effective {effective} / audit {auditOnly}), auto-repair {autoRepair}; Ansible audit {ansibleRecords}, candidates {ansibleCandidates}, check-mode {checkMode}, apply {apply}, pending wiring {pending}; runtime {runtime}",
|
||||
"ansibleRuntimeReady": "check-mode ready",
|
||||
"ansibleRuntimeBlocked": "not ready: {blockers}",
|
||||
"humanGap": "Human gap",
|
||||
"humanGapDetail": "{gate} missing {count}",
|
||||
"humanGapClear": "Quality summary has no top gap",
|
||||
|
||||
@@ -253,7 +253,9 @@
|
||||
"autoRepair": "自動修復",
|
||||
"qualityDetail": "平均 {score},紅燈 {red}",
|
||||
"qualityPending": "品質摘要計算中,其他證據已先顯示",
|
||||
"executionBackendDetail": "執行證據:操作 {operations}(有效 {effective} / 稽核 {auditOnly}),自動修復 {autoRepair};Ansible 稽核 {ansibleRecords},候選 {ansibleCandidates},check-mode {checkMode},apply {apply},待接線 {pending}",
|
||||
"executionBackendDetail": "執行證據:操作 {operations}(有效 {effective} / 稽核 {auditOnly}),自動修復 {autoRepair};Ansible 稽核 {ansibleRecords},候選 {ansibleCandidates},check-mode {checkMode},apply {apply},待接線 {pending};runtime {runtime}",
|
||||
"ansibleRuntimeReady": "可跑 check-mode",
|
||||
"ansibleRuntimeBlocked": "未就緒:{blockers}",
|
||||
"humanGap": "人工缺口",
|
||||
"humanGapDetail": "{gate} 缺 {count} 筆",
|
||||
"humanGapClear": "品質摘要未列出主要缺口",
|
||||
|
||||
@@ -51,6 +51,14 @@ interface AutomationQualitySummary {
|
||||
ansible_apply_total?: number
|
||||
ansible_pending_check_mode_total?: number
|
||||
}
|
||||
ansible_runtime?: {
|
||||
ansible_playbook_binary_present?: boolean
|
||||
playbook_root_present?: boolean
|
||||
inventory_present?: boolean
|
||||
playbook_count?: number
|
||||
can_run_check_mode?: boolean
|
||||
blockers?: string[]
|
||||
}
|
||||
}
|
||||
|
||||
interface DossierCoverageResponse {
|
||||
@@ -338,6 +346,7 @@ export function AutomationEvidenceCard() {
|
||||
|
||||
const topGate = quality?.gate_failures?.[0]
|
||||
const executionBackend = quality?.execution_backend_summary ?? null
|
||||
const ansibleRuntime = quality?.ansible_runtime ?? null
|
||||
const qualityLoaded = Boolean(quality)
|
||||
const claimReady = Boolean(quality?.production_claim?.can_claim_full_auto_repair)
|
||||
const route = snapshot?.route ?? null
|
||||
@@ -374,6 +383,7 @@ export function AutomationEvidenceCard() {
|
||||
routeDetail,
|
||||
routeTone: routeTone(route),
|
||||
executionBackend,
|
||||
ansibleRuntime,
|
||||
}
|
||||
}, [snapshot, t])
|
||||
|
||||
@@ -525,6 +535,12 @@ export function AutomationEvidenceCard() {
|
||||
checkMode: derived.executionBackend.ansible_check_mode_total ?? 0,
|
||||
apply: derived.executionBackend.ansible_apply_total ?? 0,
|
||||
pending: derived.executionBackend.ansible_pending_check_mode_total ?? 0,
|
||||
runtime: derived.ansibleRuntime?.can_run_check_mode
|
||||
? t('ansibleRuntimeReady')
|
||||
: t('ansibleRuntimeBlocked', {
|
||||
blockers: (derived.ansibleRuntime?.blockers ?? []).slice(0, 2).join(', ') || '--',
|
||||
}),
|
||||
}),
|
||||
})}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user