From 7f6028c32b178221b00dbdc6811c40d5f815ae5c Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 5 Jun 2026 02:09:30 +0800 Subject: [PATCH] =?UTF-8?q?fix(web):=20=E6=B8=85=E7=90=86=20AwoooP=20Runs?= =?UTF-8?q?=20fallback=20=E6=96=87=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/messages/en.json | 144 +++++++++++++++++------------------ apps/web/messages/zh-TW.json | 144 +++++++++++++++++------------------ 2 files changed, 144 insertions(+), 144 deletions(-) diff --git a/apps/web/messages/en.json b/apps/web/messages/en.json index e0a2ba6a..b4f5b6de 100644 --- a/apps/web/messages/en.json +++ b/apps/web/messages/en.json @@ -1209,10 +1209,10 @@ "execution": "執行判定", "ansible": "Ansible", "mcp": "MCP", - "mcpValue": "{success}/{total} success;top {tool}", + "mcpValue": "{success}/{total} 成功;主要工具 {tool}", "km": "KM", "notification": "通知通道", - "events": "Timeline events" + "events": "時間線事件" } } }, @@ -1460,7 +1460,7 @@ "tickets": "Tickets" }, "metrics": { - "sourceRefs": "Source refs", + "sourceRefs": "來源參照", "sourceRefsValue": "{inbound} 入站 / {outbound} 出站", "provider": "Sentry / SigNoz", "mcp": "MCP Gateway", @@ -1487,7 +1487,7 @@ "aiTitle": "AI 處置判定", "aiDetail": "狀態 {state};下一步 {nextStep};人工 {needsHuman}", "sourceTitle": "Sentry / SigNoz 匹配", - "sourceDetail": "direct {direct} / candidate {candidate} / applied {applied};原因 {reason}", + "sourceDetail": "直連 {direct} / 候選 {candidate} / 已套用 {applied};原因 {reason}", "needsHumanYes": "需要", "needsHumanNo": "不需要", "stateLabels": { @@ -1863,26 +1863,26 @@ "fetchFailed": "provider 關聯查詢失敗" }, "tiles": { - "sourceRefs": "Source refs", + "sourceRefs": "來源參照", "sourceRefsValue": "{inbound} 入站 / {outbound} 出站", - "sourceRefsDetail": "direct {direct}、candidate {candidate}、applied {applied}", + "sourceRefsDetail": "直連 {direct}、候選 {candidate}、已套用 {applied}", "provider": "Sentry / SigNoz", - "providerDetail": "{reason};provider events {providerEvents}", + "providerDetail": "{reason};供應者事件 {providerEvents}", "mcp": "MCP Gateway", "mcpValue": "{success} / {total}", - "mcpDetail": "failed {failed}、blocked {blocked}、policy {policy}", + "mcpDetail": "失敗 {failed}、阻擋 {blocked}、政策 {policy}", "ansible": "Ansible", - "ansibleDetail": "mode {mode}、rc {rc}、apply {apply}", + "ansibleDetail": "模式 {mode}、回傳碼 {rc}、套用 {apply}", "km": "KM", - "kmDetail": "verification {verification};next {next}", + "kmDetail": "驗證 {verification};下一步 {next}", "handoff": "交接狀態" }, "providerEvidence": { - "title": "Provider 匹配狀態", + "title": "供應者匹配狀態", "rawIdsHidden": "raw id 已收斂", "summary": "目前判斷:{status}。原因:{reason}。", - "counts": "direct {direct} / candidate {candidate} / applied {applied}", - "latest": "latest event {event};heartbeat {heartbeat}" + "counts": "直連 {direct} / 候選 {candidate} / 已套用 {applied}", + "latest": "最新事件 {event};心跳 {heartbeat}" }, "timeline": { "title": "Incident Timeline 寫入證據", @@ -3598,7 +3598,7 @@ "callbackTraceRecoveryBacklog": "Callback trace backlog:缺 trace {missing};1h {recent1h};24h {recent24h};gap 後 traced {recovered};復原 {status}", "callbackTraceRecoveryAction": "接續處理:{action};需要人工={human}", "callbackTraceRecoveryOwner": "主責:AwoooP Callback Evidence;協作:TelegramGateway / 執行時間線", - "callbackTraceRecoveryEvidenceSurface": "查證入口:Runs / TG Callback Evidence", + "callbackTraceRecoveryEvidenceSurface": "查證入口:Runs / TG Callback 證據", "callbackTraceRecoveryClosure": "關閉條件:1h=0 且 24h=0;目前 1h {recent1h} / 24h {recent24h}", "callbackTraceRecoveryDecision": "判讀:{gap};下一步:{next}", "callbackTraceRecoveryLatest": "最後缺口:{missing};復原首筆:{first};復原最新:{latest}", @@ -3875,7 +3875,7 @@ "recheckTotal": "Recheck {count}", "guardrail": "讀取不寫入={writes};人工覆核={review}", "itemState": "階段:{stage};結果:{outcome}", - "itemRefs": "Source:{source};Recheck:{recheck}" + "itemRefs": "來源:{source};複查:{recheck}" }, "completionQueue": { "title": "Completion分流佇列", @@ -4219,13 +4219,13 @@ "sourceRefs": "來源 refs:{refs}(Sentry {sentry} / SignOz {signoz})", "sourceFlow": { "label": "來源流程:{status}", - "detail": "refs={refs}; Sentry={sentry}; SignOz={signoz}; event={event}", + "detail": "參照={refs};Sentry={sentry};SigNoz={signoz};事件={event}", "statuses": { "applied": "已套用", "reviewed": "審核已記錄", "review": "待審核配對", "evidence": "來源證據已到", - "provider": "Provider 已接收", + "provider": "供應者已接收", "waiting": "等待來源" } }, @@ -4369,17 +4369,17 @@ "sourceFlow": { "column": "來源流程", "notLinked": "尚未關聯 incident", - "detail": "providers={providers}; d/c/a={direct}/{candidate}/{applied}", - "nextLine": "next={next}", - "blockedLine": "blocked={blocker}", - "mcpLine": "MCP {success}/{total}; failed={failed}; blocked={blocked}", - "ansibleLine": "Ansible candidates={candidates}; apply={applied}; reason={reason}", - "kmLine": "KM entries={count}", + "detail": "供應者={providers};直連/候選/套用={direct}/{candidate}/{applied}", + "nextLine": "下一步={next}", + "blockedLine": "阻塞={blocker}", + "mcpLine": "MCP {success}/{total};失敗={failed};阻擋={blocked}", + "ansibleLine": "Ansible 候選={candidates};套用={applied};原因={reason}", + "kmLine": "KM 條目={count}", "operator": { - "fallbackMcpSummary": "狀態鏈批次回補中;目前可見 MCP 證據 {count} 筆,route={route}", + "fallbackMcpSummary": "狀態鏈批次回補中;目前可見 MCP 證據 {count} 筆,路由={route}", "fallbackMissingChain": "狀態鏈批次回補中;先用 Run 證據判讀", "nextStatusChain": "等待狀態鏈批次回補,或打開 Incident 詳情確認", - "statusChainPending": "status_chain_pending", + "statusChainPending": "狀態鏈待回補", "statuses": { "needsHuman": "需人工", "failed": "執行失敗", @@ -4392,7 +4392,7 @@ "verified": "已驗證", "applied": "已套用", "evidence": "已找到證據", - "provider": "Provider 已接收", + "provider": "供應者已接收", "waiting": "等待來源", "loading": "讀取中" } @@ -4553,7 +4553,7 @@ }, "captureItems": { "awooopStatusChain": "AwoooP 狀態鏈", - "kmCompletionSummary": "KM owner-review snapshot" + "kmCompletionSummary": "KM 負責人覆核快照" }, "filters": { "label": "TG Callback 篩選", @@ -4562,7 +4562,7 @@ "statuses": { "noCallback": "尚無 Callback", "sent": "已送達", - "fallbackSent": "Fallback 已送達", + "fallbackSent": "備援已送達", "rescueSent": "救援已送達", "failed": "送達失敗", "observed": "已記錄" @@ -4570,19 +4570,19 @@ "details": { "noCallback": "此 Run 尚未有詳情 / 歷史 callback reply 證據。", "sent": "Telegram callback reply 已用原格式送達。", - "fallbackSent": "Telegram HTML 回覆失敗後,已用純文字 fallback 送達。", - "rescueSent": "Telegram fallback仍失敗後,已用救援純文字送達。", + "fallbackSent": "Telegram HTML 回覆失敗後,已用純文字備援送達。", + "rescueSent": "Telegram 備援仍失敗後,已用救援純文字送達。", "failed": "Telegram callback reply 最終送達失敗,需人工確認。", "observed": "Telegram callback reply 已記錄,但狀態不屬於標準分類。" }, "events": { - "title": "TG Callback Evidence", - "subtitle": "詳情 / 歷史回覆證據來自 AwoooP outbound mirror", + "title": "TG Callback 證據", + "subtitle": "詳情 / 歷史回覆證據來自 AwoooP 出站鏡像", "total": "{count} 筆", "loading": "正在同步 callback evidence;尚未回來前不判定為空資料。", "cacheHit": "快取命中 {age}s / TTL {ttl}s", "cacheMiss": "剛重新聚合 / TTL {ttl}s", - "empty": "目前尚無 callback reply evidence。", + "empty": "目前尚無 callback reply 證據。", "error": "Callback evidence 載入失敗:{error}", "summary": { "outbound": "出站鏡像", @@ -4597,13 +4597,13 @@ "outboundReplyMarkupTopPrefixItem": "{prefix} {total}(24h {recent},最後 {last})", "operatorVerdictTitle": "Operator 判讀", "operatorVerdictDetail": "入站點擊鏡像:{inboundStatus}(累計 {inboundTotal},24h {inboundRecent24h});snapshot:{snapshotStatus} / {snapshotCoverage};trace 復原:{traceRecoveryStatus};下一步:{nextAction}", - "callbacks": "Callback replies", + "callbacks": "Callback 回覆", "callbackDetail": "detail {detail} / history {history};Incident {incidents}", "inboundCallbackDetail": "入站 click:{status};累計 {total} / 24h {recent24h};最新 {latest};動作 {action}", - "snapshots": "Evidence snapshots", + "snapshots": "證據快照", "snapshotDetail": "captured {captured} / partial {partial} / missing {missing};覆蓋 {coverage}", "delivery": "送達失敗", - "deliveryDetail": "sent {sent};fallback {fallback};outbound failed {outboundFailed}", + "deliveryDetail": "已送達 {sent};備援 {fallback};出站失敗 {outboundFailed}", "next": "下一步", "latest": "最新 callback:{time}", "statuses": { @@ -4660,9 +4660,9 @@ "previewEmpty": "無摘要", "openRun": "開啟 Run", "awooopSnapshotTitle": "Callback 當下 AwoooP 狀態鏈", - "awooopSnapshotMcp": "MCP:total {total} / success {success} / failed {failed} / blocked {blocked};top {topTool}", - "awooopSnapshotExecution": "Execution:executor {executor};playbook {playbook};Ansible considered={ansible} / candidates={candidates}", - "awooopSnapshotSource": "Source:{status};direct {direct} / candidate {candidate} / applied {applied};{providers}", + "awooopSnapshotMcp": "MCP:總數 {total} / 成功 {success} / 失敗 {failed} / 阻擋 {blocked};主要工具 {topTool}", + "awooopSnapshotExecution": "執行:執行器 {executor};PlayBook {playbook};Ansible 已評估={ansible} / 候選={candidates}", + "awooopSnapshotSource": "來源:{status};直連 {direct} / 候選 {candidate} / 已套用 {applied};{providers}", "capture": { "title": "Evidence Capture 狀態", "captured": "已捕捉:{items}", @@ -4678,7 +4678,7 @@ }, "items": { "awooopStatusChain": "AwoooP 狀態鏈", - "kmCompletionSummary": "KM owner-review snapshot" + "kmCompletionSummary": "KM 負責人覆核快照" }, "nextActions": { "none": "不需補動作", @@ -4870,45 +4870,45 @@ "mcpValue": "Gateway {success}/{total},失敗 {failed},阻擋 {blocked}", "mcpDetail": "top={topTool}; first-class={firstClass}; legacy={legacy}; policy={policy}", "source": "Sentry / SigNoz", - "sourceValue": "{status}; direct {direct}, candidate {candidate}, applied {applied}", - "sourceDetail": "{providers}; reason={reason}", - "execution": "Executor", + "sourceValue": "{status};直連 {direct},候選 {candidate},已套用 {applied}", + "sourceDetail": "{providers};原因={reason}", + "execution": "執行器", "executionValue": "{executor} / {status}", - "executionDetail": "operation={operation}; action={action}; ops={ops}", + "executionDetail": "操作={operation};動作={action};維運={ops}", "playbook": "PlayBook / Ansible", "playbookValue": "{playbook}", "playbookDetail": "ansible={ansible}; candidates={candidates}; check/apply={check}/{apply}; mode={mode}; rc={rc}; 批准={approval}; catalog={catalog}; status={status}", - "learning": "KM / Learning", - "learningValue": "KM {km}; AutoRepair {autoRepair}; Ops {ops}", - "learningDetail": "verification={verification}; next={nextStep}" + "learning": "KM / 學習", + "learningValue": "KM {km};自動修復 {autoRepair};維運 {ops}", + "learningDetail": "驗證={verification};下一步={nextStep}" }, "drilldown": { "title": "單一 Incident 處理流程", "step": "{step}. {label}", "signal": "來源接收", - "signalDetail": "inbound={inbound}; outbound={outbound}; 來源={status}; reason={reason}", + "signalDetail": "入站={inbound};出站={outbound};來源={status};原因={reason}", "investigation": "MCP 調查", - "investigationValue": "success {success}/{total}", - "investigationDetail": "tools={tools}; failed={failed}; blocked={blocked}", + "investigationValue": "成功 {success}/{total}", + "investigationDetail": "工具={tools};失敗={failed};阻擋={blocked}", "playbook": "PlayBook / Ansible", - "playbookDetail": "candidates={candidates}; check/apply={check}/{apply}; 批准={approval}", + "playbookDetail": "候選={candidates};檢查/套用={check}/{apply};批准={approval}", "execution": "執行結果", "executionValue": "{executor} / {status}", - "executionDetail": "operation={operation}; rc={rc}; mode={mode}", - "learning": "KM / Learning", - "learningValue": "KM {km}; autoRepair {autoRepair}", - "learningDetail": "verification={verification}; next={nextStep}", + "executionDetail": "操作={operation};回傳碼={rc};模式={mode}", + "learning": "KM / 學習", + "learningValue": "KM {km};自動修復 {autoRepair}", + "learningDetail": "驗證={verification};下一步={nextStep}", "handoff": "人工 / 下一步", - "handoffDetail": "reason={reason}; next={nextAction}" + "handoffDetail": "原因={reason};下一步={nextAction}" }, "source": { "status": "來源關聯", "verification": "狀態鏈驗證", - "directCandidate": "Direct / Candidate / Applied", + "directCandidate": "直連 / 候選 / 已套用", "directCandidateValue": "{direct} / {candidate} / {applied}", "latestApplied": "最新套用事件", "reason": "未匹配原因", - "providers": "Provider", + "providers": "供應者", "reasons": { "providerHeartbeatNoMatch": "Provider 有心跳,但這個 Incident 尚未匹配", "noMatchingProviderSourceEvent": "查無可匹配的 Sentry / SigNoz 事件", @@ -4917,11 +4917,11 @@ "fetchFailed": "讀取來源關聯失敗" }, "flow": { - "providerIngress": "Provider 接收", + "providerIngress": "供應者接收", "sourceEvidence": "來源證據", "appliedVerification": "套用關聯驗證", - "providerDetail": "provider events={providerEvents}; ready providers={readyProviders}", - "verificationDetail": "latest={latest}", + "providerDetail": "供應者事件={providerEvents};就緒供應者={readyProviders}", + "verificationDetail": "最新={latest}", "status": { "ready": "已接收", "waiting": "等待資料", @@ -5118,11 +5118,11 @@ "operator_visible": "Operator可見性" }, "actions": { - "repair_alert_intake_or_outbound_mirror": "修復告警入庫或outbound mirror", - "route_incident_to_mcp_gateway_and_evidence_collectors": "把事件導入 MCP Gateway與evidence collectors", - "resolve_pending_or_expired_human_gate": "處理 pending / expired 人工 gate", - "record_effective_execution_or_mark_manual_no_action": "記錄有效執行,或明確標成人工 no-action", - "write_auto_repair_execution_or_blocker_reason": "寫入 auto-repair execution或blocker reason", + "repair_alert_intake_or_outbound_mirror": "修復告警入庫或出站鏡像", + "route_incident_to_mcp_gateway_and_evidence_collectors": "把事件導入 MCP Gateway 與證據收集器", + "resolve_pending_or_expired_human_gate": "處理待處理 / 已過期人工閘門", + "record_effective_execution_or_mark_manual_no_action": "記錄有效執行,或明確標成人工無動作", + "write_auto_repair_execution_or_blocker_reason": "寫入自動修復執行或阻塞原因", "run_post_execution_verification": "執行事後驗證並保存結果", "write_km_or_learning_evidence": "回寫 KM / learning evidence", "repair_timeline_or_operator_notification_visibility": "修復 timeline或operator notification可見性" @@ -5395,16 +5395,16 @@ "reason": "原因" }, "evidence": { - "executor": "Executor", + "executor": "執行器", "ansible": "Ansible", "mcp": "MCP", - "mcpValue": "{success}/{total} success;top {tool}", - "source": "Source", - "sourceValue": "direct {direct} / candidate {candidate} / applied {applied}", + "mcpValue": "{success}/{total} 成功;主要工具 {tool}", + "source": "來源", + "sourceValue": "直連 {direct} / 候選 {candidate} / 已套用 {applied}", "km": "KM", "command": "指令判定", "notification": "通知通道", - "events": "Timeline events" + "events": "時間線事件" } }, "legacyHitl": { @@ -6120,7 +6120,7 @@ "running": "執行中", "sent": "已送出", "callbackReplySent": "Callback 已送出", - "callbackReplyFallbackSent": "Callback fallback", + "callbackReplyFallbackSent": "Callback 備援", "callbackReplyRescueSent": "Callback 救援", "callbackReplyFailed": "Callback 失敗", "shadow": "Shadow", diff --git a/apps/web/messages/zh-TW.json b/apps/web/messages/zh-TW.json index e0a2ba6a..b4f5b6de 100644 --- a/apps/web/messages/zh-TW.json +++ b/apps/web/messages/zh-TW.json @@ -1209,10 +1209,10 @@ "execution": "執行判定", "ansible": "Ansible", "mcp": "MCP", - "mcpValue": "{success}/{total} success;top {tool}", + "mcpValue": "{success}/{total} 成功;主要工具 {tool}", "km": "KM", "notification": "通知通道", - "events": "Timeline events" + "events": "時間線事件" } } }, @@ -1460,7 +1460,7 @@ "tickets": "Tickets" }, "metrics": { - "sourceRefs": "Source refs", + "sourceRefs": "來源參照", "sourceRefsValue": "{inbound} 入站 / {outbound} 出站", "provider": "Sentry / SigNoz", "mcp": "MCP Gateway", @@ -1487,7 +1487,7 @@ "aiTitle": "AI 處置判定", "aiDetail": "狀態 {state};下一步 {nextStep};人工 {needsHuman}", "sourceTitle": "Sentry / SigNoz 匹配", - "sourceDetail": "direct {direct} / candidate {candidate} / applied {applied};原因 {reason}", + "sourceDetail": "直連 {direct} / 候選 {candidate} / 已套用 {applied};原因 {reason}", "needsHumanYes": "需要", "needsHumanNo": "不需要", "stateLabels": { @@ -1863,26 +1863,26 @@ "fetchFailed": "provider 關聯查詢失敗" }, "tiles": { - "sourceRefs": "Source refs", + "sourceRefs": "來源參照", "sourceRefsValue": "{inbound} 入站 / {outbound} 出站", - "sourceRefsDetail": "direct {direct}、candidate {candidate}、applied {applied}", + "sourceRefsDetail": "直連 {direct}、候選 {candidate}、已套用 {applied}", "provider": "Sentry / SigNoz", - "providerDetail": "{reason};provider events {providerEvents}", + "providerDetail": "{reason};供應者事件 {providerEvents}", "mcp": "MCP Gateway", "mcpValue": "{success} / {total}", - "mcpDetail": "failed {failed}、blocked {blocked}、policy {policy}", + "mcpDetail": "失敗 {failed}、阻擋 {blocked}、政策 {policy}", "ansible": "Ansible", - "ansibleDetail": "mode {mode}、rc {rc}、apply {apply}", + "ansibleDetail": "模式 {mode}、回傳碼 {rc}、套用 {apply}", "km": "KM", - "kmDetail": "verification {verification};next {next}", + "kmDetail": "驗證 {verification};下一步 {next}", "handoff": "交接狀態" }, "providerEvidence": { - "title": "Provider 匹配狀態", + "title": "供應者匹配狀態", "rawIdsHidden": "raw id 已收斂", "summary": "目前判斷:{status}。原因:{reason}。", - "counts": "direct {direct} / candidate {candidate} / applied {applied}", - "latest": "latest event {event};heartbeat {heartbeat}" + "counts": "直連 {direct} / 候選 {candidate} / 已套用 {applied}", + "latest": "最新事件 {event};心跳 {heartbeat}" }, "timeline": { "title": "Incident Timeline 寫入證據", @@ -3598,7 +3598,7 @@ "callbackTraceRecoveryBacklog": "Callback trace backlog:缺 trace {missing};1h {recent1h};24h {recent24h};gap 後 traced {recovered};復原 {status}", "callbackTraceRecoveryAction": "接續處理:{action};需要人工={human}", "callbackTraceRecoveryOwner": "主責:AwoooP Callback Evidence;協作:TelegramGateway / 執行時間線", - "callbackTraceRecoveryEvidenceSurface": "查證入口:Runs / TG Callback Evidence", + "callbackTraceRecoveryEvidenceSurface": "查證入口:Runs / TG Callback 證據", "callbackTraceRecoveryClosure": "關閉條件:1h=0 且 24h=0;目前 1h {recent1h} / 24h {recent24h}", "callbackTraceRecoveryDecision": "判讀:{gap};下一步:{next}", "callbackTraceRecoveryLatest": "最後缺口:{missing};復原首筆:{first};復原最新:{latest}", @@ -3875,7 +3875,7 @@ "recheckTotal": "Recheck {count}", "guardrail": "讀取不寫入={writes};人工覆核={review}", "itemState": "階段:{stage};結果:{outcome}", - "itemRefs": "Source:{source};Recheck:{recheck}" + "itemRefs": "來源:{source};複查:{recheck}" }, "completionQueue": { "title": "Completion分流佇列", @@ -4219,13 +4219,13 @@ "sourceRefs": "來源 refs:{refs}(Sentry {sentry} / SignOz {signoz})", "sourceFlow": { "label": "來源流程:{status}", - "detail": "refs={refs}; Sentry={sentry}; SignOz={signoz}; event={event}", + "detail": "參照={refs};Sentry={sentry};SigNoz={signoz};事件={event}", "statuses": { "applied": "已套用", "reviewed": "審核已記錄", "review": "待審核配對", "evidence": "來源證據已到", - "provider": "Provider 已接收", + "provider": "供應者已接收", "waiting": "等待來源" } }, @@ -4369,17 +4369,17 @@ "sourceFlow": { "column": "來源流程", "notLinked": "尚未關聯 incident", - "detail": "providers={providers}; d/c/a={direct}/{candidate}/{applied}", - "nextLine": "next={next}", - "blockedLine": "blocked={blocker}", - "mcpLine": "MCP {success}/{total}; failed={failed}; blocked={blocked}", - "ansibleLine": "Ansible candidates={candidates}; apply={applied}; reason={reason}", - "kmLine": "KM entries={count}", + "detail": "供應者={providers};直連/候選/套用={direct}/{candidate}/{applied}", + "nextLine": "下一步={next}", + "blockedLine": "阻塞={blocker}", + "mcpLine": "MCP {success}/{total};失敗={failed};阻擋={blocked}", + "ansibleLine": "Ansible 候選={candidates};套用={applied};原因={reason}", + "kmLine": "KM 條目={count}", "operator": { - "fallbackMcpSummary": "狀態鏈批次回補中;目前可見 MCP 證據 {count} 筆,route={route}", + "fallbackMcpSummary": "狀態鏈批次回補中;目前可見 MCP 證據 {count} 筆,路由={route}", "fallbackMissingChain": "狀態鏈批次回補中;先用 Run 證據判讀", "nextStatusChain": "等待狀態鏈批次回補,或打開 Incident 詳情確認", - "statusChainPending": "status_chain_pending", + "statusChainPending": "狀態鏈待回補", "statuses": { "needsHuman": "需人工", "failed": "執行失敗", @@ -4392,7 +4392,7 @@ "verified": "已驗證", "applied": "已套用", "evidence": "已找到證據", - "provider": "Provider 已接收", + "provider": "供應者已接收", "waiting": "等待來源", "loading": "讀取中" } @@ -4553,7 +4553,7 @@ }, "captureItems": { "awooopStatusChain": "AwoooP 狀態鏈", - "kmCompletionSummary": "KM owner-review snapshot" + "kmCompletionSummary": "KM 負責人覆核快照" }, "filters": { "label": "TG Callback 篩選", @@ -4562,7 +4562,7 @@ "statuses": { "noCallback": "尚無 Callback", "sent": "已送達", - "fallbackSent": "Fallback 已送達", + "fallbackSent": "備援已送達", "rescueSent": "救援已送達", "failed": "送達失敗", "observed": "已記錄" @@ -4570,19 +4570,19 @@ "details": { "noCallback": "此 Run 尚未有詳情 / 歷史 callback reply 證據。", "sent": "Telegram callback reply 已用原格式送達。", - "fallbackSent": "Telegram HTML 回覆失敗後,已用純文字 fallback 送達。", - "rescueSent": "Telegram fallback仍失敗後,已用救援純文字送達。", + "fallbackSent": "Telegram HTML 回覆失敗後,已用純文字備援送達。", + "rescueSent": "Telegram 備援仍失敗後,已用救援純文字送達。", "failed": "Telegram callback reply 最終送達失敗,需人工確認。", "observed": "Telegram callback reply 已記錄,但狀態不屬於標準分類。" }, "events": { - "title": "TG Callback Evidence", - "subtitle": "詳情 / 歷史回覆證據來自 AwoooP outbound mirror", + "title": "TG Callback 證據", + "subtitle": "詳情 / 歷史回覆證據來自 AwoooP 出站鏡像", "total": "{count} 筆", "loading": "正在同步 callback evidence;尚未回來前不判定為空資料。", "cacheHit": "快取命中 {age}s / TTL {ttl}s", "cacheMiss": "剛重新聚合 / TTL {ttl}s", - "empty": "目前尚無 callback reply evidence。", + "empty": "目前尚無 callback reply 證據。", "error": "Callback evidence 載入失敗:{error}", "summary": { "outbound": "出站鏡像", @@ -4597,13 +4597,13 @@ "outboundReplyMarkupTopPrefixItem": "{prefix} {total}(24h {recent},最後 {last})", "operatorVerdictTitle": "Operator 判讀", "operatorVerdictDetail": "入站點擊鏡像:{inboundStatus}(累計 {inboundTotal},24h {inboundRecent24h});snapshot:{snapshotStatus} / {snapshotCoverage};trace 復原:{traceRecoveryStatus};下一步:{nextAction}", - "callbacks": "Callback replies", + "callbacks": "Callback 回覆", "callbackDetail": "detail {detail} / history {history};Incident {incidents}", "inboundCallbackDetail": "入站 click:{status};累計 {total} / 24h {recent24h};最新 {latest};動作 {action}", - "snapshots": "Evidence snapshots", + "snapshots": "證據快照", "snapshotDetail": "captured {captured} / partial {partial} / missing {missing};覆蓋 {coverage}", "delivery": "送達失敗", - "deliveryDetail": "sent {sent};fallback {fallback};outbound failed {outboundFailed}", + "deliveryDetail": "已送達 {sent};備援 {fallback};出站失敗 {outboundFailed}", "next": "下一步", "latest": "最新 callback:{time}", "statuses": { @@ -4660,9 +4660,9 @@ "previewEmpty": "無摘要", "openRun": "開啟 Run", "awooopSnapshotTitle": "Callback 當下 AwoooP 狀態鏈", - "awooopSnapshotMcp": "MCP:total {total} / success {success} / failed {failed} / blocked {blocked};top {topTool}", - "awooopSnapshotExecution": "Execution:executor {executor};playbook {playbook};Ansible considered={ansible} / candidates={candidates}", - "awooopSnapshotSource": "Source:{status};direct {direct} / candidate {candidate} / applied {applied};{providers}", + "awooopSnapshotMcp": "MCP:總數 {total} / 成功 {success} / 失敗 {failed} / 阻擋 {blocked};主要工具 {topTool}", + "awooopSnapshotExecution": "執行:執行器 {executor};PlayBook {playbook};Ansible 已評估={ansible} / 候選={candidates}", + "awooopSnapshotSource": "來源:{status};直連 {direct} / 候選 {candidate} / 已套用 {applied};{providers}", "capture": { "title": "Evidence Capture 狀態", "captured": "已捕捉:{items}", @@ -4678,7 +4678,7 @@ }, "items": { "awooopStatusChain": "AwoooP 狀態鏈", - "kmCompletionSummary": "KM owner-review snapshot" + "kmCompletionSummary": "KM 負責人覆核快照" }, "nextActions": { "none": "不需補動作", @@ -4870,45 +4870,45 @@ "mcpValue": "Gateway {success}/{total},失敗 {failed},阻擋 {blocked}", "mcpDetail": "top={topTool}; first-class={firstClass}; legacy={legacy}; policy={policy}", "source": "Sentry / SigNoz", - "sourceValue": "{status}; direct {direct}, candidate {candidate}, applied {applied}", - "sourceDetail": "{providers}; reason={reason}", - "execution": "Executor", + "sourceValue": "{status};直連 {direct},候選 {candidate},已套用 {applied}", + "sourceDetail": "{providers};原因={reason}", + "execution": "執行器", "executionValue": "{executor} / {status}", - "executionDetail": "operation={operation}; action={action}; ops={ops}", + "executionDetail": "操作={operation};動作={action};維運={ops}", "playbook": "PlayBook / Ansible", "playbookValue": "{playbook}", "playbookDetail": "ansible={ansible}; candidates={candidates}; check/apply={check}/{apply}; mode={mode}; rc={rc}; 批准={approval}; catalog={catalog}; status={status}", - "learning": "KM / Learning", - "learningValue": "KM {km}; AutoRepair {autoRepair}; Ops {ops}", - "learningDetail": "verification={verification}; next={nextStep}" + "learning": "KM / 學習", + "learningValue": "KM {km};自動修復 {autoRepair};維運 {ops}", + "learningDetail": "驗證={verification};下一步={nextStep}" }, "drilldown": { "title": "單一 Incident 處理流程", "step": "{step}. {label}", "signal": "來源接收", - "signalDetail": "inbound={inbound}; outbound={outbound}; 來源={status}; reason={reason}", + "signalDetail": "入站={inbound};出站={outbound};來源={status};原因={reason}", "investigation": "MCP 調查", - "investigationValue": "success {success}/{total}", - "investigationDetail": "tools={tools}; failed={failed}; blocked={blocked}", + "investigationValue": "成功 {success}/{total}", + "investigationDetail": "工具={tools};失敗={failed};阻擋={blocked}", "playbook": "PlayBook / Ansible", - "playbookDetail": "candidates={candidates}; check/apply={check}/{apply}; 批准={approval}", + "playbookDetail": "候選={candidates};檢查/套用={check}/{apply};批准={approval}", "execution": "執行結果", "executionValue": "{executor} / {status}", - "executionDetail": "operation={operation}; rc={rc}; mode={mode}", - "learning": "KM / Learning", - "learningValue": "KM {km}; autoRepair {autoRepair}", - "learningDetail": "verification={verification}; next={nextStep}", + "executionDetail": "操作={operation};回傳碼={rc};模式={mode}", + "learning": "KM / 學習", + "learningValue": "KM {km};自動修復 {autoRepair}", + "learningDetail": "驗證={verification};下一步={nextStep}", "handoff": "人工 / 下一步", - "handoffDetail": "reason={reason}; next={nextAction}" + "handoffDetail": "原因={reason};下一步={nextAction}" }, "source": { "status": "來源關聯", "verification": "狀態鏈驗證", - "directCandidate": "Direct / Candidate / Applied", + "directCandidate": "直連 / 候選 / 已套用", "directCandidateValue": "{direct} / {candidate} / {applied}", "latestApplied": "最新套用事件", "reason": "未匹配原因", - "providers": "Provider", + "providers": "供應者", "reasons": { "providerHeartbeatNoMatch": "Provider 有心跳,但這個 Incident 尚未匹配", "noMatchingProviderSourceEvent": "查無可匹配的 Sentry / SigNoz 事件", @@ -4917,11 +4917,11 @@ "fetchFailed": "讀取來源關聯失敗" }, "flow": { - "providerIngress": "Provider 接收", + "providerIngress": "供應者接收", "sourceEvidence": "來源證據", "appliedVerification": "套用關聯驗證", - "providerDetail": "provider events={providerEvents}; ready providers={readyProviders}", - "verificationDetail": "latest={latest}", + "providerDetail": "供應者事件={providerEvents};就緒供應者={readyProviders}", + "verificationDetail": "最新={latest}", "status": { "ready": "已接收", "waiting": "等待資料", @@ -5118,11 +5118,11 @@ "operator_visible": "Operator可見性" }, "actions": { - "repair_alert_intake_or_outbound_mirror": "修復告警入庫或outbound mirror", - "route_incident_to_mcp_gateway_and_evidence_collectors": "把事件導入 MCP Gateway與evidence collectors", - "resolve_pending_or_expired_human_gate": "處理 pending / expired 人工 gate", - "record_effective_execution_or_mark_manual_no_action": "記錄有效執行,或明確標成人工 no-action", - "write_auto_repair_execution_or_blocker_reason": "寫入 auto-repair execution或blocker reason", + "repair_alert_intake_or_outbound_mirror": "修復告警入庫或出站鏡像", + "route_incident_to_mcp_gateway_and_evidence_collectors": "把事件導入 MCP Gateway 與證據收集器", + "resolve_pending_or_expired_human_gate": "處理待處理 / 已過期人工閘門", + "record_effective_execution_or_mark_manual_no_action": "記錄有效執行,或明確標成人工無動作", + "write_auto_repair_execution_or_blocker_reason": "寫入自動修復執行或阻塞原因", "run_post_execution_verification": "執行事後驗證並保存結果", "write_km_or_learning_evidence": "回寫 KM / learning evidence", "repair_timeline_or_operator_notification_visibility": "修復 timeline或operator notification可見性" @@ -5395,16 +5395,16 @@ "reason": "原因" }, "evidence": { - "executor": "Executor", + "executor": "執行器", "ansible": "Ansible", "mcp": "MCP", - "mcpValue": "{success}/{total} success;top {tool}", - "source": "Source", - "sourceValue": "direct {direct} / candidate {candidate} / applied {applied}", + "mcpValue": "{success}/{total} 成功;主要工具 {tool}", + "source": "來源", + "sourceValue": "直連 {direct} / 候選 {candidate} / 已套用 {applied}", "km": "KM", "command": "指令判定", "notification": "通知通道", - "events": "Timeline events" + "events": "時間線事件" } }, "legacyHitl": { @@ -6120,7 +6120,7 @@ "running": "執行中", "sent": "已送出", "callbackReplySent": "Callback 已送出", - "callbackReplyFallbackSent": "Callback fallback", + "callbackReplyFallbackSent": "Callback 備援", "callbackReplyRescueSent": "Callback 救援", "callbackReplyFailed": "Callback 失敗", "shadow": "Shadow",