• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Doubak / doubak-site-generator / 41
89%

Build:
DEFAULT BRANCH: main
Ran 04 Sep 2026 10:06AM UTC
Jobs 1
Files 11
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

04 Sep 2026 10:05AM UTC coverage: 88.991% (+0.2%) from 88.791%
41

push

github

MewX
删掉再重标:一个作品仍然只有一页,旧的那次不许消失

《盗梦空间》2018-01-03 标过一次,2026-09-04 用户在豆瓣上删掉重标。豆瓣发了个新的
条目 id(1299196346 → 4937138397),解析器据此如实分成两条记录——那是对的,
canonical 是事件日志,两个不同的上游 id 就是两次不同的标记。

而投影这一层一处判据都没有,于是两个各自静默的毛病:

1. **后写的把先写的整个盖掉。** 两条标记算出同一个文件名,先来后到决定谁活下来。
   git 上看不出来——页数没变、没有新增没有删除,只在那一页的 diff 里。2018 年的
   短评与标签就这么从站点上消失了。
2. **`targetIndex` / `broadcastsBySubject` 把它判成「id 撞车」**,于是两条广播的
   链接与封面一起消失,作品页上整个「说过什么」栏目也没了——而那正是这份档案最
   不可替代的部分:豆瓣自己已经不显示 2018 年那条了。

第二条又是一个**代理**:「同一个 id 出现两次」在只有一条标记的年代恰好等价于
「跨媒介撞车」,而用户第一次删掉重标就让两者分了家。规则本来要问的是「媒介一样
吗」,同一部电影的两条标记指向的是同一页,根本没有歧义。

修法是在投影入口按「媒介:作品id」归组(`mergeReMarks`):

- 页头取**最后一次看到**的那条——豆瓣现在还留着的,才是最近一次抓取里出现过的。
  按 marked_at 挑是错的:补标一部老片可以有更早的日期,而它仍然是现存的那条。
- 被顶掉的那几条**并进时间线**,所以 2018 年那次的短评、评分、日期都还在页面上,
  位置也对,而不是假装从没发生过。
- revisionCount 把它们都算上,否则页面会说「只有 1 个版本」,而下面的时间线明明
  列着两次标记。

归组之后 `targetIndex` 里那个撞车判断就只可能是跨媒介的了,所以它**保持原样**并
把这条上游保证写进注释——加一次「媒介是否相同」的比较永远为真,一个永远为真的
判断读起来像在防什么,实际什么都没防(突变验过:改了它一条测试都不红)。
`broadcastsBySubject` 读的是原始 canonical,那一处的判据是真的要改。

顺带:首页广播预览 2 条 → **5 条**,与长文的 PREVIEW 分成两个常量。广播是首页上
唯一能看见原话的地方(媒介小节是封面墙,长文是标题加 80 字摘要),而长文一条就
占掉一屏,共用一个数必然连累另一个。

新增 6 条测试,6 个突变逐个验过。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E6dxwcUi4rM3dcKdsqx9xm

421 of 540 branches covered (77.96%)

Branch coverage included in aggregate %.

109 of 109 new or added lines in 2 files covered. (100.0%)

2497 of 2739 relevant lines covered (91.16%)

23.61 hits per line

Jobs
ID Job ID Ran Files Coverage
1 41.1 04 Sep 2026 10:06AM UTC 11
88.99
GitHub Action Run
Source Files on build 41
  • Tree
  • List 11
  • Changed 3
  • Source Changed 2
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 48afd2b9 on github
  • Prev Build on main (#40)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc