2026-07-20 09:54:17 +08:00
|
|
|
|
---
|
|
|
|
|
|
id: T-670
|
|
|
|
|
|
title: 导入采集单条任务软删除
|
2026-07-20 10:27:21 +08:00
|
|
|
|
status: DONE
|
2026-07-20 09:54:17 +08:00
|
|
|
|
phase: 7
|
|
|
|
|
|
deps: []
|
|
|
|
|
|
created: 2026-07-20
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# T-670 导入采集单条任务软删除
|
|
|
|
|
|
|
|
|
|
|
|
## 问题 / 背景
|
|
|
|
|
|
|
|
|
|
|
|
①目前只能软删除整个批次。运营遇到 Excel 中误导入的单个商品、商品失效或不再需要处理的记录时,无法只移除该行,只能保留它或删除整个批次。当前 SQLite 仅有批次级删除标记,任务行没有独立软删除语义;因此不能只在界面上隐藏一行。
|
|
|
|
|
|
|
|
|
|
|
|
## 方案
|
|
|
|
|
|
|
|
|
|
|
|
- 在①任务表右键时先选中命中行,再打开中文右键菜单;第一版仅提供「删除本条记录」。右键本身不得直接弹确认框或执行删除。
|
|
|
|
|
|
- 点击菜单项后显示确认框,明确商品 ID、店铺/别名、所属批次;若记录已提交线上,额外提示“仅删除本地记录,不会回滚蝦皮线上商品”。确认框还须说明不会删除原 Excel、本地图片或账号 Chrome 数据。
|
|
|
|
|
|
- 为 `tasks` 增加 `deleted_at/deleted_reason` 任务级软删除字段及兼容迁移;新增受事务保护的任务软删除 API。默认任务查询、单条读取、①②③筛选、采集/生成/更新候选、运行日志统计和 Excel 回写都排除已软删除任务。已删除任务不物理删除,不改原 Excel、图片路径、生成结果、提交历史或线上商品。
|
|
|
|
|
|
- 删除操作仅允许作用于当前可见的一条活动任务;①采集或回写运行中禁用入口。数据库 API 必须拒绝已软删除任务和正在处理的任务,避免并发 Worker 对已移除任务继续写入;失败时保留原数据并显示中文原因。
|
|
|
|
|
|
- 删除成功后刷新①/②/③相关列表和当前批次进度摘要,状态栏提示「已删除本地记录:商品 ID」。不提供批量删除、恢复入口或图片目录清理;软删除记录由数据库保留以便后续维护工具处理。
|
|
|
|
|
|
|
|
|
|
|
|
## 验收标准
|
|
|
|
|
|
|
2026-07-20 10:27:21 +08:00
|
|
|
|
- [x] 右键任务行只弹菜单,点击「删除本条记录」后才弹确认框;取消不改变任何数据。
|
|
|
|
|
|
- [x] 确认后任务被软删除,立即不再出现在①、②、③列表、筛选、采集、生成、更新、回写和默认统计中;其他同批次任务保持不变。
|
|
|
|
|
|
- [x] 已提交线上任务的确认框说明本地删除不回滚线上;原 Excel、本地图片与任务历史字段均未被物理删除。
|
|
|
|
|
|
- [x] 已删除或正在处理任务不能被重复删除,相关 API 事务安全且不产生半删除状态。
|
|
|
|
|
|
- [x] `tests/test_db.py` 覆盖 schema 迁移、默认排除、单条读取和重复/运行中保护;`tests/test_gui.py` 覆盖右键选中、确认/取消、已提交提示和删除后刷新。
|
2026-07-20 09:54:17 +08:00
|
|
|
|
|
|
|
|
|
|
## 验证
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
py -3.10 -m unittest discover -s tests -p "test_db.py"
|
|
|
|
|
|
py -3.10 -m unittest discover -s tests -p "test_gui.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
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 非目标
|
|
|
|
|
|
|
|
|
|
|
|
- 不物理删除 SQLite 任务、Excel、本地图片、账号目录或蝦皮线上商品。
|
|
|
|
|
|
- 不新增批量删除、恢复页面、右键菜单的其他操作或跨批次删除。
|
|
|
|
|
|
- 不修改商品状态检测、AI 模型、CDP/Shopee 自动化选择器或线上更新逻辑。
|
|
|
|
|
|
|
|
|
|
|
|
## 执行记录
|
|
|
|
|
|
|
2026-07-20 10:27:21 +08:00
|
|
|
|
- 为 `tasks` 增加 `deleted_at/deleted_reason` 兼容迁移和索引,新增事务化 `db.delete_task()`;默认 `list_tasks/get_task` 同时排除已删除批次和已删除任务,历史商品状态迁移也跳过已删除任务。
|
|
|
|
|
|
- ①任务表新增右键「删除本条记录」菜单和确认框,已提交线上任务显示不回滚提示;成功后刷新①并通过既有回调刷新②/③。运行中入口禁用,数据库拒绝 `running` 或已删除任务。
|
|
|
|
|
|
- 更新架构、API 和路由文档,明确单条软删除不删除 Excel、图片、账号 Chrome 数据或线上商品。
|
|
|
|
|
|
- 验证通过:`py -3.10 -m unittest discover -s tests`(623 项)、`py -3.10 -m ruff check app tests main.py`、`py -3.10 -m compileall app main.py`、`git diff --check`。
|