(一)从操作写出完成标准
先把“做一个书目网站”写成能够执行和检查的操作。来源网页已经放在项目中,打开本地来源服务即可采集。第一页有三张卡片,第二页有三张,第三页有四张;同一本书会重复出现,最后一张卡片缺少书名。
| 操作 | 程序应产生的状态 | 检查方式 |
|---|---|---|
| 第一次采集三页 | 原始 10 条,去重后 6 本,重复 3 条,拒收 1 条 | 比较报告、原始快照与数据库 |
| 重放同一快照 | 返回这次导入的报告 | 批次数和书目数不增加 |
| 重新采集相同来源 | 新批次报告“未变 6 本” | 书目仍为 6 本 |
| 查询未读书的第二页 | 总计 4 本,本页只有 b106 |
页面和 JSON 返回相同记录 |
| 关闭并重开查询服务 | 仍能查询已经提交的书目 | 使用原数据库重新启动 |
| 在写入过程中出错 | 整批写入回退,原始快照仍在 | 修复后重放快照 |
这里有两个编号:source_id 标识来源中的一本书,run_id 标识一次完整采集。重复出现的 b101 仍是同一本书;下一天重新采集,应该有新的批次编号。这就是后面主键、去重和报告的依据。