Skip to content

refactor(GuildActivityMonitor): 修复ADB多通知漏检问题并新增OCR检测模式 - #1764

Merged
runhey merged 2 commits into
runhey:devfrom
LGG686:dev-g
Aug 31, 2026
Merged

runhey merged 2 commits into
runhey:devfrom
LGG686:dev-g

Conversation

@LGG686

@LGG686 LGG686 commented Aug 29, 2026

Copy link
Copy Markdown
Contributor
  • 修复ADB检测bug:非活动通知不再覆盖latest_time,避免后续活动通知被漏检
  • 新增use_ocr配置项,启用后通过OCR识别屏幕通知区域文字
  • 统一ADB和OCR模式:均只检测用户启用的活动关键字
  • 拆分run()为check_run_days/build_keyword_map/monitor_activities
  • 清理冗余导入、变量和注释

Sourcery 摘要

通过可配置的 ADB 或 OCR 监控模式,支持可靠的活动通知检测。

新功能:

  • 添加基于 OCR 的通知监控模式,支持配置屏幕区域识别。

错误修复:

  • 防止不相关的通知更新最新的 ADB 时间戳,从而导致遗漏活动通知。

增强功能:

  • 统一 ADB 和 OCR 监控逻辑,使其仅检测已启用的活动关键词。
  • 将监控流程拆分为调度、关键词映射和活动监控职责。
Original summary in English

Sourcery 总结

通过可靠的过滤机制以及可选择的 ADB 或 OCR 检测模式,改进公会活动通知监控。

新功能:

  • 添加可配置的基于 OCR 的公会活动通知监控。

错误修复:

  • 防止无关的 ADB 通知推进已跟踪的时间戳并隐藏后续的活动通知。

增强功能:

  • 统一 ADB 和 OCR 监控逻辑,使其仅检测已启用的活动关键词。
  • 将监控职责拆分为调度、关键词映射和活动检测。
Original summary in English

Summary by Sourcery

Improve guild activity notification monitoring with reliable filtering and selectable ADB or OCR detection modes.

New Features:

  • Add configurable OCR-based monitoring for guild activity notifications.

Bug Fixes:

  • Prevent unrelated ADB notifications from advancing the tracked timestamp and hiding subsequent activity notifications.

Enhancements:

  • Align ADB and OCR monitoring to detect only enabled activity keywords.
  • Separate monitoring into scheduling, keyword mapping, and activity detection responsibilities.

- 修复ADB检测bug:非活动通知不再覆盖latest_time,避免后续活动通知被漏检
- 新增use_ocr配置项,启用后通过OCR识别屏幕通知区域文字
- 统一ADB和OCR模式:均只检测用户启用的活动关键字
- 拆分run()为check_run_days/build_keyword_map/monitor_activities
- 清理冗余导入、变量和注释

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

嘿——我已经审阅了你的更改,看起来很棒!

Sourcery 评估

需要人工审阅者。 错误或不正确的 ADB/OCR 匹配可能会安排并启动错误的活动任务,同时还会持久化一个后续的 GuildActivityMonitor 运行。回滚可以阻止后续检测,但任何已经创建的计划任务都必须清除或允许其完成;影响范围有限且可以修复。


Sourcery 对开源项目免费——如果你喜欢我们的审阅,请考虑分享 ✨
帮助我变得更有用!请在每条评论上点击 👍 或 👎,我会利用这些反馈来改进审阅。
Original comment in English

Hey - I've reviewed your changes and they look great!

Sourcery assessment

Needs a human reviewer. A false or incorrect ADB/OCR match can schedule and launch the wrong activity task, while also persisting a follow-up GuildActivityMonitor run. Reverting stops future detections, but any already-created scheduled jobs must be cleared or allowed to complete; the impact is bounded and repairable.


Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@github-actions

Copy link
Copy Markdown
Contributor

Findings

  • C2 [风险]
    位置:tasks/GuildActivityMonitor/script_task.py:110,ScriptTask.monitor_activities
    原因:监控循环直接使用 time.sleep(interval),且退出时没有恢复旧实现中的 finally 清理 stuck_record,可能留下 PAUSE 状态。
    修改:改用项目现有的可中断等待机制,并用 try/finally 保证所有 TaskEnd、异常和超时路径都执行 stuck_record_clear。
  • C6 [风险]
    位置:tasks/GuildActivityMonitor/config.py:12,GuildActivityMonitorCombatTime.use_ocr
    原因:新增 Pydantic 配置字段但本次未同步 assets/i18n/**/*.json,前端可能显示原始字段名或缺少翻译。
    修改:在对应语言翻译文件中补充 use_ocr 的名称与描述,并确认配置模板/生成配置链路包含该字段。

Generated by PR Review Checklist for #1764 · gpt56 · 2.85 AIC · ⌖ 0.291 AIC · ⊞ 11.9K ·

@github-actions

Copy link
Copy Markdown
Contributor

Change Summary

  • 将 GuildActivityMonitor 的运行日期、关键词映射和监控循环拆分。
  • ADB 仅在活动关键词命中的通知块中更新最新时间,避免无关通知推进时间戳。
  • 新增 配置及通知区域 OCR 资源;OCR/ADB 均按用户启用的活动过滤。
  • 重写长等待期间的 stuck 状态维护逻辑。

Reconstructed Intent

点击此处展开 - 看起来是在保留原有 ADB 监控行为的同时,修复多通知场景下无关通知导致活动漏检,并增加通过游戏通知区域 OCR 触发活动任务的模式。 - 拆分方法也意在让运行日期调度、活动选择和检测执行彼此独立。

Observed Constraints

点击此处展开 - ADB 检测依赖通知文本包含已启用关键词,并以通知块的 时间判断是否为新通知。 - OCR 检测依赖固定 ROI()、OCR 模型可识别通知文字,以及通知区域内容发生可观测变化。 - 监控是长等待流程,需要在结束、触发任务和异常路径上正确维护/清理 stuck 状态。

Intent Alignment

  • ADB 过滤和关键词映射的改动与修复意图基本一致:无关通知不会再更新活动时间,且未启用活动不会被触发。
  • 整体实现仍只部分覆盖 OCR intent,并引入了长等待状态清理方面的额外行为风险:OCR 只比较当前关键字与启动时的 ,同一活动关键字在通知消失后再次出现时不会被识别为新事件;原实现的 清理已移除, 或异常退出后可能遗留 。

Release Risk

  • 风险等级:中
  • OCR 模式对“同关键字再次通知”存在漏触发,尤其在监控启动时该关键字已显示或通知重复出现的场景。
  • 未在监控结束路径统一清理,可能影响后续全局卡死检测或任务状态判断。
  • OCR ROI、识别稳定性和通知出现/消失时序未见链路级验证;默认 ADB 模式受影响较小。

Validation Gaps

点击此处展开 - 建议覆盖 ADB:无关新通知 + 活动新通知、多条活动通知同批出现、未启用关键词命中、时间戳相同/乱序。 - 建议覆盖 OCR:启动时无通知后出现活动、启动时已有活动、同一关键词消失后再次出现、不同关键词连续出现,以及 OCR 误识别/空结果。 - 建议验证监控超时、触发任务和异常退出后 已清除;当前 PR 的 check runs 仍处于进行中,未看到针对上述边界的测试证据。

Generated by PR Review Intent for #1764 · gpt56 · 4.88 AIC · ⌖ 0.297 AIC · ⊞ 11.9K ·

@runhey
runhey merged commit b6b698a into runhey:dev Aug 31, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants