From 1cc34e1fc827e85d1129dbc5a9e8c4db33c4b5e3 Mon Sep 17 00:00:00 2001 From: OG T Date: Thu, 26 Mar 2026 12:07:16 +0800 Subject: [PATCH] =?UTF-8?q?fix(api):=20Phase=2018.1=20=E4=BF=AE=E5=BE=A9?= =?UTF-8?q?=20-=20Mock=20Response=20=E6=AD=A3=E8=A6=8F=E5=8C=96=E9=81=BA?= =?UTF-8?q?=E6=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 問題: _generate_mock_response() 直接使用原始 target_resource, 導致 URL (如 https://api.awoooi.wooo.work) 未正規化為有效 K8s 名稱 修復: 在 _generate_mock_response() 開頭加入 normalize_resource_name() - 將 URL/域名轉換為有效 deployment 名稱 - 更新 namespace 為正確值 (awoooi-prod) 測試: E2E 驗證待部署後執行 Co-Authored-By: Claude Opus 4.5 --- apps/api/src/services/openclaw.py | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/apps/api/src/services/openclaw.py b/apps/api/src/services/openclaw.py index 49048e2f5..3203c63ed 100644 --- a/apps/api/src/services/openclaw.py +++ b/apps/api/src/services/openclaw.py @@ -58,10 +58,15 @@ RESPONSIBILITY_MATRIX = { # 信心度閾值 CONFIDENCE_THRESHOLD_COLLAB = 0.70 # 低於此閾值自動標記為 COLLAB -OPENCLAW_SYSTEM_PROMPT = """# OpenClaw v7.0 - AWOOOI AI 仲裁官 + SignOz 視力 +OPENCLAW_SYSTEM_PROMPT = """# OpenClaw v7.1 - AWOOOI AI 仲裁官 + SignOz 視力 You are OpenClaw, a senior Site Reliability Engineer (SRE) AI arbitrator with SignOz observability integration. +## 🌐 Language Requirement (CRITICAL) +- You MUST respond in **Traditional Chinese (繁體中文/正體中文)** for all text fields +- FORBIDDEN: Simplified Chinese characters (简体字) such as: 与→與、说→說、这→這、时→時 +- Use Taiwan locale conventions (台灣用語) + ## 🔬 SignOz Gold Metrics Available You will receive real-time SignOz metrics for the affected service: - **RPS (Requests Per Second)**: Current traffic volume and trend @@ -564,11 +569,27 @@ class OpenClawService: alert_type = alert_context.get("alert_type", "custom") severity = alert_context.get("severity", "warning") - target = alert_context.get("target_resource", "unknown-service") - namespace = alert_context.get("namespace", "default") + raw_target = alert_context.get("target_resource", "unknown-service") + raw_namespace = alert_context.get("namespace", "default") message = alert_context.get("message", "") metrics = alert_context.get("metrics", {}) + # Phase 18.1: 正規化資源名稱 (ADR-016) + # 確保 kubectl 指令使用有效的 K8s 名稱 + normalized = normalize_resource_name(raw_target, raw_namespace) + if normalized.is_k8s_resource and normalized.normalized: + target = normalized.normalized + namespace = normalized.namespace or raw_namespace + logger.info( + "mock_response_resource_normalized", + original=raw_target, + normalized=target, + namespace=namespace, + ) + else: + target = raw_target + namespace = raw_namespace + # SignOz 數據整合 signoz_summary = "" signoz_correlation = "SignOz 數據擷取中..."