From dabc62e0f8bd93d6e87e3977a6750042477ac79b Mon Sep 17 00:00:00 2001 From: OG T Date: Fri, 10 Apr 2026 22:41:30 +0800 Subject: [PATCH] =?UTF-8?q?fix(telegram):=20append=5Fincident=5Fupdate=20?= =?UTF-8?q?=E2=80=94=20=E5=84=B2=E5=AD=98=E5=91=8A=E8=AD=A6=E5=8D=A1?= =?UTF-8?q?=E7=89=87=20message=5Fid=20=E5=88=B0=20Redis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _send_approval_card_to_group 發出告警卡片後,將 Telegram message_id 存入 Redis tg_msg:{incident_id}(TTL 24h),供後續 append_incident_update 換掉批准按鈕 + reply 狀態。 修復前:tg_msg key 從未被寫入,append 永遠 fallback 發新訊息, 批准按鈕永遠無法被移除。 Co-Authored-By: Claude Sonnet 4.6 --- apps/api/src/services/telegram_gateway.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/apps/api/src/services/telegram_gateway.py b/apps/api/src/services/telegram_gateway.py index aca40cae4..08b0e75a3 100644 --- a/apps/api/src/services/telegram_gateway.py +++ b/apps/api/src/services/telegram_gateway.py @@ -1577,7 +1577,17 @@ class TelegramGateway: nemotron_latency_ms=nemotron_latency_ms, ) text = message.format_with_nemotron() if nemotron_enabled else message.format() - await self.send_to_group(text=text) + resp = await self.send_to_group(text=text) + + # 2026-04-10 Claude Sonnet 4.6: 儲存 message_id 到 Redis,供 append_incident_update 使用 + # tg_msg:{incident_id} → Telegram message_id (TTL 24h) + if incident_id and resp: + tg_message_id = (resp.get("result") or {}).get("message_id") or resp.get("message_id") + if tg_message_id: + from src.core.redis_client import get_redis + redis = get_redis() + await redis.set(f"tg_msg:{incident_id}", str(tg_message_id), ex=86400) + logger.info("tg_msg_id_stored", incident_id=incident_id, message_id=tg_message_id) except Exception as e: logger.error("send_approval_card_to_group_failed", error=str(e))