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 (