Skip to content

feat: 系统休眠期间自动暂停运行中的任务 #28

Description

@CubePlus1

背景

当前 EchoLog 在系统休眠期间可以停止屏幕识别,但已经处于 running 的任务记录仍会继续保持运行状态。这样会导致任务计时和进度条把电脑休眠的时间也算进去,唤醒后需要手动修正。

这和“无操作时跳过截图识别”不是同一件事:这里需要监听 macOS 的真实系统休眠/唤醒事件。

需求

新增“系统休眠时自动暂停运行中任务”的可选能力:

  • 检测系统进入 sleep、唤醒(wake)以及必要时的锁屏/显示器休眠边界。
  • 进入系统休眠时,自动暂停当时处于 running 的 EchoLog 任务。
  • 为自动暂停记录原因,例如 system_sleep,让历史和 UI 能区分手动暂停。
  • 唤醒后默认保持 paused,避免用户不知情地自动恢复任务;如有需要,再提供显式的“唤醒后自动恢复”设置。
  • 不要恢复原本就已经手动暂停的任务。
  • 多个任务同时运行时,行为要一致、幂等,不能重复暂停或产生重复时间段。
  • daemon 在休眠期间退出或重启时,唤醒后也应能通过系统事件/时间线恢复正确状态。

验收标准

  • 一个任务运行中,电脑休眠约 2 小时后唤醒,任务时长不包含这 2 小时。
  • 自动暂停记录可在任务历史中查看,并带有明确原因。
  • 唤醒后任务不会默认自动继续计时,除非用户开启对应设置。
  • 多个运行中任务、重复 sleep/wake 事件、daemon 重启场景都有回归测试。
  • 现有手动 start/pause/resume/stop 行为不受影响。

实现方向

可以考虑增加系统 sleep/wake 事件适配层,将事件转成 EchoLog 内部事件,再由任务服务统一执行批量 pause;同时持久化 pause reason/来源,避免仅依赖内存状态。

这个需求来自实际使用场景:截图识别在休眠期间没有观测,但任务进度条仍可能保持 running。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions