diff --git a/apps/api/src/services/telegram_gateway.py b/apps/api/src/services/telegram_gateway.py
index 83702c01..a79fbc78 100644
--- a/apps/api/src/services/telegram_gateway.py
+++ b/apps/api/src/services/telegram_gateway.py
@@ -1404,13 +1404,18 @@ class TelegramGateway:
由 asyncio.create_task 非同步呼叫,失敗不影響主告警流程。
"""
try:
- risk_emoji = {"critical": "🔴", "medium": "🟡", "low": "🟢"}.get(risk_level, "⚪")
+ # 2026-04-03 ogt: 群組告警格式對齊個人 chat 的 TelegramMessage 模板
+ risk_emoji = RISK_EMOJI_MAP.get(risk_level.lower(), "⚪")
summary = (
- f"{risk_emoji} [{risk_level.upper()}] SRE 告警\n\n"
- f"📦 資源: {resource_name}\n"
- f"🔍 根因: {root_cause}\n"
- f"💡 建議: {suggested_action}\n"
- f"🆔 {approval_id}"
+ f"═══════════════════════════\n"
+ f"{risk_emoji} {risk_level.upper()} | {html.escape(resource_name[:30])}\n"
+ f"═══════════════════════════\n"
+ f"📋 {html.escape(approval_id)}\n"
+ f"━━━━━━━━━━━━━━━━━━━\n"
+ f"🔍 根因: {html.escape(root_cause[:120])}\n"
+ f"🔧 建議: {html.escape(suggested_action[:80])}\n"
+ f"━━━━━━━━━━━━━━━━━━━\n"
+ f"⬇️ OpenClaw 與 NemoClaw 正在分析中..."
)
group_result = await self.send_to_group(text=summary)
group_msg_id = (
@@ -1424,6 +1429,8 @@ class TelegramGateway:
alert_message_id=group_msg_id,
alert_summary=f"[{risk_level.upper()}] 資源: {resource_name}\n根因: {root_cause}\n建議: {suggested_action}",
)
+ else:
+ logger.warning("send_approval_card_to_group_no_msg_id", approval_id=approval_id)
except Exception as e:
logger.error("send_approval_card_to_group_failed", error=str(e))