From 9d227b431a50d3936d28f35f7c98f405fc689470 Mon Sep 17 00:00:00 2001 From: chengma Date: Mon, 10 Aug 2026 17:12:48 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BD=92=E6=A1=A3=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?#107?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...-领取任务后立即刷新列表并调整任务栏布局.md | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 docs/task/107-领取任务后立即刷新列表并调整任务栏布局.md diff --git a/docs/task/107-领取任务后立即刷新列表并调整任务栏布局.md b/docs/task/107-领取任务后立即刷新列表并调整任务栏布局.md new file mode 100644 index 0000000..b4b3e91 --- /dev/null +++ b/docs/task/107-领取任务后立即刷新列表并调整任务栏布局.md @@ -0,0 +1,72 @@ +# 107 领取任务后立即刷新列表并调整任务栏布局 + +- 类型:缺陷 +- 父级大工单:#1 +- 所属 MVP / 版本:#2 +- 状态:已完成(待验收) +- 日期:2026-08-10 +- Gitea 工单: + +## 背景与目标 + +统一任务分派器领取新任务后会立即写入 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)