desktop/src-tauri/src/price_refresh.rs
第 1 条注释,第 1 行
desktop/src-tauri/src/price_refresh.rs:1
//! F2 在线刷新(models.dev 社区目录):抓取、原始响应缓存、失败回退与幂等导入。第 2 条注释,第 2 行
desktop/src-tauri/src/price_refresh.rs:2
//!(空行)第 3 条注释,第 3 行
desktop/src-tauri/src/price_refresh.rs:3
//! 约定(docs/design/desktop-usage/pricing.md · 在线刷新设计):第 4 条注释,第 4 行
desktop/src-tauri/src/price_refresh.rs:4
//! - 默认关闭;启用后仅 HTTPS GET models.dev api.json,请求不携带任何本地用量、第 5 条注释,第 5 行
desktop/src-tauri/src/price_refresh.rs:5
//! 主机/来源身份、会话内容或账户密钥;第 6 条注释,第 6 行
desktop/src-tauri/src/price_refresh.rs:6
//! - 原始响应缓存于 `<数据库目录>/price-cache/`,TTL 默认 3 天(1–365 可配),第 7 条注释,第 7 行
desktop/src-tauri/src/price_refresh.rs:7
//! 新鲜期内不发网络请求;第 8 条注释,第 8 行
desktop/src-tauri/src/price_refresh.rs:8
//! - 下载或校验失败回退到上一次成功下载的缓存;无缓存时报错并保留既有快照(A9);第 9 条注释,第 9 行
desktop/src-tauri/src/price_refresh.rs:9
//! - 校验失败的响应不覆盖缓存;导入幂等,不触发既有估算重算。第 10 条注释,第 18 行
desktop/src-tauri/src/price_refresh.rs:18
/// 缓存 TTL 默认值(天)与合法范围。第 11 条注释,第 23 行
desktop/src-tauri/src/price_refresh.rs:23
/// 缓存元数据(sidecar JSON;随文件系统保留,数据库重建不影响)。第 12 条注释,第 28 行
desktop/src-tauri/src/price_refresh.rs:28
/// FNV-1a 内容哈希十六进制(快照 ID 组成部分)。第 13 条注释,第 33 行
desktop/src-tauri/src/price_refresh.rs:33
/// 缓存状态(界面展示新鲜度)。第 14 条注释,第 42 行
desktop/src-tauri/src/price_refresh.rs:42
/// 一次刷新的结果(UI 状态与操作日志)。第 15 条注释,第 45 行
desktop/src-tauri/src/price_refresh.rs:45
/// 状态为 fetched、cache_fresh、fetch_failed_used_cache 或 fetch_failed_no_cache。第 16 条注释,第 54 行
desktop/src-tauri/src/price_refresh.rs:54
/// 可观察的刷新状态(AppState 持有;UI 轮询)。第 17 条注释,第 72 行
desktop/src-tauri/src/price_refresh.rs:72
/// 读取缓存(meta 缺失/损坏时以文件 mtime 重建元数据——下载失败时仍能回退)。第 18 条注释,第 101 行
desktop/src-tauri/src/price_refresh.rs:101
/// 原子写缓存(tmp + rename;仅在内容通过校验后调用)。第 19 条注释,第 117 行
desktop/src-tauri/src/price_refresh.rs:117
/// HTTPS GET models.dev api.json(ureq/rustls;全局超时;响应体有界)。第 20 条注释,第 151 行
desktop/src-tauri/src/price_refresh.rs:151
/// 从给定内容导入快照(幂等);成功返回 (snapshot_id, inserted, already_present)。第 21 条注释,第 173 行
desktop/src-tauri/src/price_refresh.rs:173
/// 在线刷新主流程(可注入抓取函数以便测试)。第 22 条注释,第 174 行
desktop/src-tauri/src/price_refresh.rs:174
//!(空行)第 23 条注释,第 175 行
desktop/src-tauri/src/price_refresh.rs:175
/// `force` 绕过 TTL(手动「立即刷新」)。任何失败都保留既有快照与缓存语义:第 24 条注释,第 176 行
desktop/src-tauri/src/price_refresh.rs:176
/// 抓取/校验失败时回退到上次成功下载的内容导入;无缓存时报错。第 25 条注释,第 186 行
desktop/src-tauri/src/price_refresh.rs:186
// 1) 缓存新鲜且非强制:不发网络请求,幂等导入缓存内容。第 26 条注释,第 210 行
desktop/src-tauri/src/price_refresh.rs:210
// 2) 抓取 + 校验 + 写缓存 + 导入。第 27 条注释,第 215 行
desktop/src-tauri/src/price_refresh.rs:215
// 先校验转换,通过后才覆盖缓存文件。第 28 条注释,第 239 行
desktop/src-tauri/src/price_refresh.rs:239
// 3) 失败回退:上一次成功下载的缓存(A9)。第 29 条注释,第 269 行
desktop/src-tauri/src/price_refresh.rs:269
/// 状态查询用缓存信息(无缓存时为 None)。第 30 条注释,第 274 行
desktop/src-tauri/src/price_refresh.rs:274
/// 命令/调度入口:按当前设置执行一次刷新(后台线程调用;写操作日志)。第 31 条注释,第 306 行
desktop/src-tauri/src/price_refresh.rs:306
/// 采集后,仅启用且缓存过期或缺失时刷新;明确强制刷新时可跳过缓存新鲜度。第 32 条注释,第 307 行
desktop/src-tauri/src/price_refresh.rs:307
/// 并发重入由 AppState.price_refresh 的 running 标记挡下;失败只留痕不阻塞。第 33 条注释,第 357 行
desktop/src-tauri/src/price_refresh.rs:357
/// 最小合成 api.json,包含一个带 canonical 标识的提供商按量价格模型。第 34 条注释,第 360 行
desktop/src-tauri/src/price_refresh.rs:360
/// 真实 HTTPS 抓取冒烟:ureq/rustls 调用过程 + 响应体上限 + 实载转换。第 35 条注释,第 361 行
desktop/src-tauri/src/price_refresh.rs:361
/// 需网络;CI 不运行(`cargo test -p llm-usage-desktop http_fetch_live -- --ignored`)。第 36 条注释,第 402 行
desktop/src-tauri/src/price_refresh.rs:402
// 合成时间为 2026-09-21T14:13:20Z。第 37 条注释,第 405 行
desktop/src-tauri/src/price_refresh.rs:405
/// A9 主路径:下载失败 ⇒ 回退上一次成功下载的缓存继续导入。第 38 条注释,第 410 行
desktop/src-tauri/src/price_refresh.rs:410
// 陈旧缓存(30 天前)第 39 条注释,第 424 行
desktop/src-tauri/src/price_refresh.rs:424
/// A9 无缓存:下载失败 ⇒ 报错且既有快照不受影响。第 40 条注释,第 436 行
desktop/src-tauri/src/price_refresh.rs:436
// 既有快照原样保留第 41 条注释,第 440 行
desktop/src-tauri/src/price_refresh.rs:440
/// TTL 内不发网络请求(缓存时间足够长,减少重复下载)。第 42 条注释,第 445 行
desktop/src-tauri/src/price_refresh.rs:445
// 1 天前 < 默认 3 天 TTL第 43 条注释,第 452 行
desktop/src-tauri/src/price_refresh.rs:452
// force 绕过 TTL:抓取被调用。第 44 条注释,第 463 行
desktop/src-tauri/src/price_refresh.rs:463
/// 校验失败的响应不覆盖缓存,并回退到旧缓存(A9 变体)。第 45 条注释,第 477 行
desktop/src-tauri/src/price_refresh.rs:477
// 缓存内容仍是旧的成功下载。第 46 条注释,第 485 行
desktop/src-tauri/src/price_refresh.rs:485
/// 成功下载:写缓存 + 导入新快照;同内容重复刷新幂等。第 47 条注释,第 498 行
desktop/src-tauri/src/price_refresh.rs:498
// 强制再刷新同内容:快照 ID 相同 ⇒ 幂等跳过。