fix(monitor): 作品栏只显示每个博主最新的 N 条(库里一条不删)
Deploy VitePress site to Pages / build (push) Canceled after 0s
Deploy VitePress site to Pages / Deploy (push) Canceled after 0s

原来 max_notes_count **只**被当作每轮拉取的条数,落库时从不删任何东西,列表也不按
博主截断。于是超出的作品会一直堆着(21、22、23…),而掉出采集窗口的那些**再也采不到**
—— 指标冻在最后一次,看上去却和正在跟踪的作品一模一样。界面上那句「仅显示每个博主
最新的 N 条作品」是假的,后端根本没做这个截断。

现在界面按窗口显示:库是账本,界面是窗口。趋势图、报表、**导出**读的仍然是全量 ——
导出是数据,少几行就是在丢东西,所以 `windowed` 默认关,只有 /monitor/notes 打开。

窗口按**发布时间**排序,不是「最后一次见到」:降级路径(作品列表被风控挡住)会把所有
已知作品都刷一遍,那样每个人的 last_seen_at 都一样,按它开窗等于没开。解析不出日期的
作品**永不隐藏** —— 因为读不出日期就让一条作品消失,比多显示一条糟得多。

只对博主模式开窗;笔记模式的目标本身就是一件作品。
This commit is contained in:
2026-10-11 08:30:10 +08:00
parent dbfbf32225
commit d52b6942ac
3 changed files with 264 additions and 3 deletions
+5 -1
View File
@@ -133,7 +133,11 @@ async def list_notes(
):
async with get_session() as session:
return {
"notes": await service.list_notes(session, task_id, only_new, limit, platform),
# windowed=True:作品栏是「正在盯的窗口」,每个博主只画最新 max_notes_count 条。
# 库里的全量还在,趋势图/报表/导出读的都是它。
"notes": await service.list_notes(
session, task_id, only_new, limit, platform, windowed=True
),
# 博主**单独给一份**,而不是让前端从作品里推。作品推不出「一条作品都没有的
# 博主」—— 那正是最该显示的一类(还在涨粉,只是最近没发)。
"creators": await service.list_creators(session, task_id, platform),