点击“自动获取”后,Client 从 Admin 领取并写入一条新任务时,任务表格不会立即出现该记录,要等整次采集或采购执行结束后才刷新。
复现步骤:
当前 ClaimTaskWorker 已定义并连接 taskSaved 信号,但委托给 TaskDispatcher 后没有在任务写入 SQLite 的时刻发出该信号,只会在整轮执行结束后发出 outcome。
ClaimTaskWorker
taskSaved
TaskDispatcher
outcome
同时调整同一区域的低风险界面文案和宽度:按钮改名为“自动获取”,关键词输入框缩短。
client/src/task_dispatcher.py
client/src/pdd_ui_event.py
_on_claimed_task_saved()
_reload()
client/src/pdd_ui.py
client/test
从 client/ 执行:
client/
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 C:/Python310/python.exe -m py_compile src/task_dispatcher.py src/pdd_ui_event.py src/pdd_ui.py
离屏界面冒烟:
$env:QT_QPA_PLATFORM="offscreen" C:/Python310/python.exe -c "from src.ui_main import MainWindow; from PyQt5.QtWidgets import QApplication; app=QApplication([]); w=MainWindow(); print('OK'); app.quit()" Remove-Item Env:QT_QPA_PLATFORM
需要真机验证领取后、自动化结束前表格已经刷新;不得以自动付款作为测试内容。
开始实施。已确认当前根因:ClaimTaskWorker 虽连接了 taskSaved,但 TaskDispatcher 在新任务写入 SQLite 后没有发出中间通知,界面只能等整轮手机执行结束的 outcome 才刷新。将按工单方案增加“落库完成”回调,经 Qt 信号回到主线程刷新;同时统一“自动获取”文案并把关键词框最大宽度调整为 240。现有工作区有用户未提交修改,实施会原样保留无关内容。
实现与自动化验证已完成,准备提交:
task_saved(task_id)
验证结果:专项测试 53 项通过;Client 全量测试 294 项通过;离屏主窗口冒烟输出 OK;语法检查和 git diff --check 通过。尚未进行真机领取时序和 100%~200% DPI 人工视觉验收。
OK
git diff --check
实现提交已创建:39686d7(fix: 领取任务后立即刷新列表 (#107))。提交只包含 #107 的代码、测试和基线文档同步;工作区原有的页面标题隐藏、主窗口及其他未跟踪文件均未纳入提交。工单进入待用户验收状态,真机领取时序和实际 DPI 视觉检查仍需人工验收。
39686d7
fix: 领取任务后立即刷新列表 (#107)
本地归档已完成:docs/task/107-领取任务后立即刷新列表并调整任务栏布局.md,归档提交 9d227b4(docs: 归档任务 #107)。
docs/task/107-领取任务后立即刷新列表并调整任务栏布局.md
9d227b4
docs: 归档任务 #107
当前状态:代码与自动化验证完成,等待用户真机和界面验收。#1、#2 的 #107 清单暂不勾选,工单暂不关闭;验收通过后再同步父工单并关闭。
用户已于 2026-08-11 明确验收通过。
eca9289
No dependencies set.
The note is not visible to the blocked user.
基本信息
要解决什么
点击“自动获取”后,Client 从 Admin 领取并写入一条新任务时,任务表格不会立即出现该记录,要等整次采集或采购执行结束后才刷新。
复现步骤:
当前
ClaimTaskWorker已定义并连接taskSaved信号,但委托给TaskDispatcher后没有在任务写入 SQLite 的时刻发出该信号,只会在整轮执行结束后发出outcome。同时调整同一区域的低风险界面文案和宽度:按钮改名为“自动获取”,关键词输入框缩短。
做什么 / 不做什么
怎么做
client/src/task_dispatcher.py为“新任务已持久化”提供明确的轻量通知边界,只在新领取任务成功落库后触发。client/src/pdd_ui_event.py由 Worker 把该通知转换为现有taskSavedQt 信号,主线程复用_on_claimed_task_saved()和_reload()刷新列表;后台线程不直接访问 QWidget。client/src/pdd_ui.py同步调整按钮初始文案、停止状态文案、无障碍名称及关键词框尺寸约束。client/test中 Dispatcher、事件层和页面布局测试。验收标准
怎么验证
从
client/执行:离屏界面冒烟:
需要真机验证领取后、自动化结束前表格已经刷新;不得以自动付款作为测试内容。
开始实施。已确认当前根因:
ClaimTaskWorker虽连接了taskSaved,但TaskDispatcher在新任务写入 SQLite 后没有发出中间通知,界面只能等整轮手机执行结束的outcome才刷新。将按工单方案增加“落库完成”回调,经 Qt 信号回到主线程刷新;同时统一“自动获取”文案并把关键词框最大宽度调整为 240。现有工作区有用户未提交修改,实施会原样保留无关内容。实现与自动化验证已完成,准备提交:
TaskDispatcher在新领取任务成功写入 SQLite 并可重新读到后,立即调用轻量task_saved(task_id)通知;重复任务不误报。ClaimTaskWorker将通知转换为现有taskSavedQt 信号,主线程立即按当前筛选条件刷新,手机执行完成后仍保留最终状态刷新。验证结果:专项测试 53 项通过;Client 全量测试 294 项通过;离屏主窗口冒烟输出
OK;语法检查和git diff --check通过。尚未进行真机领取时序和 100%~200% DPI 人工视觉验收。实现提交已创建:
39686d7(fix: 领取任务后立即刷新列表 (#107))。提交只包含 #107 的代码、测试和基线文档同步;工作区原有的页面标题隐藏、主窗口及其他未跟踪文件均未纳入提交。工单进入待用户验收状态,真机领取时序和实际 DPI 视觉检查仍需人工验收。本地归档已完成:
docs/task/107-领取任务后立即刷新列表并调整任务栏布局.md,归档提交9d227b4(docs: 归档任务 #107)。当前状态:代码与自动化验证完成,等待用户真机和界面验收。#1、#2 的 #107 清单暂不勾选,工单暂不关闭;验收通过后再同步父工单并关闭。
用户已于 2026-08-11 明确验收通过。
eca9289