diff --git a/apps/web/messages/en.json b/apps/web/messages/en.json index 8647fed9..9992eaaa 100644 --- a/apps/web/messages/en.json +++ b/apps/web/messages/en.json @@ -10507,6 +10507,14 @@ "title": "資產沉澱", "summary": "完成 {ready} / 卡點 {blocked}", "boundary": "只讀推導;不代表已寫入 KM、更新 PlayBook trust、套用腳本 / 排程或執行 verifier。", + "detailsTitle": "焦點資產 ID", + "details": { + "workItem": "Work Item", + "dryRun": "乾跑", + "apply": "套用候選", + "verifier": "Verifier", + "nextStep": "下一步" + }, "items": { "km": "KM", "playbook": "PlayBook", diff --git a/apps/web/messages/zh-TW.json b/apps/web/messages/zh-TW.json index 8647fed9..9992eaaa 100644 --- a/apps/web/messages/zh-TW.json +++ b/apps/web/messages/zh-TW.json @@ -10507,6 +10507,14 @@ "title": "資產沉澱", "summary": "完成 {ready} / 卡點 {blocked}", "boundary": "只讀推導;不代表已寫入 KM、更新 PlayBook trust、套用腳本 / 排程或執行 verifier。", + "detailsTitle": "焦點資產 ID", + "details": { + "workItem": "Work Item", + "dryRun": "乾跑", + "apply": "套用候選", + "verifier": "Verifier", + "nextStep": "下一步" + }, "items": { "km": "KM", "playbook": "PlayBook", diff --git a/apps/web/src/app/[locale]/awooop/runs/page.tsx b/apps/web/src/app/[locale]/awooop/runs/page.tsx index 05c0280b..cf9379a4 100644 --- a/apps/web/src/app/[locale]/awooop/runs/page.tsx +++ b/apps/web/src/app/[locale]/awooop/runs/page.tsx @@ -4743,6 +4743,7 @@ export default function RunsPage() { diff --git a/apps/web/src/components/awooop/automation-asset-ledger.tsx b/apps/web/src/components/awooop/automation-asset-ledger.tsx index de2e2ab7..1071d8b6 100644 --- a/apps/web/src/components/awooop/automation-asset-ledger.tsx +++ b/apps/web/src/components/awooop/automation-asset-ledger.tsx @@ -29,13 +29,17 @@ function valueLabel(value: number, fallback: string) { export function AwoooPAutomationAssetLedger({ chain, remediationSummary, + showDetails = false, className, }: { chain?: AwoooPStatusChain | null; remediationSummary?: AutomationAssetRemediationSummary | null; + showDetails?: boolean; className?: string; }) { const t = useTranslations("awooop.automationAssetLedger"); + const handoff = chain?.automation_handoff; + const handoffAssets = handoff?.asset_ids; const kmCount = chain?.evidence?.knowledge_entries ?? 0; const playbookCount = (chain?.execution?.playbook_ids?.length ?? 0) + (chain?.execution?.playbook_paths?.length ?? 0); @@ -107,6 +111,13 @@ export function AwoooPAutomationAssetLedger({ ] satisfies Array<{ key: string; tone: AutomationAssetTone; value: string }>; const readyCount = items.filter((item) => item.tone === "ready").length; const blockedCount = items.filter((item) => item.tone === "blocked").length; + const detailItems = [ + { key: "workItem", value: handoff?.work_item_id }, + { key: "dryRun", value: handoffAssets?.dry_run }, + { key: "apply", value: handoffAssets?.apply_candidate }, + { key: "verifier", value: handoffAssets?.verifier }, + { key: "nextStep", value: handoff?.next_action ?? chain?.next_step }, + ].filter((item) => Boolean(item.value)); return (
@@ -134,6 +145,23 @@ export function AwoooPAutomationAssetLedger({

{t("boundary")}

+ {showDetails && detailItems.length > 0 && ( +
+

{t("detailsTitle")}

+
+ {detailItems.map((item) => ( +
+
+ {t(`details.${item.key}` as never)} +
+
+ {String(item.value)} +
+
+ ))} +
+
+ )}
); }