feat(ai-studio): read shopee source image urls
This commit is contained in:
@@ -462,6 +462,7 @@ data/images/<batch_id>/<slug>/<task_id>_<item_id>_new.<ext> # AI 生成的新
|
||||
| 标题输入框 | XPath `//input[@class='eds-input__input' and string-length(@modelvalue)>24]` |
|
||||
| 写标题 | 原生 setter + 派发 `input`/`change`;`value`==`modelvalue`==新值 |
|
||||
| 读旧封面 | 第一张 itembox 的 `img.src`(`susercontent` CDN),下载到本地 |
|
||||
| AI工场原主图读取 | 复用 `open_product(..., bring_to_front=False)` 后台只读打开商品详情页,使用已验证 itembox 顺序读取全部主图 `img.src` 并返回 `{index, src}`;不要求上传 input 之外的新选择器、不下载图片、不改标题/封面、不拖拽、不点击更新;本轮自动新建 tab 按采集规则关闭,复用用户已有 tab 不关闭 |
|
||||
| 上传输入框 | `.shopee-image-manager__upload input[type=file]`;上传前先点击 `.shopee-image-manager__upload` 上传块以模拟人工选择图片入口,短暂等待后重新获取 input,再用 `DOM.setFileInputFiles` 传 Windows 路径并派发 `input`/`change` |
|
||||
| 上传成功 | 上传前先等图片管理器稳定。注意分两种状态:未满 9 张时,上传前要求图片 src 连续稳定、无 loading/blob、上传 input 存在且未禁用;满 9 张时,删除第一张之前只要求现有图片列表稳定,不得要求上传 input 可用,因为 Shopee 可能因满格隐藏/禁用上传入口;删除成功后再要求上传 input 恢复可用。上传后等新图 src 为 `susercontent`。若手动上传成功但自动上传一直转圈,优先检查是否绕过了上传块点击导致 Shopee 前端上传队列未完整初始化;代码应走“点击上传块 → 等待 → 重新取 input → `DOM.setFileInputFiles`”的人工等价路径。T-404 补丁后超时失败会返回 `upload_state`,区分仍在转圈(`UPLOAD_STILL_PROCESSING`)、图片上传错误(`UPLOAD_PAGE_ERROR`)、裁剪弹窗(`UPLOAD_CROP_REQUIRED`)和上传入口未恢复(`UPLOAD_INPUT_NOT_READY`);上传阶段只能把图片管理器内错误或图片/文件/上传相关 toast 归为封面上传错误,物流/备货等页面级校验错误不能阻断封面上传,应留到点击「更新」提交阶段处理;`有1張重複的圖片` / `重複` / `重复` / `duplicate` 属于封面上传错误,必须立即失败并提示新封面与现有商品图片重复 |
|
||||
| 封面=第一位 | `Input.dispatchMouseEvent` 拖到第一位,落点 `第一张.left - 0.30*宽` |
|
||||
|
||||
+9
-2
@@ -3,7 +3,7 @@ id: T-587
|
||||
title: AI工场商品项目入口与 CDP 只读拉取蝦皮原主图 URL
|
||||
phase: 7
|
||||
deps: [T-586, T-563]
|
||||
status: TODO
|
||||
status: DONE
|
||||
created: 2026-07-11
|
||||
---
|
||||
|
||||
@@ -36,4 +36,11 @@ AI工场以“账号 + 商品 ID”建立项目,并从该账号 Chrome 的商
|
||||
|
||||
## 执行记录
|
||||
|
||||
(完成后记录 mock、只读实跑与 tab 清理结果。)
|
||||
- 2026-07-11:完成 AI工场商品项目入口与原主图 URL 只读拉取代码。
|
||||
- `app/editor.py` 新增 `read_product_image_urls()`,复用已验证 itembox rects 顺序返回 `{index, src}`;新增 `close_readonly_product()` 复用①采集 tab 清理规则。
|
||||
- `app/image_studio.py` 新增项目入口 `pull_remote_main_image_urls()`:按账号+商品创建/打开项目,复用/启动账号 Chrome,只检测登录;明确登录页阻断,不确定登录继续尝试打开商品页;商品页用 `open_product(..., bring_to_front=False)` 后台只读打开,读取 URL 后同步为 remote-only `original` assets,不下载图片、不修改蝦皮、不点击更新。
|
||||
- 原图 URL 刷新走 `sync_original_asset_urls()`:相同 URL 复用原 asset 并更新顺序,不再出现的 URL 标记 `missing`,不物理删除历史记录。
|
||||
- `docs/04-architecture.md` 已补充 AI工场原主图读取的 CDP 约束。
|
||||
- 测试覆盖:已开 Chrome 复用、未开 Chrome 启动、明确未登录阻断、`NO_SESSION_COOKIE` 不确定登录继续、商品失效 toast 文案上浮、成功读取 1..9 张 URL、重复刷新幂等、自动新建/复用 tab 清理接口,以及成功路径不调用标题修改/封面替换/点击更新。
|
||||
- 验证:在只套用 T-587 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`(350 tests)和 `git diff --check`,全部通过。
|
||||
- 真实蝦皮只读实跑未执行:本轮未指定可用的已登录测试账号别名;为避免擅自打开真实浏览器,只做 mock/CDP 合约验证,后续接 GUI 前可用测试账号对 ITEM_ID 51100639510 做一次只读确认。
|
||||
|
||||
Reference in New Issue
Block a user