refactor(sync): drop favorite-folder tracking and deal
This commit is contained in:
1 parent
62abbd7ea1
commit
6c4287b43a
21 files changed
+1390
-2766
No files matched your search
@@ -1611,12 +1611,10 @@ class DashboardQueries:
|
||||
now = self._now()
|
||||
next_runs = {
|
||||
"discover": int(now + cfg.schedule.discover_minutes * 60),
|
||||
"folder_sync": int(now + cfg.schedule.folder_sync_minutes * 60),
|
||||
"snapshot": int(next_daily_run(now, cfg.schedule.snapshot_at)),
|
||||
}
|
||||
for name, key, interval_minutes in (
|
||||
("discover", "discovery", cfg.schedule.discover_minutes),
|
||||
("folder_sync", "folder_sync", cfg.schedule.folder_sync_minutes),
|
||||
):
|
||||
record = tasks.get(key)
|
||||
if isinstance(record, dict) and record.get("finished_at"):
|
||||
@@ -1660,7 +1658,6 @@ class DashboardQueries:
|
||||
"preview": self._kv(conn, "preview:seeded") == "1",
|
||||
"schedule": {
|
||||
"discover_minutes": cfg.schedule.discover_minutes,
|
||||
"folder_sync_minutes": cfg.schedule.folder_sync_minutes,
|
||||
"snapshot_at": cfg.schedule.snapshot_at,
|
||||
"candidate_ttl_days": cfg.schedule.candidate_ttl_days,
|
||||
},
|
||||
|
||||
@@ -30,7 +30,7 @@ function candidateCard(item) {
|
||||
</div>
|
||||
<div class="candidate-actions">
|
||||
${item.url ? `<a class="button ghost" href="${escapeAttr(item.url)}" target="_blank" rel="noreferrer">打开 B 站</a>` : ""}
|
||||
<span class="readonly-note">请在 Telegram 中收藏 / 忽略 / 拉黑</span>
|
||||
<span class="readonly-note">请在 Telegram 中入库 / 忽略 / 拉黑</span>
|
||||
</div>
|
||||
</div>
|
||||
</article>`;
|
||||
@@ -51,7 +51,7 @@ export async function renderCandidates(root) {
|
||||
|
||||
${data.items.length ? `<div class="notice-row">
|
||||
<strong>候选处理</strong>
|
||||
<span>${data.telegram_enabled ? "请在 Telegram 消息中收藏、忽略或拉黑。" : "Telegram 未启用,请使用 CLI 或数据库处理候选。"}</span>
|
||||
<span>${data.telegram_enabled ? "请在 Telegram 消息中入库、忽略或拉黑。" : "Telegram 未启用,请使用 CLI 或数据库处理候选。"}</span>
|
||||
</div>` : ""}
|
||||
|
||||
<section class="panel">
|
||||
|
||||
@@ -30,7 +30,8 @@ function heatStrip(items) {
|
||||
function capacity(folders) {
|
||||
if (!folders.length) return "";
|
||||
return `<section class="panel capacity-panel">
|
||||
${sectionHeader("年度收藏夹")}
|
||||
${sectionHeader("历史收藏夹")}
|
||||
<p class="section-note">系统已不再同步收藏夹;下列统计仅保留历史来源。</p>
|
||||
${folders.map((folder) => `
|
||||
<div class="capacity-row">
|
||||
<div class="capacity-label">
|
||||
@@ -39,7 +40,6 @@ function capacity(folders) {
|
||||
</div>
|
||||
<div class="capacity-track"><span style="width:${Math.min(100, folder.ratio * 100)}%"
|
||||
class="${folder.warning ? "warning" : ""}"></span></div>
|
||||
${folder.warning ? `<p class="warning-text">接近容量上限,请准备新建年度收藏夹。</p>` : ""}
|
||||
</div>`).join("")}
|
||||
</section>`;
|
||||
}
|
||||
@@ -95,7 +95,7 @@ export async function renderHome(root) {
|
||||
${addedNote}
|
||||
<div class="video-list">
|
||||
${added.items.length ? added.items.map((item) => videoCard(item)).join("")
|
||||
: emptyState("最近 7 天没有新入库视频", "收藏夹同步或搜索确认后会出现在这里。")}
|
||||
: emptyState("最近 7 天没有新入库视频", "搜索发现确认或 Telegram 私聊手动入库后会出现在这里。")}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
@@ -47,7 +47,6 @@ export async function renderSystem(root) {
|
||||
<div><span>采集成功</span><strong>${formatCount(health.ok)}</strong></div>
|
||||
<div><span>采集失败</span><strong class="${health.failed ? "danger" : ""}">${formatCount(health.failed)}</strong></div>
|
||||
<div><span>在库</span><strong>${formatCount(counts.active)}</strong></div>
|
||||
<div><span>已取消收藏</span><strong>${formatCount(counts.unfaved)}</strong></div>
|
||||
<div><span>已失效</span><strong>${formatCount(counts.removed)}</strong></div>
|
||||
<div><span>已移出库</span><strong>${formatCount(counts.dropped)}</strong></div>
|
||||
</div>
|
||||
@@ -60,16 +59,16 @@ export async function renderSystem(root) {
|
||||
<section class="panel">
|
||||
${sectionHeader("预计下次运行")}
|
||||
<div class="status-grid">
|
||||
<div><span>收藏夹同步</span><strong>${escapeHtml(formatDateTime(next.folder_sync))}</strong></div>
|
||||
<div><span>搜索发现</span><strong>${escapeHtml(formatDateTime(next.discover))}</strong></div>
|
||||
<div><span>每日快照</span><strong>${escapeHtml(formatDateTime(next.snapshot))}</strong></div>
|
||||
<div><span>调度参数</span><strong>${system.schedule.discover_minutes} / ${system.schedule.folder_sync_minutes} 分钟</strong></div>
|
||||
<div><span>发现周期</span><strong>${system.schedule.discover_minutes} 分钟</strong></div>
|
||||
</div>
|
||||
<p class="section-note">预计时间按配置和最近任务完成时间推算;实际以常驻进程为准。</p>
|
||||
</section>
|
||||
|
||||
<section class="panel">
|
||||
${sectionHeader("收藏夹容量")}
|
||||
${sectionHeader("历史收藏夹")}
|
||||
<p class="section-note">系统已不再同步收藏夹;下列统计仅保留历史来源。收藏夹由人工维护,重排序使用 favsort.py。</p>
|
||||
${(system.folders || []).map((folder) => `
|
||||
<div class="capacity-row">
|
||||
<div class="capacity-label">
|
||||
@@ -78,8 +77,8 @@ export async function renderSystem(root) {
|
||||
</div>
|
||||
<div class="capacity-track"><span style="width:${Math.min(100, folder.ratio * 100)}%"
|
||||
class="${folder.warning ? "warning" : ""}"></span></div>
|
||||
<p class="section-note">最近同步 ${escapeHtml(formatDateTime(folder.last_ids_at))}</p>
|
||||
</div>`).join("") || emptyState("未配置收藏夹")}
|
||||
<p class="section-note">历史快照 ${escapeHtml(formatDateTime(folder.last_ids_at))}</p>
|
||||
</div>`).join("") || emptyState("无历史收藏夹记录")}
|
||||
</section>
|
||||
|
||||
<section class="panel">
|
||||
|
||||
Reference in new issue
Block a user