豆备 DOUBAK
← 开发日志

档案里有四个版本,页面漏了中间那版

从 sola 的单版本布局查到同日编辑被归并的缺陷。保留全部历史版本,用日期与版本编号展示差异,同日同文的广播与原页短评合并呈现双重来源。

问题从 2332978(sola)开始:页首有一句「不错~」, 翻到作品信息下面,却没有它的历史条目。档案里只有一个原页版本,标记日期为 2014-01-26,评分四星,也没有关联广播。

这是旧代码的明确选择:只有一条原页记录时,省去底部重复内容。 但继续查看真正有多个版本的作品,发现还有另一处问题: 档案保存了四个版本,时间线没有逐个显示出来。

同一个日期,可以有不同的文字

30284835(《二十世纪电气目录》)保存了四个原页版本。 两次「在看」的文字不同,原页日期却都停在 2026-07-19: 一版以「看完了两集」开头,后来的一版增加了「怎么京阿尼在这也能埋上音乐番的影子!」。

旧时间线先按「状态 + 日期」归并,只取第一段非空文字, 再按正文去重。那段中间版本因此没有独立条目, 只有最新短评引用它时,才能在长段落里找回字句。 页脚仍然正确地写着「4 个版本」,却不能代替四个版本本身。

把广播全部移出测试输入,这个中间版本仍会消失。 原因就在生成器的归并规则;canonical 中的修订已经保留下来, 这次无需改解析器,也无需重新抓取。

保留证据,也要避免重复阅读

第一轮修复把所有原页版本都列了出来,每条再显示首次观察时间。 这样补回了中间版本,也让只有一句短评的页面在顶部和底部重复同一句话。 常驻的日期说明对单版本页面没有帮助。

继续调整后,sola 这类只有一个原页版本、没有广播的作品恢复旧布局: 短评只在页首出现。完整证据仍保留在投影和 canonical 中,展示层不再重复输出。

同日不同文字,用版本编号区分

同一原页日期下存在多个版本时,从最早的已存档版本编号为 1,展示时新的在前。 日期没有变化的两段文字可以直接读成:

2026-07-19 · 版本 2
原页短评 · 在看 · ★★★★★
怎么京阿尼在这也能埋上音乐番的影子! //看完了两集……

2026-07-19 · 版本 1
广播(2026-07-19 20:36:31) & 原页短评 · 在看 · ★★★★★
看完了两集……

编号表示保存下来的版本先后,原页日期仍沿用豆瓣的标记日期。 首次观察时间只用于排序,不再逐条打印;统一的日期说明也从作品页面移除。 缺少原页日期的历史条目标为「日期不详」,不把抓取时间当作发言时间。

《二十世纪电气目录》的四个原页版本仍都可读;清空文字、恢复旧文字、只改评分, 也不会再被正文去重吞掉。同日同文的广播可以共同为其中一个版本提供出处, 但不会占用另一个版本的位置。

删掉再标,保留各自的日期

另一个老样本是 3541415(《盗梦空间》): 2018-01-03 和 2026-09-04 的两次标记,在归档中有不同的记录身份。 这两次仍排在各自日期下;测试也覆盖了两次文字完全相同的情况, 防止删后重标被误当作重复内容。

这延续了 此前修复重标覆盖旧记录时的原则: 一个作品只生成一个页面,但每次标记留下的证据都应能在里面找到。

相同内容只读一次,两个来源都留下

当广播与原页短评的日期、正文、状态和评分都一致时,展示层把它们合为一条, 标为「广播 & 原页短评」。单版本条目保留广播的精确时间;多版本条目保留版本标题, 广播时间放在来源旁。

合并的条件是已有内容一致,不是拿一边补另一边。 广播没打分而原页后来有五星,或者广播没有文字而原页后来写了短评,都会分别显示。 截断的广播、日期不明的记录也不参与合并。两边都没有文字,且日期、状态、评分均相同, 则可以合并为一条状态记录。

每条广播最多匹配一个原页版本,优先匹配最早的一版。 即使用户写了 A、改成 B、又改回 A,三个版本仍各有位置。 这次合并只改阅读层,投影中的两份来源证据都保留。

修改范围与验证

实现见 保留完整版本的修复与 后续展示调整, 日期与来源规则已写入 README。 扩展通过 同步共享代码 获得同样的 Markdown 导出行为。

本次展示调整通过了 159 项页面、可移植性与共享副本检查,以及 43 项扩展管线检查; 并用本地档案构建了 sola、四版本样本、《无人生还》、《盗梦空间》、《风来之国》和《三体》的 Hugo 预览, 核对单版本省略、双重出处、版本编号及重标日期。完整生成器套件中的 10 项子进程相关检查受当前沙盒限制, 未得到全套通过的结果。本次验证与提交没有重新发布样张站点。

更早:页面上没有标题,档案里却有系列成员:一次导航设计调查 →