From 6b231ddf7898fa5b167fa4d6cb8b0fe879523d2c Mon Sep 17 00:00:00 2001 From: SXP-Simon Date: Tue, 10 Feb 2026 22:53:51 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=88=A0=E9=99=A4=20generators.py=20?= =?UTF-8?q?=E4=B8=AD=20generate=5Fimage=5Freport=20=E9=87=8C=E5=86=97?= =?UTF-8?q?=E4=BD=99=E7=9A=84=E6=9C=AC=E5=9C=B0=E6=96=87=E4=BB=B6=E8=AF=BB?= =?UTF-8?q?=E5=8F=96=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/infrastructure/reporting/generators.py | 49 ---------------------- 1 file changed, 49 deletions(-) diff --git a/src/infrastructure/reporting/generators.py b/src/infrastructure/reporting/generators.py index 4eee172..0c5530e 100644 --- a/src/infrastructure/reporting/generators.py +++ b/src/infrastructure/reporting/generators.py @@ -127,55 +127,6 @@ class ReportGenerator(IReportGenerator): # 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() - - # 校验是否为有效图片 (防止发送 "Internal Server Error" 文本) - is_valid_image = False - if file_bytes.startswith(b"\xff\xd8"): # JPEG - is_valid_image = True - elif file_bytes.startswith( - b"\x89PNG\r\n\x1a\n" - ): # PNG - is_valid_image = True - - if not is_valid_image: - try: - text_content = file_bytes.decode( - "utf-8" - ) - if ( - "Error" in text_content - or "Exception" in text_content - ): - logger.error( - f"渲染器生成了错误文件而非图片: {text_content[:200]}" - ) - return None, html_content - except Exception: - pass - logger.warning( - f"生成的图片文件头异常 (非JPEG/PNG): {file_bytes[:10].hex()}" - ) - return None, html_content - - 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} 返回空数据")