diff --git a/CHANGELOG.md b/CHANGELOG.md index f72fb05..ac2e4f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,38 @@ # Changelog -## v4.3 - 2025-09-13 - 修复标题多重比分问题 +## v4.4 - 2025-09-14 +### 修复未开始比赛被错误标记为完成 +- 🐛 修复未开始比赛被错误标记为完成的问题 +- ⏰ 添加时间检查:只有已开始的比赛才能被标记为完成 +- 🔧 防止Liquipedia的预设比分导致未来比赛被误标为完成 +- 📝 为未来带比分的比赛添加debug日志 + +**技术细节**: +- 在 `_parse_match()` 方法中添加时间检查逻辑 +- 只有当 `match_datetime <= now` 时才会将比赛标记为完成 +- 新增 `match_has_started` 检查,确保只处理已开始的比赛 +- 例如:修复了 XG vs PV(16:00 UTC)被误标为 "✓ 0-2" 的问题 + +## v4.3 - 2025-09-13 +### 修复标题多重比分问题 +- 🐛 修复多重比分累积:解决了标题中出现多个比分的问题(如 "✓ 2-0 1-0") +- 🔧 改进比分清理逻辑:现在能正确清理所有位置的比分,不只是开头 +- ✅ 修复了9个历史事件的标题格式 + +**技术细节**: - **🐛 修复多重比分累积问题**: - 修复了 `update_event_with_score()` 和 `update_event_with_result()` 方法中的比分清理逻辑 - 原问题:正则表达式 `^(\d+[-:]\d+\s+)+` 无法匹配带有 `✓` 标记的标题,导致比分不断累积 - 现在使用 `\d+-\d+\s+` 清理所有比分,不限于开头位置 - 修复了9个历史事件的标题(如 "✓ 2-0 1-0" 改为 "✓ 2-0") -## v4.2 - 2025-09-13 - 智能合并重复比赛 +## v4.2 - 2025-09-13 +### 智能合并重复比赛 +- 🔀 智能合并重复比赛:自动检测同时间具有共同队伍的比赛并合并(处理队伍名称变体) +- 📝 队伍名称标准化:当发现 "OG" 和 "OG Esports" 这样的变体时,保留更长的完整名称 +- ⚡ 优化数据获取:在获取数据时即进行去重,减少后续处理的复杂度 + +**技术细节**: - **🔀 智能合并重复比赛**: - 新增 `_merge_duplicate_matches()` 方法 - 自动检测同时间(30分钟窗口)具有共同队伍的比赛 @@ -22,7 +47,13 @@ - 减少后续同步过程中的重复检查 - 提高整体同步效率 -## v4.1 - 2025-09-13 - 修复TBD事件重复问题 +## v4.1 - 2025-09-13 +### 修复TBD事件重复问题 +- 🐛 修复TBD事件匹配逻辑:现在可以正确识别并更新部分TBD事件(如 "TBD vs Team" 或 "Team vs TBD") +- 🔧 增强TBD事件清理:删除所有与确认比赛同时间的TBD事件,不再限于 "TBD vs TBD" 格式 +- 🎯 防止创建重复事件:改进事件匹配算法,确保TBD事件被更新而非创建新事件 + +**技术细节**: - **🐛 修复TBD事件匹配逻辑**: - 修复了 `find_existing_event()` 方法中的TBD匹配逻辑 - 原问题:只匹配 "TBD_TBD" 事件键,不匹配 "TBD_NGX" 或 "PV_TBD" 等部分TBD事件 @@ -38,7 +69,15 @@ - 根本原因:TBD事件没有被正确更新,而是创建了新的确认事件 - 解决方案:改进事件匹配算法,支持部分TBD匹配和时间窗口匹配 -## v4.0 - 2025-09-12 - 代码结构重构与错误处理优化 +## v4.0 - 2025-09-05 +### 代码结构重构与错误处理优化 +- 🏗️ 代码结构重构:使用 dataclass 替代字典,提高类型安全性 +- 🔄 增强错误处理:添加自动重试机制(指数退避) +- 📝 专业日志系统:使用 Python logging 模块,支持多级别日志 +- 🛡️ 优雅降级:部分失败不影响整体同步流程 +- ⚡ 代码模块化:拆分大函数,提高可维护性 + +**技术细节**: - **🏗️ 代码结构重构**: - 使用 `@dataclass` 替代字典存储比赛数据,提高类型安全性 - 拆分大函数 `sync_matches_to_calendar()` 为多个专门的方法 @@ -220,10 +259,12 @@ | v4.0 | ✓ | ✓ | ✓ | ✓ | ✓+ | ✓ | | v4.1 | ✓ | ✓ | ✓ | ✓ | ✓++ | ✓ | | v4.2 | ✓ | ✓ | ✓ | ✓ | ✓++ | ✓ | +| v4.3 | ✓ | ✓ | ✓ | ✓ | ✓++ | ✓ | +| v4.4 | ✓ | ✓ | ✓ | ✓ | ✓++ | ✓ | ## 使用建议 -推荐使用最新的 v4.2 版本,它包含智能合并重复比赛功能并提供更好的错误处理: +推荐使用最新的 v4.4 版本,它修复了未开始比赛被错误标记为完成的问题: ```bash python sync_dota2_matches.py --calendar-id "YOUR_CALENDAR_ID" ``` diff --git a/README.md b/README.md index ea4bfb5..953f2eb 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,7 @@ -# Dota 2 Calendar Sync v4.3 +# Dota 2 Calendar Sync v4.4 自动从 Liquipedia 获取 Dota 2 Tier 1 比赛信息并同步到 Google Calendar,支持自动更新比赛结果、时间变更、智能管理TBD占位事件、自动清理过期和重复比赛。 -## 更新日志 - -### v4.3 (2025-09-13) -- 🐛 修复多重比分累积:解决了标题中出现多个比分的问题(如 "✓ 2-0 1-0") -- 🔧 改进比分清理逻辑:现在能正确清理所有位置的比分,不只是开头 -- ✅ 修复了9个历史事件的标题格式 - -### v4.2 (2025-09-13) -- 🔀 智能合并重复比赛:自动检测同时间具有共同队伍的比赛并合并(处理队伍名称变体) -- 📝 队伍名称标准化:当发现 "OG" 和 "OG Esports" 这样的变体时,保留更长的完整名称 -- ⚡ 优化数据获取:在获取数据时即进行去重,减少后续处理的复杂度 - -### v4.1 (2025-09-13) -- 🐛 修复TBD事件匹配逻辑:现在可以正确识别并更新部分TBD事件(如 "TBD vs Team" 或 "Team vs TBD") -- 🔧 增强TBD事件清理:删除所有与确认比赛同时间的TBD事件,不再限于 "TBD vs TBD" 格式 -- 🎯 防止创建重复事件:改进事件匹配算法,确保TBD事件被更新而非创建新事件 - -### v4.0 (2025-09-05) -- 🏗️ 代码结构重构:使用 dataclass 替代字典,提高类型安全性 -- 🔄 增强错误处理:添加自动重试机制(指数退避) -- 📝 专业日志系统:使用 Python logging 模块,支持多级别日志 -- 🛡️ 优雅降级:部分失败不影响整体同步流程 -- ⚡ 代码模块化:拆分大函数,提高可维护性 - ## 功能 - 自动获取 Liquipedia 上的 Tier 1 级别 Dota 2 比赛