Commit Graph

5 Commits

Author SHA1 Message Date
starmen1265 e136939a25 fix(stats): 添加文件锁(fcntl.flock)防止并发竞态
- 添加 _acquire_lock() 和 _release_lock() 辅助函数
- _load_stats_data() 和 _atomic_write() 使用文件锁保护
- 使用独立的 .lock 文件作为锁
- 防止并发读写导致数据损坏
2026-03-09 14:50:03 +08:00
starmen1265 9b15766ab3 fix(stats): _load_stats_data() JSON 解析失败时备份损坏文件
- JSON 解析失败时将损坏文件重命名为 .corrupted.{timestamp}.bak
- 保留损坏文件以便后续分析和恢复
- 分离 JSONDecodeError 和 IOError 的处理逻辑
2026-03-09 14:49:12 +08:00
starmen1265 d26ac7a88c fix(stats): get_stats() 改用 .get() 访问字段
- 使用 .get() 安全访问 event 字段
- 为可能缺失的字段提供默认值
- 防止 KeyError 异常
2026-03-09 14:48:45 +08:00
starmen1265 e5304534e4 fix(stats): record_event() 添加 metadata 类型校验
- 如果 metadata 不是 dict 类型则抛出 TypeError
- 防止传入非法类型导致后续处理失败
2026-03-09 14:48:17 +08:00
starmen1265 3efe98e17d feat: 添加 Cross 模式统计报告功能
- 添加 stats.py 统计模块
- 添加 dev_workflow.py CLI 工具
- 实现 record_event() 记录事件
- 实现 get_stats() 生成报告
- 支持敏感数据自动过滤
- 使用原子写入保证数据安全
- 添加 README 文档
2026-03-09 14:44:04 +08:00