Commit 6ac6dc36ef9a2522777774adb93aaab75460bd7b

Authored by yibo
1 parent 577aaa43

fix(lifelog/summary): 自动纪要周期 1h → 15min(WorkManager 下限)

之前 periodic 是 1 小时一次,体感像「不自动跑」。注意 UI 里的「10 分钟」
是会话切分间隔(多长静音算另一场),不是跑纪要频率,两者无关。

- 周期 1h → 15min(WorkManager periodic 硬下限,做不到正好 10min)。
- ExistingPeriodicWorkPolicy KEEP → UPDATE:否则旧 1h 排程不被新间隔覆盖。
- worker 已自带并发互斥 + 7min 时间预算,15min 频繁触发不会堆积。

验证:jobscheduler 显示 SummaryWorker 下次 ~14min 后触发。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
lifelog-recorder/app/src/main/kotlin/com/lemon/lifelog/summary/SummaryScheduler.kt
... ... @@ -17,15 +17,18 @@ object SummaryScheduler {
17 17  
18 18 fun schedulePeriodic(ctx: Context) {
19 19 val constraints = Constraints.Builder()
20   - .setRequiredNetworkType(NetworkType.NOT_REQUIRED) // hermes 在本机 127.0.0.1
  20 + .setRequiredNetworkType(NetworkType.NOT_REQUIRED) // 后端都在本机
21 21 .setRequiresBatteryNotLow(true)
22 22 .build()
23   - val request = PeriodicWorkRequestBuilder<SummaryWorker>(1, TimeUnit.HOURS)
  23 + // 15 分钟是 WorkManager periodic 的硬下限(做不到正好 10min)。会话关闭后
  24 + // 最多 ~15min 出纪要。worker 自带并发互斥 + 时间预算,频繁触发也不会堆积。
  25 + val request = PeriodicWorkRequestBuilder<SummaryWorker>(15, TimeUnit.MINUTES)
24 26 .setConstraints(constraints)
25 27 .build()
26 28 WorkManager.getInstance(ctx).enqueueUniquePeriodicWork(
27 29 PERIODIC_TAG,
28   - ExistingPeriodicWorkPolicy.KEEP,
  30 + // UPDATE 而非 KEEP:否则旧的 1h 排程不会被新间隔覆盖。
  31 + ExistingPeriodicWorkPolicy.UPDATE,
29 32 request,
30 33 )
31 34 }
... ...