Files
cmautobuy/docs/task/107-领取任务后立即刷新列表并调整任务栏布局.md
T
2026-08-10 17:12:48 +08:00

73 lines
3.7 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.
# 107 领取任务后立即刷新列表并调整任务栏布局
- 类型:缺陷
- 父级大工单:#1
- 所属 MVP / 版本:#2
- 状态:已完成(待验收)
- 日期:2026-08-10
- Gitea 工单:<http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/107>
## 背景与目标
统一任务分派器领取新任务后会立即写入 SQLite,但原代码没有把“任务已经落库”
这个中间状态通知界面。任务表格要等整轮手机采集或采购完成后才刷新,用户无法及时
确认任务已经领取。
本任务让新任务落库后立即刷新任务列表,同时把按钮文案统一为“自动获取”,并缩短
关键词输入框。
## 最终方案
- `TaskDispatcher` 接收一个只传任务编号的 `task_saved` 回调。只有新领取任务成功
写入 SQLite 且可以重新读取时才调用;重复任务不误报。
- `ClaimTaskWorker` 把该回调转换为已有的 `taskSaved` Qt 信号。界面仍只在主线程中
按当前筛选条件刷新,后台线程不访问 QWidget。
- 手机执行结束后的最终状态刷新保持不变,因此列表既能及时出现新任务,也能显示
最终执行结果。
- 停止状态按钮统一显示“自动获取”,运行状态继续显示“停止自动获取”;无障碍名称
跟随按钮状态更新。
- 关键词输入框宽度调整为 150~240,保留 Qt 布局和紧凑/宽窗口重排逻辑。
- 同步更新 Client 架构与界面交互基线文档。
实现与建单方案一致。额外同步了两份长期基线文档,避免按钮文案与代码不一致;没有
改变任务状态机、Admin 接口、请求次数或 PDD 自动化流程。
## 改了哪些
- `client/src/task_dispatcher.py`:在新任务落库后发出轻量通知。
- `client/src/pdd_ui_event.py`:把落库通知转换为 Qt 信号并复用列表刷新入口。
- `client/src/pdd_ui.py`:调整按钮文案、无障碍名称和关键词框宽度。
- `client/test/test_task_dispatcher.py`:验证通知发生在落库后、执行前。
- `client/test/test_pdd_ui_event.py`:阻塞后台采集,验证执行结束前表格已经刷新。
- `client/test/test_pdd_ui.py`:验证按钮状态文案、无障碍名称和宽度约束。
- `docs/client/02-architecture.md`:同步主按钮文案。
- `docs/client/05-ui-specification.md`:同步按钮和关键词框规范。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| 新任务落库后立即按当前筛选刷新,不等待手机执行结束 | 通过 |
| 手机执行结束后继续刷新最终状态 | 通过 |
| 按钮显示“自动获取”/“停止自动获取”,无障碍名称一致 | 通过 |
| 关键词框最大宽度 240,最小宽度 150,布局保持自适应 | 通过 |
| 不改变 Admin 请求、调度顺序、任务状态机和自动化流程 | 通过 |
| 专项测试、Client 全量测试和离屏启动通过 | 通过 |
## 测试
- 执行的命令:
- `C:/Python310/python.exe -m py_compile src/task_dispatcher.py src/pdd_ui_event.py src/pdd_ui.py`
- `C:/Python310/python.exe -m pytest test/test_task_dispatcher.py test/test_pdd_ui_event.py test/test_pdd_ui.py -q`
- `C:/Python310/python.exe -m pytest test -q`
- 设置 `QT_QPA_PLATFORM=offscreen` 后创建 `MainWindow` 的离屏冒烟命令
- `git diff --check`
- 结果:专项测试 53 项通过;Client 全量测试 294 项通过;离屏冒烟输出 `OK`;
语法和差异检查通过。
- **没验证到的部分**:未连接真实 Admin 和 Android 设备验证领取后的实际刷新时序;
未人工检查 Windows 100%~200% DPI、浅色、深色和高对比度下的视觉效果。
## 相关提交
- `39686d7` fix: 领取任务后立即刷新列表 (#107)