feat(sessions): 一键归档 + 归档用量快照落库 — bump to v0.7.18
Release / Version consistency (push) Canceled after 0s
Release / Build (macos-latest) (push) Canceled after 0s
Release / Build (ubuntu-latest) (push) Canceled after 0s
Release / Build (windows-latest) (push) Canceled after 0s
Release / Attach macOS install script (push) Canceled after 0s

- archive_sessions_before:按 updatedAt 截止点批量元数据归档(1月/半月/周/指定日期)
- 归档瞬间聚合 wire.jsonl 用量按天×模型快照进 SQLite archived_sessions 表
- 统计合并:文件已删除的归档会话由快照合成 UsageRecord 注入
  get_summary/日明细,趋势/热力图/模型统计全兼容且绝不双计
- models-dev 快照同步 2026-09-14(7784 模型);pricing 测试跟随
  deepseek-v4-flash 调价(0.15/0.60)
- cargo test 129 通过(含端到端归档→删目录→统计保留用例)、tsc 零错误
This commit is contained in:
KimiSwitch Dev committed 2026-09-14 01:52:21 +08:00
1 parent 00cf194b5c
commit 0f421b4e44
15 files changed
+6264 -943

No files matched your search

+13
View File
@@ -2,6 +2,7 @@ import { useCallback, useEffect, useState } from "react";
import { invoke } from "@tauri-apps/api/core";
import type {
ActionResponse,
BulkArchiveResult,
PreviewResult,
SessionStatusFilter,
SessionsResult,
@@ -54,6 +55,17 @@ export function useSessions() {
[refresh]
);
const archiveBefore = useCallback(
async (cutoffMs: number) => {
const result = await invoke<BulkArchiveResult>("archive_sessions_before", {
cutoffMs,
});
await refresh();
return result;
},
[refresh]
);
const deleteSession = useCallback(
async (workspaceId: string, sessionId: string, sessionStatus?: string) => {
await invoke<ActionResponse>("delete_session", {
@@ -100,6 +112,7 @@ export function useSessions() {
refresh,
archiveSession,
unarchiveSession,
archiveBefore,
deleteSession,
deleteWorkspace,
getPreview,