From 9c839ccce455e1a40cca421202d124d33519b3a7 Mon Sep 17 00:00:00 2001 From: SXP-Simon Date: Tue, 10 Feb 2026 22:12:56 +0800 Subject: [PATCH] =?UTF-8?q?fix(ReportGenerator):=20=E9=99=8D=E4=BD=8E?= =?UTF-8?q?=E5=A4=B4=E5=83=8F=E5=88=86=E8=BE=A8=E7=8E=87=E8=87=B3=2040px?= =?UTF-8?q?=20=E4=BB=A5=E8=A7=A3=E5=86=B3=E6=B8=B2=E6=9F=93=E5=99=A8?= =?UTF-8?q?=E5=86=85=E5=AD=98=E6=BA=A2=E5=87=BA(OOM)=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/infrastructure/reporting/dispatcher.py | 11 ++++++++++- src/infrastructure/reporting/generators.py | 4 ++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/infrastructure/reporting/dispatcher.py b/src/infrastructure/reporting/dispatcher.py index b44948f..2cacecf 100644 --- a/src/infrastructure/reporting/dispatcher.py +++ b/src/infrastructure/reporting/dispatcher.py @@ -69,8 +69,17 @@ class ReportDispatcher: image_url = None html_content = None try: + # 定义头像获取回调,请求小尺寸头像以优化性能 + async def avatar_getter(user_id: str): + if not platform_id: + return None + adapter = self.message_sender.bot_manager.get_adapter(platform_id) + if adapter and hasattr(adapter, "get_user_avatar_url"): + return await adapter.get_user_avatar_url(user_id, size=40) + return None + image_url, html_content = await self.report_generator.generate_image_report( - analysis_result, group_id, self._html_render_func + analysis_result, group_id, self._html_render_func, avatar_getter=avatar_getter ) except Exception as e: logger.error(f"[{trace_id}] Failed to generate image report: {e}") diff --git a/src/infrastructure/reporting/generators.py b/src/infrastructure/reporting/generators.py index f9cc936..b7695f6 100644 --- a/src/infrastructure/reporting/generators.py +++ b/src/infrastructure/reporting/generators.py @@ -479,9 +479,9 @@ class ReportGenerator(IReportGenerator): if ( user_id.isdigit() and 5 <= len(user_id) <= 12 ): # 简单判断是否可能是数字 ID - # 对于数字 ID,使用通用的头像服务作为后备 + # 对于数字 ID,使用通用的头像服务作为后备 (使用小尺寸 spec=40) avatar_url = ( - f"https://q4.qlogo.cn/headimg_dl?dst_uin={user_id}&spec=100" + f"https://q4.qlogo.cn/headimg_dl?dst_uin={user_id}&spec=40" ) else: return (