第 1 条注释,第 41 行
desktop/src/App.svelte:41
/** 两个自然日/当天自动切小时粒度,以设置时区的日期为边界。 */
第 2 条注释,第 55 行
desktop/src/App.svelte:55
/** 今日独立查询(任务 D8):当日 first=last 的 summary,供今日分区使用。 */
第 3 条注释,第 66 行
desktop/src/App.svelte:66
// ---- 主题(跟随系统/亮色/暗色):data-theme 属性 + isDark 派生(供 ECharts)。 ----
第 4 条注释,第 67 行
desktop/src/App.svelte:67
/** 系统深色偏好实时状态(change 时更新;system 模式下系统切换立即重绘图表)。 */
第 5 条注释,第 77 行
desktop/src/App.svelte:77
/** 生效主题:设置显式 light/dark 优先,其余(含未知值)回落 system。 */
第 6 条注释,第 81 行
desktop/src/App.svelte:81
/** 是否深色(显式 dark,或 system 且系统偏好深色);传给各 ECharts 组件。 */
第 7 条注释,第 84 行
desktop/src/App.svelte:84
// system = 移除 data-theme(themes.css 的 prefers-color-scheme 媒体查询接管)。
第 8 条注释,第 91 行
desktop/src/App.svelte:91
第 9 条注释,第 100 行
desktop/src/App.svelte:100
/** 用户切换/导入等不改变 query 的强制重查信号(传给子组件)。 */
第 10 条注释,第 103 行
desktop/src/App.svelte:103
// ---- 面板布局(任务 E10/E11):拖拽顺序 + 显示/隐藏,按页持久化 localStorage。 ----
第 11 条注释,第 158 行
desktop/src/App.svelte:158
第 12 条注释,第 189 行
desktop/src/App.svelte:189
/** 趋势页面板顺序:费用估算未启用时隐藏费用面板(布局持久化不动)。 */
第 13 条注释,第 203 行
desktop/src/App.svelte:203
/** 面板生效跨列数:编辑模式把手拖出的档位优先,其次面板默认值。 */
第 14 条注释,第 209 行
desktop/src/App.svelte:209
/** 面板生效高度(px;未调整过 = 自适应)。 */
第 15 条注释,第 214 行
desktop/src/App.svelte:214
/** resize 把手拖动结束:记录 span/height 并持久化布局。 */
第 16 条注释,第 221 行
desktop/src/App.svelte:221
/** 重置布局(编辑模式):清除当前页 localStorage 记录,恢复默认顺序/尺寸/显隐。 */
第 17 条注释,第 236 行
desktop/src/App.svelte:236
/** 布局编辑模式:仅此时面板可拖拽/调整显隐(总览与趋势共用一个开关)。 */
第 18 条注释,第 242 行
desktop/src/App.svelte:242
* 面板拖拽(Pointer Events;2026-09-26 修复“完全无法拖动”):
* WebView2 在 Tauri 默认 dragDropEnabled=true 时拦截 HTML5 drag 事件,
* dragstart/drop 根本不触发。改为 pointerdown(Panel 内)+ window 级
* pointermove/pointerup/pointercancel:move 时 elementsFromPoint 命中
* 落点面板(data-panel-group/-index),抬起时交换 order 并持久化。
第 19 条注释,第 259 行
desktop/src/App.svelte:259
// 命中其它分组/页面区域:落点回退为自身(松手不产生交换)。
第 20 条注释,第 352 行
desktop/src/App.svelte:352
// 同一费用查询为当前页面的汇总、模型行和曲线提供数据。
第 21 条注释,第 390 行
desktop/src/App.svelte:390
// 用量按小时显示时,费用曲线仍按日;包含该日所有可见小时。
第 22 条注释,第 435 行
desktop/src/App.svelte:435
/** 总览历史与趋势共用周期选区;总览再次点击同一点取消。 */
第 23 条注释,第 448 行
desktop/src/App.svelte:448
// 下拉选项 = 用户列表 +(当前用户不在列表时合成一项,如初始 default)。
第 24 条注释,第 457 行
desktop/src/App.svelte:457
// 今日饼图数据:total_tokens 占比(unknown 归“未知”;0 值不参与)。
第 25 条注释,第 474 行
desktop/src/App.svelte:474
// 趋势页饼图数据:当前时间范围 summary 的模型/Agent total_tokens 占比。
第 26 条注释,第 518 行
desktop/src/App.svelte:518
第 27 条注释,第 521 行
desktop/src/App.svelte:521
* 选中时间点汇总卡(结构同今日汇总):总调用、输入(总量 + 命中/未命中分解)、
* 输出、总 token、缓存命中率、会话数;周/月粒度附加活动天数。
第 28 条注释,第 581 行
desktop/src/App.svelte:581
/** 主查询 + 今日查询(同一次用户交互/刷新内成对加载)。
* 查询键与数据修订均未变化时保留现有对象引用:派生值/图表不重算,
* 避免空闲轮询导致的整体重绘闪烁(2026-09-26 用户反馈)。 */
第 29 条注释,第 634 行
desktop/src/App.svelte:634
/** 用户切换/导入等不改变 query 的数据重载(summary/heatmap/sources 都要刷新)。 */
第 30 条注释,第 643 行
desktop/src/App.svelte:643
第 31 条注释,第 663 行
desktop/src/App.svelte:663
// summary/heatmap 后端按当前用户过滤,切换后必须重拉。
第 32 条注释,第 696 行
desktop/src/App.svelte:696
// ---- 采集状态轮询与数据自动刷新 ----
第 33 条注释,第 697 行
desktop/src/App.svelte:697
/** 上次观察到"已结束"的采集完成时间(变化 = 一次采集结束,需要重查数据)。 */
第 34 条注释,第 699 行
desktop/src/App.svelte:699
/** 已加载 summary 的查询键 + 数据修订(loadSummary 跳过重复赋值用)。 */
第 35 条注释,第 702 行
desktop/src/App.svelte:702
* 轮询采集状态:只在采集刚结束(running→结束)或完成时间变化(计划任务/
* headless 触发的采集结束)时重查数据;空闲轮询仅更新进度条状态,
* 不触发查询与图表重建(修复总览页周期性闪烁)。
第 36 条注释,第 708 行
desktop/src/App.svelte:708
// 请求已接受时,工作线程可能尚未设置 running 标记。
第 37 条注释,第 729 行
desktop/src/App.svelte:729
第 38 条注释,第 735 行
desktop/src/App.svelte:735
* 状态轮询间隔自适应:采集中 500 ms,空闲 10 秒
* (仅探测系统任务/调度器启动的采集;状态查询本身不重绘图表)。
第 39 条注释,第 746 行
desktop/src/App.svelte:746
// ---- 顶部数据自动刷新间隔(UI 定时重查;localStorage 持久化,默认 5 分钟)。 ----
第 40 条注释,第 748 行
desktop/src/App.svelte:748
// 键带 v2:默认值由 60 秒改为 300 秒(2026-09-26),旧默认的存量记录作废,
第 41 条注释,第 749 行
desktop/src/App.svelte:749
// 已运行过的界面首次启动回落新默认而非保留旧默认 60。
第 42 条注释,第 767 行
desktop/src/App.svelte:767
第 43 条注释,第 808 行
desktop/src/App.svelte:808
第 44 条注释,第 814 行
desktop/src/App.svelte:814
// 查询条件变化后防抖 200ms 重查,并清空可能已失效的时间点选择。
第 45 条注释,第 833 行
desktop/src/App.svelte:833
// 时区/周起始影响统计范围但不改查询键,需强制重查。
第 46 条注释,第 835 行
desktop/src/App.svelte:835
// F2:费用估算配置变化后既有明细尚未估过价——启用时自动触发一次后台重算
第 47 条注释,第 836 行
desktop/src/App.svelte:836
// 重复重算不会重复计价;未启用时跳过,采集也不回填。
第 48 条注释,第 854 行
desktop/src/App.svelte:854
// 采集中:ETA 文案(null/不可估时为空串,模板据此隐藏)。
第 49 条注释,第 918 行
desktop/src/App.svelte:918
<!-- 数据自动重查间隔(与后台采集间隔独立;关闭 = 只手动刷新)。 -->
第 50 条注释,第 1082 行
desktop/src/App.svelte:1082
<!-- 范围/粒度只影响历史趋势区(今日数据独立查询),故放在该分区内侧而非页面顶部。 -->
第 51 条注释,第 1105 行
desktop/src/App.svelte:1105
<!-- 选中时间点汇总(点击任一历史趋势图的数据点出现;结构同今日汇总)。 -->
第 52 条注释,第 1132 行
desktop/src/App.svelte:1132
<!-- 选中时间点的模型/Agent 占比饼图(chart_series 数据,采用相同筛选条件)。
加载占位与饼图同高度、换选保留旧图原地换数据,避免布局跳动。 -->
第 53 条注释,第 1194 行
desktop/src/App.svelte:1194
<!-- 范围汇总面板(图表区上方固定位置):7 张小卡片,取 summary.totals。 -->
第 54 条注释,第 1345 行
desktop/src/App.svelte:1345
第 55 条注释,第 1380 行
desktop/src/App.svelte:1380
/* 顶部自动刷新间隔(与采集进度条/刷新按钮同行)。 */
第 56 条注释,第 1389 行
desktop/src/App.svelte:1389
/* 采集中:简洁进度条(宽度 = 百分比)+ 百分比/剩余时间文案。 */
第 57 条注释,第 1467 行
desktop/src/App.svelte:1467
/* 今日/历史醒目分区标题(任务 D8);历史区标题右侧内联范围/粒度筛选(只影响该区)。 */
第 58 条注释,第 1490 行
desktop/src/App.svelte:1490
/* 历史趋势区标题右侧的范围/粒度下拉(与今日数据区视觉分离)。 */
第 59 条注释,第 1504 行
desktop/src/App.svelte:1504
/* 选中时间点汇总(历史趋势区内):标题行 + 复用 summary-cards 卡片网格。 */
第 60 条注释,第 1538 行
desktop/src/App.svelte:1538
/* 选中时间点饼图行:模型/Agent 两列卡片(窄屏叠一行一个)。 */
第 61 条注释,第 1551 行
desktop/src/App.svelte:1551
/* 与加载占位和空数据状态保持同高,减少切换时间点时的布局变化。 */
第 62 条注释,第 1559 行
desktop/src/App.svelte:1559
/* 饼图加载占位:高度与 SharePie 190px 一致,加载完成不产生布局跳动。 */
第 63 条注释,第 1565 行
desktop/src/App.svelte:1565
/* 面板 6 列格子布局(任务 E10);跨列数由 Panel 的 span 类决定。 */
第 64 条注释,第 1573 行
desktop/src/App.svelte:1573
/* 指标行保持紧凑;账号额度使用独立的整行区域。 */