From 69b404bb1ffec0c02eece0a9774954e322dc89f3 Mon Sep 17 00:00:00 2001 From: SXP-Simon Date: Tue, 10 Feb 2026 21:58:39 +0800 Subject: [PATCH] =?UTF-8?q?fix(ReportGenerator):=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E5=9B=BE=E7=89=87=E8=BD=AC=20Base64=20?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8C=E5=BD=BB=E5=BA=95=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=20Docker=20=E7=8E=AF=E5=A2=83=E4=B8=8B=20OneBot=20=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E5=8F=91=E9=80=81=E5=9B=BE=E7=89=87=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/infrastructure/reporting/generators.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/infrastructure/reporting/generators.py b/src/infrastructure/reporting/generators.py index 055d1e7..fc5c3b0 100644 --- a/src/infrastructure/reporting/generators.py +++ b/src/infrastructure/reporting/generators.py @@ -124,6 +124,21 @@ class ReportGenerator(IReportGenerator): elif isinstance(image_data, str): # Fallback: 如果返回的是字符串(可能是URL或路径) logger.info(f"图片生成成功 (String): {image_data}") + + # 尝试读取文件转 Base64 (解决 Docker 路径不可达问题) + if not image_data.startswith(("http://", "https://")): + try: + import os + if os.path.exists(image_data): + with open(image_data, "rb") as f: + file_bytes = f.read() + b64 = base64.b64encode(file_bytes).decode("utf-8") + image_url = f"base64://{b64}" + logger.info(f"本地图片转 Base64 成功: {len(file_bytes)} bytes") + return image_url, html_content + except Exception as e: + logger.warning(f"尝试读取本地图片失败: {e}") + return image_data, html_content logger.warning(f"渲染策略 {image_options} 返回空数据")