feat(t240): cache freight item images

This commit is contained in:
QiuSW
2026-07-29 15:12:05 +08:00
parent 5f17fc11aa
commit c7e152aaa1
28 changed files with 1728 additions and 30 deletions
+14 -9
View File
@@ -4,7 +4,7 @@ title: 缓存并鉴权提供顺运宝货运商品图片
phase: 2
deps:
- T-239
status: TODO
status: DONE
created: 2026-07-29
context_ref: 3bd9726
work_branch: null
@@ -57,14 +57,14 @@ write_paths:
## 验收要点
- [ ] 图片请求固定为配置 ERP origin 的 `/api/p/file?id=<productThumb>`,不接受任意 URL。
- [ ] 请求复用现有 ERP Cookie jar,禁止重定向;401/403、404、错误类型和无效图片稳定分类。
- [ ] 有效 JPEG/PNG/WebP 规范化保存为本地 JPEG,大小和像素限制不回归。
- [ ] 货运元数据先成功提交;单图失败不改变同步 `SUCCEEDED`,状态可审计并在后续同步重试。
- [ ] 相同 READY 引用不重复下载;引用变化替换关联并 best-effort 删除旧文件。
- [ ] Admin 图片接口只返回当前商品本地 READY 图片,未授权及其他状态不泄露存在性。
- [ ] 自动测试不访问真实 ERP,覆盖 Cookie、URL、重定向、状态、去重、替换和内容响应头。
- [ ] 标准 Go 测试、race、vet 和三个入口构建通过。
- [x] 图片请求固定为配置 ERP origin 的 `/api/p/file?id=<productThumb>`,不接受任意 URL。
- [x] 请求复用现有 ERP Cookie jar,禁止重定向;401/403、404、错误类型和无效图片稳定分类。
- [x] 有效 JPEG/PNG/WebP 规范化保存为本地 JPEG,大小和像素限制不回归。
- [x] 货运元数据先成功提交;单图失败不改变同步 `SUCCEEDED`,状态可审计并在后续同步重试。
- [x] 相同 READY 引用不重复下载;引用变化替换关联并 best-effort 删除旧文件。
- [x] Admin 图片接口只返回当前商品本地 READY 图片,未授权及其他状态不泄露存在性。
- [x] 自动测试不访问真实 ERP,覆盖 Cookie、URL、重定向、状态、去重、替换和内容响应头。
- [x] 标准 Go 测试、race、vet 和三个入口构建通过。
## 边界
@@ -77,3 +77,8 @@ write_paths:
- 2026-07-29:创建任务。采用货运商品专属图片元数据表并复用安全文件编码管线;先提交货运
元数据,再 best-effort 缓存图片,避免单个外部文件阻塞或回滚完整订单。
- 2026-07-29:增加 migration 16、固定 ERP 图片客户端、四 worker/最多 1000 项/15 秒
best-effort 缓存、图片状态仓储和 Admin 本地内容接口。相同 READY 引用跳过,失败引用在
新同步重试,引用替换后删除旧文件;同步成功不受单图失败影响。脱敏测试覆盖 Cookie、
固定 query、重定向、401/404/无效类型、JPEG 规范化、去重、替换、回滚保护、鉴权与响应头。
`go test ./...`、`go test -race ./...`、`go vet ./...` 及三个入口构建均通过;未访问真实 ERP。