fix(db): migrate processed tasks with missing product status

This commit is contained in:
chengma
2026-07-27 18:15:51 +08:00
parent 82444412ab
commit 4d949751d1
6 changed files with 283 additions and 15 deletions
+12 -8
View File
@@ -3,7 +3,7 @@ id: T-704
title: 兼容用户历史已处理任务的空商品状态
phase: 7
deps: [T-667, T-673]
status: TODO
status: DONE
created: 2026-07-27
---
@@ -29,12 +29,12 @@ created: 2026-07-27
## 验收要点
- [ ] 用户保留旧 `data/cmshopee.db` 后启动新版,批次日期晚于原固定阈值、但已有采集/生成/更新证据的空状态任务自动变为历史默认 `normal`。
- [ ] 迁移前生成可打开的一致性数据库备份;重复初始化后不再新增备份,不重复修改 `updated_at`。
- [ ] 仅 `stage=imported` 且没有标题、封面或阶段时间证据的空状态任务不迁移,③仍阻止更新。
- [ ] 显式 `unknown/unlisted/reviewing/normal`、已软删除任务及已软删除批次不改动。
- [ ] 迁移后的已生成记录可按既有标题/封面完整性规则进入③更新预检,不绕过内容完整性、账号登录或线上确认。
- [ ] 不打开 Chrome、不访问商品页、不调用 AI、不修改 Excel、不提交线上商品。
- [x] 用户保留旧 `data/cmshopee.db` 后启动新版,批次日期晚于原固定阈值、但已有采集/生成/更新证据的空状态任务自动变为历史默认 `normal`。
- [x] 迁移前生成可打开的一致性数据库备份;重复初始化后不再新增备份,不重复修改 `updated_at`。
- [x] 仅 `stage=imported` 且没有标题、封面或阶段时间证据的空状态任务不迁移,③仍阻止更新。
- [x] 显式 `unknown/unlisted/reviewing/normal`、已软删除任务及已软删除批次不改动。
- [x] 迁移后的已生成记录可按既有标题/封面完整性规则进入③更新预检,不绕过内容完整性、账号登录或线上确认。
- [x] 不打开 Chrome、不访问商品页、不调用 AI、不修改 Excel、不提交线上商品。
## 测试与文档
@@ -61,4 +61,8 @@ git diff --check
## 执行记录
- 待实现。
- `db.init_db()` 新增 T-704 幂等迁移:活动且未软删除的空商品状态任务,只在已有业务阶段、阶段时间或任一新旧标题/封面证据时写历史默认 `normal`;批次创建时间不再是这层兼容的判断依据。
- 文件数据库存在真实候选时,迁移前通过 SQLite backup API 在数据库同级 `backups/` 创建一致性备份;迁移成功后候选消失,重复启动不再备份或改写。
- 显式商品状态、未处理导入记录、软删除任务和软删除批次保持不变;③计划与 Worker 的 `normal` 防线未放宽。
- 更新架构/API 文档,并调整两处旧 GUI 测试,使异常状态场景使用显式 `unknown/reviewing`,不再把“已生成但状态为空”当作未迁移状态。
- 验证通过:`py -3.10 -m unittest discover -s tests -p "test_db.py"`(22 项)、`py -3.10 -m unittest discover -s tests -p "test_product_status.py"`(7 项)、`py -3.10 -m unittest discover -s tests`(703 项)、`py -3.10 -m ruff check app tests main.py`、`py -3.10 -m compileall app main.py`、`git diff --check`。