feat(ai-studio): add remote image loading helpers
This commit is contained in:
+9
-3
@@ -2,8 +2,8 @@
|
||||
id: T-588
|
||||
title: AI工场远程缩略图与蝦皮原图进入照片池
|
||||
phase: 7
|
||||
deps: [T-587, T-546]
|
||||
status: TODO
|
||||
deps: [T-587, T-548]
|
||||
status: DONE
|
||||
created: 2026-07-11
|
||||
---
|
||||
|
||||
@@ -35,4 +35,10 @@ created: 2026-07-11
|
||||
|
||||
## 执行记录
|
||||
|
||||
(完成后记录 CDN 实探、缓存和下载验证。)
|
||||
- 2026-07-11:完成 AI工场远程图片底层能力。
|
||||
- 修正任务依赖:原 `T-546` 任务文件不存在,实际复用已完成的 T-548 图片下载安全/超时口径,frontmatter 改为 `deps: [T-587, T-548]`。
|
||||
- 新增 `app/image_studio_images.py`:提供远程图片安全下载(http/https、公网地址、无系统代理、连接/读取超时、大小上限、Content-Type 与最终重定向 URL 校验、PIL 解码校验)、内存缩略图生成、线程池 `ThumbnailLoader`(缓存、取消、失败回调)和单张原图下载落 `originals/`。
|
||||
- `download_original_asset()` 只在用户单击时下载对应原图,写临时文件、解码校验后 `os.replace()` 原子落盘,并通过 `image_studio.update_asset_local_path()` 回写同一 remote asset;重复单击已有可解码本地文件时直接返回,不重复请求。
|
||||
- 新增 `tests/test_image_studio_images.py` 覆盖缩略图不落盘、缓存命中、取消、原图落盘幂等、坏图片不留下半文件/可用 asset、非图片、超限、内网 URL 和重定向到内网 URL。
|
||||
- 验证:在只套用 T-588 diff 的 clean worktree 中运行 `python -m ruff check app tests main.py`、`py -3.10 -m compileall app main.py`、`py -3.10 -m unittest discover -s tests`(355 tests)和 `git diff --check`,全部通过。
|
||||
- CDN 真实实探未执行:本轮没有指定可用的已登录测试账号/商品现场;代码已记录可观测字段 `content_type/final_url/redirected` 并覆盖回退与边界,后续接入 T-591 GUI 前建议用测试账号补一条真实 Shopee CDN 记录。
|
||||
|
||||
Reference in New Issue
Block a user