4.8 KiB
4.8 KiB
id, title, status, phase, deps, created
| id | title | status | phase | deps | created | |
|---|---|---|---|---|---|---|
| T-662b | 导入采集范围确认与商品状态汇总 | DONE | 7 |
|
2026-07-18 |
T-662b 导入采集范围确认与商品状态汇总
问题 / 背景
客户不希望非正常状态商品继续进入付费生成流程。首次导入时商品状态尚未检测,程序不能在打开详情页前知道哪些商品正常,因此①需要在每轮采集开始前让用户选择处理范围,并在页面内先检测、保存状态,再决定是否继续读取标题和封面。
方案
- 保持现有批次、店铺、商品ID和任务状态筛选;本任务不在①②③增加商品状态下拉框。
collect_old_data()完成“当前筛选存在候选任务”检查后、创建CollectWorker前,弹出中文采集范围对话框:只采集状态正常的商品:默认按钮;采集所有状态的商品:红色文字(需求定稿,与②「生成所有状态的商品」样式一致);取消:关闭弹窗且不创建线程、不打开页面。
- 弹窗说明:程序仍会逐个打开详情页检测并保存状态;“采集所有状态”包括未上架、审核中和状态未知商品,可能增加采集时间,但本步骤不消耗 AI 点数。
- 使用稳定策略代码
normal_only/all传给 Worker,不把按钮中文作为业务值;运行期间策略冻结,不记忆为全局默认,下次仍默认normal_only。 - 每条任务打开详情页后必须先检测并独立保存商品状态:
normal_only:仅normal继续读取标题、下载封面;unlisted/reviewing/unknown以业务略过结束,不算技术失败,不覆盖旧标题/封面;all:四种状态均继续现有标题与封面采集流程。
- 重新采集时不使用旧状态预过滤;所有当前筛选候选都重新打开页面检测,确保状态可以从异常恢复为正常。
- 不新增商品状态列;本轮日志和行结果使用中文说明“未上架,按本轮范围略过”“审核中,按本轮范围略过”“状态未知,按本轮范围略过”。需要查看诊断时,可从日志读取状态说明和检测时间。
- 采集结束汇总由本轮 Worker 结果累计,不扫描当前表格或历史数据库:正常、未上架、审核中、未知、按范围略过、技术失败分别统计;同一任务只计一次主结果。
验收标准
- 没有候选任务时保持现有提示,不弹范围框;点击取消不创建 Worker、不写 DB、不打开 Chrome 页面。
- 弹窗默认焦点为“只采集状态正常的商品”,回车不能触发“采集所有状态”,危险选择不会跨轮记忆。
normal_only仍逐条检测并保存状态,仅正常商品继续采集内容;其他状态不下载封面、不覆盖旧内容、不算技术失败。all保存四类状态并继续现有采集流程;两种策略均不依据旧状态提前排除。- 本轮日志、行结果和汇总准确区分四类状态、范围略过与技术失败,取消和范围略过不影响原失败统计。
- 不增加商品状态筛选控件,不改变采集顺序、账号并行、停止、重试、失效商品和 tab 关闭逻辑。
测试与文档
tests/test_gui.py覆盖无候选、默认按钮、两种策略、取消、策略不记忆、Worker 参数和汇总。tests/test_workers.py覆盖四类状态在两种策略下的继续/略过矩阵、状态独立落库、旧内容保留和技术失败统计。- 更新
docs/routes.md、docs/04-architecture.md和docs/api.md。
验证
py -3.10 -m unittest tests.test_gui
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。
- 本任务只决定是否采集标题和封面;是否进入付费生成由 T-662c 独立确认。
执行记录
- 已实现采集范围确认框:默认“只采集状态正常的商品”,红色“采集所有状态的商品”,取消不启动 Worker。
CollectWorker将范围策略冻结在本轮运行日志中;逐条先读取并保存商品状态。默认范围仅采集正常商品,异常/未知商品保留旧标题和封面并按范围略过;全部范围继续采集四类状态。- 汇总、行结果和运行日志分别统计四类状态与按范围略过数,账号预检略过统计不再把业务范围略过误报为“其他”。
- 已更新
docs/routes.md、docs/04-architecture.md、docs/api.md。 - 验证通过:
py -3.10 -m unittest tests.test_editor_login tests.test_workers tests.test_gui(267 项)、py -3.10 -m unittest discover -s tests(605 项)、py -3.10 -m ruff check app tests main.py、py -3.10 -m compileall app main.py、git diff --check。