fix(stats): get_stats() 改用 .get() 访问字段

- 使用 .get() 安全访问 event 字段
- 为可能缺失的字段提供默认值
- 防止 KeyError 异常
This commit is contained in:
2026-03-09 14:48:45 +08:00
parent e5304534e4
commit d26ac7a88c
@@ -149,15 +149,18 @@ def get_stats(mode: Optional[str] = None) -> Dict[str, Any]:
}
if events:
stats["first_event"] = events[0]["timestamp"]
stats["last_event"] = events[-1]["timestamp"]
stats["first_event"] = events[0].get("timestamp")
stats["last_event"] = events[-1].get("timestamp")
for event in events:
stats["events_by_type"][event["event_type"]] += 1
stats["events_by_mode"][event["mode"]] += 1
event_type = event.get("event_type", "unknown")
event_mode = event.get("mode", "unknown")
stats["events_by_type"][event_type] += 1
stats["events_by_mode"][event_mode] += 1
# 按日期统计
date = event["timestamp"][:10] # YYYY-MM-DD
timestamp = event.get("timestamp", "")
date = timestamp[:10] if timestamp else "unknown" # YYYY-MM-DD
stats["events_by_date"][date] += 1
# 转换 defaultdict 为普通 dict