docs: 归档任务 #107

This commit is contained in:
chengma
2026-08-10 17:12:48 +08:00
parent 39686d7b3b
commit 9d227b431a
@@ -0,0 +1,72 @@
# 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)