feat: 完成T-502满9张封面替换

实现 replace_cover 满9张时先校验 old_cover_path 本地备份,备份缺失返回 OLD_COVER_BACKUP_MISSING 且不删除线上图片。

备份存在时点击第一张删除按钮并处理可见确认框,删除后继续上传新封面并拖到第一位;apply_task 会把任务 old_cover_path 传入 replace_cover。

补充 editor 单测覆盖备份缺失阻断、删除确认后上传拖首位、删除按钮缺失和 old_cover_path 传递;同步需求、架构、编码规则、任务看板、API、routes、current-state 与 progress。

已在测试商品 29671243750 上验证 9图删除和满9张替换的不提交流程;未点击更新保存线上。
This commit is contained in:
chengma
2026-06-29 09:49:53 +08:00
parent b05a856796
commit 82d390c25a
10 changed files with 345 additions and 24 deletions
+5 -2
View File
@@ -215,7 +215,9 @@ collect(account, task) -> dict # -> {old_title, old_cover_path}
# 应用
change_title(cdp, new_title) -> dict # {ok, value, modelvalue},要求三者相等
replace_cover(cdp, image_win_path) -> dict # 上传→等CDN→拖第一位;满9张暂返回 FULL_IMAGE_SLOTS,删除流程留给 T-502
replace_cover(cdp, image_win_path, old_cover_path=None) -> dict
# 上传→等CDN→拖第一位;满9张时先确认 old_cover_path 非空且文件存在,
# 再点第一张删除和可见确认框;备份缺失时返回 OLD_COVER_BACKUP_MISSING,不删除线上图片
click_update(cdp) -> dict # {clicked, reason};禁用则记失败
apply_task(account, task, close_success_tab=False) -> dict
# 对已生成任务:换标题+换封面+点「更新」提交(调用前必须已通过安全开关和批量确认)
@@ -231,6 +233,7 @@ apply_task(account, task, close_success_tab=False) -> dict
- `open_product()` 若复用已存在商品 tab,则标记为用户已有页面;若调用 `create_tab()` 新建,则记录 target id。
- `collect()` 结束时只关闭本轮自动新建的商品编辑页 tab;用户原本打开的商品 tab 不关闭。
- ③ 更新流程默认不关闭商品页;若 `close_success_tab=True`,只在提交成功且商品页为本轮自动新开时关闭,失败任务和用户原本打开的 tab 保留现场。
- T-502 满 9 张封面删除前,`apply_task()` 应把任务的 `old_cover_path` 传给 `replace_cover()`;`replace_cover()` 只有在本地旧封面备份存在时才允许进入删第一张流程。
## ai 模块(`app/ai.py`,已建,外部 AI,通用 HTTP)
@@ -448,5 +451,5 @@ set UPDATE=1 && python prototypes/demo.py # 走完点击「更新」提交
## 待实现时确认
- AI 服务商/模型/计费;图像 image-to-image 能力与合规。
- 满 9 张删除封面的确认框选择器(需实测)。
- 满 9 张删除封面已在测试商品 `29671243750` 上实测不提交流程;当前代码只在可见 dialog/modal/popover 内点击删除/确认类按钮,并保留“旧封面备份缺失则拒绝删除”的保护。
- 旧封面下载的图片格式/扩展名处理。