feat(pkglist): 去重 + 状态持久 + UI 弹窗风格统一
CI / Backend tests (push) Canceled after 0s
CI / Frontend build (push) Canceled after 0s

后端:
- seedIfNeeded/addPkg/updateFromAllSources 插入前检测 storage 是否已缓存同名包,已缓存直接置 done
- 新增 markDoneByName + dedupPkgList 函数
- pkglist 表新增 cached 列区分「已在缓存」vs「清单拉取完成」
- 新增 POST /api/pkglist/dedup 接口

前端:
- api/index.js 新增 dedupPkgList()
- store 暴露 dedupPkgList action,doRefresh 初始化时检测 sync-latest 运行状态并恢复轮询
- PkgListDrawer.vue 增加「去重」按钮,状态列区分「已在缓存」/「已完成」
- SearchView.vue 一键拉取弹窗改为与整体一致的自定义风格(确认+结果弹窗)
- 按钮已按 syncProgress.running 显示旋转动画
This commit is contained in:
yinjun.chen1
2026-09-21 22:45:12 +08:00
parent b0ac90ca9e
commit 84c9a11e6f
7 changed files with 276 additions and 43 deletions
+7
View File
@@ -70,6 +70,13 @@ if (!logCols.includes('action')) {
db.exec("ALTER TABLE logs ADD COLUMN action TEXT DEFAULT 'clean'")
}
// 旧库迁移 v2:pkglist 增加 cached 列——标记「写入清单时 storage 已缓存该包」(done 的来源之一,
// 与「通过清单拉取完成」区分,前端据此展示「已在缓存 / 已完成」两种 done)
const pkglistCols = db.prepare('PRAGMA table_info(pkglist)').all().map(c => c.name)
if (!pkglistCols.includes('cached')) {
db.exec("ALTER TABLE pkglist ADD COLUMN cached INTEGER DEFAULT 0")
}
// 旧库迁移 v1:历史日志/忽略记录的时间戳是 UTC,统一转成北京时间;settings 标志位防重复执行
function migrateTimezone() {
if (getSetting('timezone_migrated_v1')) return