diff --git a/apps/api/src/services/decision_manager.py b/apps/api/src/services/decision_manager.py index 4ae43b85..fe7ac1af 100644 --- a/apps/api/src/services/decision_manager.py +++ b/apps/api/src/services/decision_manager.py @@ -182,10 +182,16 @@ async def _push_decision_to_telegram( try: from src.services.alert_rule_engine import match_rule as _match_rule _labels = incident.signals[0].labels if incident.signals else {} + # 2026-04-12 ogt: Incident 沒有 title 欄位,用 signal annotation summary + _sig_msg = ( + incident.signals[0].annotations.get("summary", "") or + incident.signals[0].annotations.get("description", "") or + incident.signals[0].alert_name + ) if incident.signals else "" _rule_resp = _match_rule({ "labels": _labels, "alert_type": _labels.get("alertname", target), - "message": incident.title or "", + "message": _sig_msg, "target_resource": target, "namespace": incident.signals[0].labels.get("namespace", "awoooi-prod") if incident.signals else "awoooi-prod", "severity": risk_level, @@ -244,9 +250,14 @@ async def _push_decision_to_telegram( if _notif_type == NotificationType.TYPE_1: # 純資訊通知 — 無按鈕 + # 2026-04-12 ogt: Incident 沒有 title 欄位,用 alertname + _info_title = ( + incident.signals[0].labels.get("alertname", "") or + incident.signals[0].alert_name + ) if incident.signals else "告警通知" tg_result = await gateway.send_info_notification( incident_id=incident.incident_id, - title=incident.title or "告警通知", + title=_info_title or "告警通知", message=reasoning[:200] if reasoning else description[:200], alertname=incident.signals[0].labels.get("alertname", "") if incident.signals else "", severity="info",