Skip to content

Latest commit

 

History

History
92 lines (70 loc) · 7.16 KB

CHANGELOG.md

File metadata and controls

92 lines (70 loc) · 7.16 KB

版本更新日志

提交范围: 1293ef3e → d273501e | 返回 README

🐛 修复 (Bug Fixes)

调度与任务执行

  • 调度异常自愈重试并在失败时多渠道告警 — 主循环新增 CoroutineExceptionHandler + try/catch 双保险,普通异常退避 30s 自动重试(最多 3 次),超限后强制三路告警(日志 / 通知栏 / 消息渠道)并停止,杜绝"调度器静默死亡、用户完全无感"
  • 消息发送增加超时与备用渠道兜底 — 单渠道 60s 超时;主渠道失败自动切换备用渠道重试;任何异常统一收敛为错误字符串,不再逃出协程被静默吞掉
  • 修复任务调度启动失败时仍标记重置日期 — 启动失败不再写入重置日期,避免当天被误判为"已处理"而整天不执行
  • 任务恢复后补充检测错过的重置日期 — 进程被杀期间跨天时,恢复后补判重置,保证不会漏掉一整天的任务
  • 修复迟到打卡通知误触发后续任务 — 打卡成功通知增加等待窗口校验,窗口外的迟到通知不再点亮后续任务的打卡信号
  • 修复短超时任务误触发兜底截屏 — 停留时长过短时不再触发最后 5 秒兜底截屏
  • 目标应用启动失败时返回状态并统一错误停止通知 — 无法打开目标应用时明确返回失败状态,统一走错误停止流程
  • 打开应用切换至主线程执行并改用 tryEmit 避免事件发送阻塞 — 目标应用启动统一回到主线程;UI 提示类事件流改用 tryEmit,避免无订阅者时 emit 永久挂起,导致调度主循环静默卡死且无法自愈
  • 新增设备执行权互斥,避免定时任务与远程指令并发操作设备 — 抽出统一门闩,定时任务与远程打卡/截屏指令串行占用设备(谁先到谁执行,后到排队等待),避免目标 App 被来回抢占、悬浮窗倒计时错乱、截屏互抢帧以及"打卡成功"通知串味
  • 前台服务重启后自动恢复任务调度状态 — 服务被杀重启后可自动恢复调度,并结合" 当天是否已跑完、是否允许自动循环"判断,避免当天重跑一遍

远程指令

  • 远程指令处理迁移至服务并统一指令回执 — 指令解析收敛到通知监听服务,各指令统一以回执形式反馈结果
  • 修复远程打卡指令误触发并抽取打卡逻辑为独立方法 — 远程打卡独立实现,避免与其它指令分支互相误触发
  • 修复远程打卡返回并增加截图开关 — 远程打卡后正确返回主界面,并新增"远程打卡返回截图"开关
  • 修复折叠通知中远程指令解析失败 — 微信多条消息折叠后正文形如 [4条]昵称: DT#执行任务,解析改为定位 DT# 前缀并截取其后的正文

配置与数据

  • 使用 AtomicFile 原子写入配置文件 — 配置文件改用 AtomicFile 原子写入,写入中断不会损坏 JSON
  • 配置读写统一收敛到 AppConfig — 新增统一配置门面,屏蔽 SharedPreferences 与 JSON 双后端差异;结构化/凭据类数据(邮箱配置、自定义工作日)统一归拢到 ConfigStore,并提供旧数据自动迁移
  • 任务运行期间锁定工作日配置入口并二次校验 — 任务执行中禁止修改工作日配置,导入时二次校验,避免与运行态冲突
  • 重置日期保存统一收敛到任务调度器内部 — 重置日期不再由多处写入,统一由调度器维护,杜绝" 标记了却没真正跑"的假状态

服务与截屏

  • 截屏请求改用 Channel 队列并统一结果回传逻辑 — 截屏请求排队处理,每个请求自带结果对象,避免并发请求互相覆盖
  • 修复截屏请求订阅时序并统一失败结果回传方式 — 修正截屏请求与结果订阅的先后顺序,失败统一回传空结果
  • 截屏授权失效时发送通知并跳过非钉钉剩余任务 — 投影授权失效时给出通知并跳过剩余任务,不再空等到超时
  • 截屏授权失效时明确提示跳过任务数并延长内存告警间隔 — 明确告知跳过了多少个任务;内存告警间隔延长,避免重复打扰
  • 内存告警改用系统低内存判定并补充消息发送失败通知 — 触发条件由 total-avail 占比改为系统低内存阈值(前者含大量可瞬间回收的缓存,会长期虚高导致误报刷屏),并补充消息发送失败时的通知栏兜底
  • 内存预警增加 5 分钟冷却间隔避免重复发送 — 同一次内存紧张不会重复刷屏
  • 省电模式切换时立即响应并调整内存监控频率 — 省电开关即时生效,并相应降低内存监控采样频率
  • 回前台无条件显示蒙层以省电 — 回到前台时始终显示蒙层,避免息屏状态下被误操作
  • 蒙层状态持久化并支持远程指令同步恢复 — 蒙层显示状态持久化,远程息屏/亮屏指令可同步恢复界面状态

节假日与通知记录

  • 启动时初始化并更新中国节假日数据 — App 启动时自动拉取并更新节假日数据
  • 节假日数据按年份缓存并同步当前及次年 — 按年份分键缓存,避免每年重复请求
  • 手动更新节假日支持强制刷新并回退本地缓存 — 手动更新时可强制刷新,失败时回退本地缓存
  • 每日自动清理 90 天前的通知记录 — 通知记录按天清理,避免数据库无限增长

消息渠道

  • 邮箱配置改为测试发送成功后再保存 — 邮箱配置先测试发送,成功后才落盘,避免保存无效配置
  • 企业微信 Webhook 改为测试发送成功后再保存配置 — 企微 Key 同样先验证后保存

🔧 优化 (Improvements)

调度体验

  • 新增每日重置闹钟以支持系统休眠时准确唤醒任务 — 借助系统闹钟在深度休眠下也能准时触发新一轮调度
  • 优化每日重置等待机制并统一日期类型判断 — 重置等待改为定时轮询 + 唤醒通道,统一工作日 / 休息日 / 节假日的判定口径
  • 任务完成提示区分成功失败数量并优化状态展示 — 完成提示明确区分成功、失败与跳过数量
  • 跳过任务提示区分节假日/休息日等具体日期类型 — 跳过原因精确到具体日期类型,不再笼统提示" 今日跳过"
  • 倒计时通知剩余不足一分钟时提高刷新频率 — 临近执行时间时通知刷新更及时

任务导入

  • 任务导入新增配置校验与警告提示 — 导入时校验配置合法性,对缺失或不完整项以警告形式提示

代码清理

  • EmailConfig 可见性由 internal 调整为 public — 便于跨模块直接使用
  • 精简冗余日志与注释并统一代码格式 — 清理冗余日志与注释,统一代码风格
  • 更新 README 文档 — 同步远程指令清单与使用说明
  • 界面重设计原型(已回退移除) — 期间新增了指令页搜索分组、首页内联顶栏等重设计原型页,最终确认未纳入正式版本并整体移除
  • 新增 Bug 汇总排查表(阶段性文档,后续已清理) — 归档一轮线上问题排查结论