desktop/src-tauri/crates/core/src/schedules.rs
第 1 条注释,第 1 行
desktop/src-tauri/crates/core/src/schedules.rs:1
//! 逐源提取计划(extraction_schedules/schedule_state 接线,M6 余项)。第 2 条注释,第 2 行
desktop/src-tauri/crates/core/src/schedules.rs:2
//!(空行)第 3 条注释,第 3 行
desktop/src-tauri/crates/core/src/schedules.rs:3
//! 约定(scheduling.md):第 4 条注释,第 4 行
desktop/src-tauri/crates/core/src/schedules.rs:4
//! - 逐源频率覆盖全局:固定间隔 15 秒–24 小时,或每日/每周指定时间第 5 条注释,第 5 行
desktop/src-tauri/crates/core/src/schedules.rs:5
//! (time_of_day "HH:MM"、weekday ISO 1–7 周一=1);首版不开放任意 cron/shell;第 6 条注释,第 6 行
desktop/src-tauri/crates/core/src/schedules.rs:6
//! - 启用的自定义计划覆盖全局自动节奏;手动刷新仍包含全部启用来源;第 7 条注释,第 7 行
desktop/src-tauri/crates/core/src/schedules.rs:7
//! - 同源不并发(应用层 refresh 单飞合并);禁用后无自动读取;第 8 条注释,第 8 行
desktop/src-tauri/crates/core/src/schedules.rs:8
//! - 错过时点(休眠/关机)醒来后只补扫一次(next_due 在运行后推进);第 9 条注释,第 9 行
desktop/src-tauri/crates/core/src/schedules.rs:9
//! - 时区固定保存;DST 重复时刻取第一次,缺失时刻取跳变后的首个有效时刻。第 10 条注释,第 16 行
desktop/src-tauri/crates/core/src/schedules.rs:16
/// 逐源间隔允许范围(秒)。第 11 条注释,第 20 行
desktop/src-tauri/crates/core/src/schedules.rs:20
/// 一条逐源计划规则(scope 恒为 "source",schedule_id = "source:<instance_id>")。第 12 条注释,第 24 行
desktop/src-tauri/crates/core/src/schedules.rs:24
/// 规则类型为 interval、daily 或 weekly。第 13 条注释,第 26 行
desktop/src-tauri/crates/core/src/schedules.rs:26
/// interval 专用:15..=86400 秒。第 14 条注释,第 28 行
desktop/src-tauri/crates/core/src/schedules.rs:28
/// daily/weekly 专用:"HH:MM"(24h 制,本地时区语义)。第 15 条注释,第 30 行
desktop/src-tauri/crates/core/src/schedules.rs:30
/// weekly 专用:ISO 1..=7(周一=1,周日=7)。第 16 条注释,第 32 行
desktop/src-tauri/crates/core/src/schedules.rs:32
/// 计划时区(IANA 名;空串在首次保存时固定为用户统计时区)。第 17 条注释,第 48 行
desktop/src-tauri/crates/core/src/schedules.rs:48
/// 规则校验(拒绝任意 cron/越界)。第 18 条注释,第 81 行
desktop/src-tauri/crates/core/src/schedules.rs:81
// tz 非空时必须可解析为 IANA 时区:否则 next_due_ms 静默返回 None,第 19 条注释,第 82 行
desktop/src-tauri/crates/core/src/schedules.rs:82
// 计划永不触发且无任何报错(fail-closed 到 Validation,而非静默失效)。第 20 条注释,第 90 行
desktop/src-tauri/crates/core/src/schedules.rs:90
/// 计算下一次到期毫秒(纯函数)。第 21 条注释,第 91 行
desktop/src-tauri/crates/core/src/schedules.rs:91
/// None 只在:规则未启用、tz 名无法解析(validate_rule 已拦截非空 tz;第 22 条注释,第 92 行
desktop/src-tauri/crates/core/src/schedules.rs:92
/// 空 tz 继承的 fallback_tz 由设置层校验)、或 now 越出时间戳范围。第 23 条注释,第 93 行
desktop/src-tauri/crates/core/src/schedules.rs:93
/// daily/weekly 的重复时刻只取第一次;缺失时刻顺延到跳变后的首个有效时刻。第 24 条注释,第 147 行
desktop/src-tauri/crates/core/src/schedules.rs:147
// 八天内找不到(理论不可达):保守回退。第 25 条注释,第 154 行
desktop/src-tauri/crates/core/src/schedules.rs:154
/// 预览接下来三个计划时间;到期任务由 due_instances 合并,第 26 条注释,第 155 行
desktop/src-tauri/crates/core/src/schedules.rs:155
/// 错过多个时间点时只采集一次。第 27 条注释,第 169 行
desktop/src-tauri/crates/core/src/schedules.rs:169
/// 旧规则随统计时区动态变化;在统计设置再次更改前,第 28 条注释,第 170 行
desktop/src-tauri/crates/core/src/schedules.rs:170
/// 保存规则当前实际使用的时区。第 29 条注释,第 180 行
desktop/src-tauri/crates/core/src/schedules.rs:180
/// upsert 一条逐源计划(含 next_due 重算;config_version 递增)。第 30 条注释,第 187 行
desktop/src-tauri/crates/core/src/schedules.rs:187
// 保存首次使用的默认时区,后续统计时区变化不改变此规则。第 31 条注释,第 240 行
desktop/src-tauri/crates/core/src/schedules.rs:240
/// 删除逐源计划(恢复继承全局)。第 32 条注释,第 254 行
desktop/src-tauri/crates/core/src/schedules.rs:254
/// 读取一条逐源计划(UI 回显)。第 33 条注释,第 298 行
desktop/src-tauri/crates/core/src/schedules.rs:298
/// 到期(计划启用且来源实例也启用)的实例集合:next_due_at_ms <= now。第 34 条注释,第 299 行
desktop/src-tauri/crates/core/src/schedules.rs:299
/// 联查 source_instances.enabled,排除已停用来源。第 35 条注释,第 300 行
desktop/src-tauri/crates/core/src/schedules.rs:300
/// INNER JOIN 同样排除没有对应来源实例的计划。第 36 条注释,第 301 行
desktop/src-tauri/crates/core/src/schedules.rs:301
/// 未访问来源没有运行结果,不推进下次采集时间;第 37 条注释,第 302 行
desktop/src-tauri/crates/core/src/schedules.rs:302
/// 停用或缺失来源不产生虚构的失败记录。第 38 条注释,第 319 行
desktop/src-tauri/crates/core/src/schedules.rs:319
/// 有自定义启用计划的实例集合(全局刷新时排除)。第 39 条注释,第 333 行
desktop/src-tauri/crates/core/src/schedules.rs:333
/// 运行后推进:next_due = 以当前时刻重算;schedule_state 记录成败。第 40 条注释,第 418 行
desktop/src-tauri/crates/core/src/schedules.rs:418
// Lord Howe 只跳变 30 分钟,不能固定增加一小时。第 41 条注释,第 520 行
desktop/src-tauri/crates/core/src/schedules.rs:520
// 每日 UTC 09:00:当前 2027-01-15T08:00:00Z 时,下一次为当日 09:00。第 42 条注释,第 540 行
desktop/src-tauri/crates/core/src/schedules.rs:540
// 2027-01-15 是周五(ISO 5)。周一 09:00 的 weekly ⇒ 下周一 2027-01-18。第 43 条注释,第 593 行
desktop/src-tauri/crates/core/src/schedules.rs:593
// due_instances 联 source_instances.enabled:先注册实例行(采集层 upsert)。第 44 条注释,第 616 行
desktop/src-tauri/crates/core/src/schedules.rs:616
// 未到期。第 45 条注释,第 618 行
desktop/src-tauri/crates/core/src/schedules.rs:618
// 到期。第 46 条注释,第 623 行
desktop/src-tauri/crates/core/src/schedules.rs:623
// 推进后不再到期;custom 集合包含。第 47 条注释,第 629 行
desktop/src-tauri/crates/core/src/schedules.rs:629
// 删除恢复继承。第 48 条注释,第 670 行
desktop/src-tauri/crates/core/src/schedules.rs:670
// 停用来源:到期也不返回(禁用后无自动读取)。第 49 条注释,第 679 行
desktop/src-tauri/crates/core/src/schedules.rs:679
// 重新启用:计划恢复生效。第 50 条注释,第 691 行
desktop/src-tauri/crates/core/src/schedules.rs:691
// 停用计划本身(rule.enabled=false)同样不到期。第 51 条注释,第 715 行
desktop/src-tauri/crates/core/src/schedules.rs:715
// 合法 IANA 名通过。