fix(monitor): 博主改名之后,旧作品上的名字也跟着改
Deploy VitePress site to Pages / build (push) Canceled after 0s
Deploy VitePress site to Pages / Deploy (push) Canceled after 0s

昵称是**博主级**的属性,而作品是逐条刷的:一个博主只有落在采集窗口里的那几条会被
重刷,掉出窗口的老作品会一直留着旧名字。于是改名之后库里一半新一半旧 ——

* 作品栏组头取的是该博主名下作品的 max(name),**恰好可能取到旧的那个**(比如从
  「BBB」改成「AAA」,max 还是 BBB);
* 导出和 SQL 直接看到旧名字。

两处修:

1. ingest 收完这一轮之后,把这一轮看到的 (博主, 昵称) 铺到该博主在本任务下的
   **全部**作品上。带上 `!= name` 让没变化的不产生写入。只限本任务 —— 另一个任务里
   的同一个人是另一条跟踪线。
2. `list_creators` 的昵称**优先取账号快照**:那一行每次采集都从资料接口重写,是
   最新的一份;小红书那条路没有快照,才退回作品上的名字。

顺带把两份 SQL 里的 COALESCE 顺序调成一致(不然查出来还是旧名字)。
This commit is contained in:
2026-10-11 10:08:58 +08:00
parent af21288dde
commit 36f41450ae
6 changed files with 138 additions and 8 deletions
+7 -4
View File
@@ -945,10 +945,13 @@ async def list_creators(
{
"task_id": row_task,
"creator_hash": creator_hash,
# 昵称优先取作品的(那是界面上本来就在用的),快照的兜底 —— 没有作品
# 的博主只剩快照这一个来源。
"creator_name": (work_row or {}).get("creator_name")
or (stat.nickname if stat else ""),
# 昵称**优先取账号快照**里的。快照每次采集都从资料接口重写一遍,是这一行
# 最新的一份;作品上的名字只会跟着「这一轮采到的那几条」更新,掉出采集
# 窗口的老作品可能还留着旧名字。博主改名之后取作品的会显示旧名。
# 没有快照的(小红书那条路不产生快照)才退回作品上的名字。
"creator_name": (stat.nickname if stat else "")
or (work_row or {}).get("creator_name")
or "",
"creator_alias": aliases.get(
(task_platform.get(row_task, ""), creator_hash), ""
),