From 9b15766ab3f10fe97ba871f55cd5285551f9a957 Mon Sep 17 00:00:00 2001 From: starmen1265 Date: Mon, 9 Mar 2026 14:49:12 +0800 Subject: [PATCH] =?UTF-8?q?fix(stats):=20=5Fload=5Fstats=5Fdata()=20JSON?= =?UTF-8?q?=20=E8=A7=A3=E6=9E=90=E5=A4=B1=E8=B4=A5=E6=97=B6=E5=A4=87?= =?UTF-8?q?=E4=BB=BD=E6=8D=9F=E5=9D=8F=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - JSON 解析失败时将损坏文件重命名为 .corrupted.{timestamp}.bak - 保留损坏文件以便后续分析和恢复 - 分离 JSONDecodeError 和 IOError 的处理逻辑 --- agents/haonan/workspace/dev-workflow/stats.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/agents/haonan/workspace/dev-workflow/stats.py b/agents/haonan/workspace/dev-workflow/stats.py index 126e51a..fd615b8 100644 --- a/agents/haonan/workspace/dev-workflow/stats.py +++ b/agents/haonan/workspace/dev-workflow/stats.py @@ -34,7 +34,15 @@ def _load_stats_data() -> Dict[str, Any]: try: with open(STATS_FILE, 'r', encoding='utf-8') as f: return json.load(f) - except (json.JSONDecodeError, IOError): + except json.JSONDecodeError as e: + # 备份损坏的文件 + backup_path = STATS_FILE.with_suffix(f'.corrupted.{datetime.now().strftime("%Y%m%d_%H%M%S")}.bak') + try: + STATS_FILE.rename(backup_path) + except OSError: + pass # 备份失败时忽略 + return {"events": [], "metadata": {"created_at": datetime.now().isoformat()}} + except IOError: return {"events": [], "metadata": {"created_at": datetime.now().isoformat()}}