From cf5eb71ea66d93b7f3b8b6c91fe053f1e2ff44ca Mon Sep 17 00:00:00 2001 From: OG T Date: Fri, 10 Apr 2026 13:58:05 +0800 Subject: [PATCH] =?UTF-8?q?fix(phase34):=20polling=20loop=20=E8=A3=9C?= =?UTF-8?q?=E5=9C=96=E7=89=87=E8=B7=AF=E7=94=B1=20=E2=80=94=20=5Fhandle=5F?= =?UTF-8?q?chat=5Fmessage=20photo=20handler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit text=None 時直接 return,導致圖片訊息被丟棄 在 text 檢查前插入 photo 路由,呼叫 image_analysis_service Co-Authored-By: Claude Sonnet 4.6 --- apps/api/src/services/telegram_gateway.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/apps/api/src/services/telegram_gateway.py b/apps/api/src/services/telegram_gateway.py index 7c9ad268..1e8cc0e1 100644 --- a/apps/api/src/services/telegram_gateway.py +++ b/apps/api/src/services/telegram_gateway.py @@ -3542,6 +3542,26 @@ class TelegramGateway: message_id = message.get("message_id") username = user.get("username") or user.get("first_name") or str(user_id) + # Phase 34 (ADR-067 2026-04-10): 圖片訊息路由 + photos = message.get("photo") + if photos and user_id: + if not user.get("is_bot"): + best = max(photos, key=lambda p: p.get("file_size", 0)) + file_id = best.get("file_id", "") + caption = message.get("caption", "請用繁體中文描述這張圖片") + if file_id: + try: + from src.services.image_analysis_service import get_image_analysis_service + svc = get_image_analysis_service() + await svc.download_and_analyze( + chat_id=str(chat_id), + file_id=file_id, + question=caption, + ) + except Exception as _img_err: + logger.warning("image_analysis_polling_failed", error=str(_img_err)) + return + if not text or not user_id: return