跳转到内容

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 相同 ⇒ 幂等跳过。