feat(monitor): 作品栏和评论栏显示作品的发布日期
需求:抖音和小红书都要能看到作品的发布日期。 `MonitorNote.published_at` 其实**一直在库里**(ingest 早就按平台取:小红书 time、 抖音 create_time),只是从来没往 API 和界面上透 —— 后端序列化没这个键,前端类型里 也没有,所以界面上只有「首次发现」。 * 后端:list_notes 的序列化补上 published_at;_note_meta_map 也带上,于是 list_comments 多一个 note_published_at,分组接口的桶多一个 published_at。 * 前端:NotesTable 新增「发布日期」列(要让分组表头的 colspan 从 +4 变 +5); 评论栏作品那一层在标题旁显示日期 —— 同名作品不少,日期能帮着认。 * 新增 formatDate:发布日期问的是「哪一天发的」,绝对日期比「3天前」好认,也不会 每天看都在变。具体到分钟的版本放在 title 里,悬停可见。 刻意和「首次发现」分开:前者是作者发布的那天,后者是我们第一次看到它的那天。把一个 早就存在的作品加进监控时,两者能差好几个月 —— 测试里就用不同的值把这两者钉住。 顺带修正一处过时注释:前端类型里还写着 creator_name 是「已脱敏的昵称」, 脱敏已经在上一个提交里关掉了(config.MASK_NICKNAME)。 测试 +2:桶要带发布日期;作品列表接口要带,且它不等于 first_seen_at。
This commit is contained in:
@@ -404,8 +404,14 @@ async def list_notes(
|
||||
"note_id": note.note_id,
|
||||
"title": note.title,
|
||||
"note_url": note.note_url,
|
||||
# 作品的发布时间(爬虫侧:小红书叫 time、抖音叫 create_time)。
|
||||
# 和 first_seen_at 不是一回事 —— 那是**我们第一次看到它**的时间;把一个
|
||||
# 早就存在的作品加进监控时,两者能差好几个月。可能为 null(平台没给,
|
||||
# 或者值解析不出来),所以前端要能显示成「—」。
|
||||
"published_at": note.published_at,
|
||||
# 按博主分组用。creator_hash 是唯一稳定的创作者标识(原始 user_id
|
||||
# 被爬虫刻意匿名化了),creator_name 是已脱敏的昵称。
|
||||
# 被爬虫刻意匿名化了),creator_name 是昵称本身 —— 本仓库关掉了脱敏
|
||||
# (见 config.MASK_NICKNAME),所以就是原文。
|
||||
"creator_hash": note.creator_hash,
|
||||
"creator_name": note.creator_name,
|
||||
# 优先给本地缓存地址:远程地址带签名、会过期(实测隔天即 403),
|
||||
@@ -488,6 +494,7 @@ async def _note_meta_map(
|
||||
"note_title": row.title,
|
||||
"note_cover": covers.cover_url(row.note_id, row.cover),
|
||||
"note_url": row.note_url,
|
||||
"published_at": row.published_at,
|
||||
"task_id": row.task_id,
|
||||
# 博主维度也带上,评论流才能按 博主 -> 作品 -> 评论 三级展开。
|
||||
"creator_hash": row.creator_hash,
|
||||
@@ -539,6 +546,7 @@ async def list_comments(
|
||||
"note_url": meta.get(row.note_id, {}).get("note_url", ""),
|
||||
"note_creator_hash": meta.get(row.note_id, {}).get("creator_hash", ""),
|
||||
"note_creator_name": meta.get(row.note_id, {}).get("creator_name", ""),
|
||||
"note_published_at": meta.get(row.note_id, {}).get("published_at"),
|
||||
}
|
||||
for row in comments
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user