This commit is contained in:
toom1996
2026-09-21 15:56:29 +08:00
parent b99dc3dca1
commit d1e42ea18a
5 changed files with 472 additions and 21 deletions

View File

@ -181,28 +181,18 @@ SourceDraftExists(ctx context.Context, kind, source, sourceURL string) (bool, er
**冲突时无需回滚已上传的图**:两张草稿的图片 URL 完全相同,sha1 内容寻址会推出同一个对象 key,属覆盖写,不产生孤儿文件。此点须在代码注释中写明,避免后来人误加 `cleanupUploads`。
### 3.6 街拍实体键引入月份
### 3.6 ~~街拍实体键引入月份~~(已作废)
街拍实体键由 `(city, year)` 改为 `(city, year, month)`。**该键共有 4 处落点,必须同时修改**,否则晋升与去重口径不一致会导致数据撕裂。
| # | 落点 | 改动 |
| --- | --- | --- |
| 1 | `ingest_repository.StreetSnapIDByEntity` | 增加 `month` 参数,查询加 `AND month = ?`;接口注释同步 |
| 2 | `ingest_service.processStreet` | 调用点传 `p.Month`;日志补上 month |
| 3 | `review_repository.SaveStreetSnapFromDraft` | 正式行查找 `WHERE city = ? AND year = ?` 增加 month |
| 4 | `review_repository.streetApprovedSiblingImages` | 兄弟草稿聚合查询增加 month 条件 |
**第 4 处是最容易漏、后果最脏的一处**:它是「同 city+year 已 approved 的其他街拍草稿图」的聚合查询。若只改第 3 处而不改第 4 处,会出现**「正式行按月分开了、图片却跨月混在一起」**——2 月 Copenhagen 专辑里混进 8 月的图。晋升与去重口径必须完全一致。
其余改动:
- **spider**:`Year` 与 `Month` 均取抓取时刻 `time.Now()`;删除 `(*TheImpressionSpider).parseYear`(失去调用方)。`yearRe` 被 `vogue.go` 共用,**保留**。
- **写草稿**:`processStreet` 填 `Month: p.Month`。
- **晋升写正式表**:`SaveStreetSnapFromDraft` 的 `common` map 增加 `"month": draft.Month`。
- **后台可编辑**:`streetDraftEditable` 白名单放行 `month`;street 模块的 `Fields` 增加 `{month, 月份, number}`(与 `year` / `city` 一致——三者本就是键的一部分,后两者现已可编辑);列表卡片副标题由 `city` 改为 `city · YYYY-MM`。
- **公开 API 不动**:`PublicStreetSnap` / `PublicStreetSnapDetail` 目前连 `year`、`city` 都未暴露,加 `month` 无意义。前端确有需要时再单独加字段。
**残留代价(明确接受)**:同城、同年、同月内的不同文章,仍会在「首条晋升之后」被判重跳过。但同一批抓取会一起进草稿、并在晋升时聚合,实际影响很小。这是键粒度换来的必然取舍,「爬过即终态」的既定语义不变。
> **本节已作废(2026-09-21)**,由 `2026-09-21-duplicate-review-design.md` §3.7 取代。
>
> 原设计把街拍实体键改为 `(city, year, month)`(同城同月自动收敛成一张专辑)。用户随后取消了「按月区分」与「合并成一张专辑」两项需求,改为**一篇文章一张专辑**,实体键变为 `(source, source_url)`。
>
> 影响:
>
> - 本节描述的全部改动**不再执行**(原实现计划的任务 6 已删除)。
> - 但 §3.1(契约新增 `source` / `source_url`)**仍然有效、且更关键**——这两个字段现在直接充当街拍实体键。
> - `Month` 字段不再需要(其唯一用途是月度分组):`month` 列、spider 的 `Month` 填充、`streetDraftEditable` 放行 `month`、列表副标题加月份等一并取消。
> - 街拍 `street_snaps` 正式表需新增 `source` / `source_url` 两列,见新规格 §3.7。
### 3.7 明确不动的部分