Files
cmshoppe/docs/tasks/T-674.md
T

62 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
id: T-674
title: AI生成与更新蝦皮单条任务右键软删除
status: DONE
phase: 7
deps: [T-670, T-672]
created: 2026-07-20
---
# T-674 AI生成与更新蝦皮单条任务右键软删除
## 问题 / 背景
T-670 已在①「导入采集」实现任务级软删除,但②「AI生成」没有右键删除入口,③「更新蝦皮」右键菜单只有「重置更新状态」。运营在后续工作流发现某一条不应继续生成或提交时,需要回到①才能删除,操作路径过长。
## 方案
- ②任务表启用中文右键菜单:右键先选中命中行,菜单只提供「删除本条记录」。②支持多选用于既有批量操作,但右键删除始终只作用于鼠标命中的一条,不新增批量删除。
- ③保留既有「重置更新状态」,在其后增加分隔线和「删除本条记录」。两项均只作用于右键命中的当前行;删除不要求先重置更新状态。
- 复用 `db.delete_task()` 与 T-670 的任务级软删除语义:确认框显示商品 ID、店铺、所属批次;若 `committed=1`,明确说明“仅删除本地记录,不会回滚蝦皮线上商品”;同时说明不删除原 Excel、本地图片或账号 Chrome 数据。
- ②生成中,或③更新/结果回写中,菜单中的删除项禁用;数据库层继续拒绝 `running` 或已删除任务,防止界面竞态。取消、失败和重复删除均保留数据并给出中文提示。
- 删除成功后刷新当前 Tab;通过既有主窗口工作流刷新回调同步①②③的批次、列表、筛选和统计。软删除记录不再进入采集、生成、更新、Excel 回写或默认统计。
## 验收标准
- [ ] ②、③右键空白处不弹业务操作;右键行会先选中该行,删除动作只处理该行。
- [ ] ②显示「删除本条记录」;③同时显示「重置更新状态」和「删除本条记录」,两者语义互不改变。
- [ ] 删除确认、取消、已提交线上提示、运行中禁用和删除成功后的跨 Tab 刷新与 T-670 一致。
- [ ] 删除后任务在①②③均不可见,不能进入生成、更新或回写;原 Excel、本地图片、账号 Chrome 与蝦皮线上商品不受影响。
- [ ] 不新增物理删除、恢复入口、批量删除或绕过 `db.delete_task()` 的直接 SQL。
## 测试与文档
- `tests/test_gui.py` 覆盖②/③右键选中、菜单项、确认/取消、已提交提示、运行中禁用、软删除后刷新和不影响其他任务。
- `tests/test_db.py` 复用或补充 `delete_task()` 既有保护回归。
- 更新 `docs/routes.md`、`docs/api.md` 的②/③任务表交互说明。
## 验证
```bash
py -3.10 -m unittest discover -s tests -p "test_gui.py"
py -3.10 -m unittest discover -s tests -p "test_db.py"
py -3.10 -m unittest discover -s tests
py -3.10 -m ruff check app tests main.py
py -3.10 -m compileall app main.py
git diff --check
```
## 非目标
- 不新增批量删除、恢复已删除记录、图片目录清理或 Excel 行物理删除。
- 不改变「重置更新状态」的现有本地状态语义。
- 不改 CDP、账号登录、AI/CMHub 或线上商品更新流程。
## 执行记录
- ②任务表启用右键菜单:先选中命中行,仅提供「删除本条记录」;②生成中或任务运行中禁用/拒绝删除。
- ③右键菜单保留「重置更新状态」,以分隔线增加「删除本条记录」;更新或回写运行中禁用/拒绝删除。
- 两个 Tab 均复用 `db.delete_task()`,确认框显示商品、店铺、批次与本地软删除边界;已提交线上记录明确提示不回滚蝦皮。成功后经主窗口刷新回调同步①②③。
- 更新路由/API 文档,并新增②/③右键选中、菜单内容、取消、已提交提示、软删除成功刷新和运行中拦截的 GUI 回归测试。
- 验证通过:`py -3.10 -m unittest discover -s tests -p "test_gui.py"`(208 项)、`py -3.10 -m unittest discover -s tests -p "test_db.py"`(21 项)、`py -3.10 -m unittest discover -s tests`(627 项)、`py -3.10 -m ruff check app tests main.py`、`py -3.10 -m compileall app main.py`、`git diff --check`。