Files
cmautobuy/docs/task/89-PDD任务批量勾选和重新上报.md
T

3.9 KiB
Raw Blame History

89 PDD 任务表增加批量勾选和重新上报

  • 类型:需求
  • 父级大工单:#1
  • 所属 MVP / 版本:#2
  • 状态:已完成,用户验收通过
  • 日期:2026-08-10
  • Gitea 工单:#89

背景与目标

原来的 PDD 任务表只能依赖当前行执行操作,不方便明确选择任务,也不能把客户端已有的采集或采购结果再次提交给 Admin。

本次给任务表增加逐行勾选和批量重新上报能力,同时调整按钮位置,让“搜索”和“刷新”相邻,并避免重新上报误触发手机自动化。

最终方案

  • 表格最左侧增加“选择”列,勾选状态使用 remote_task_id 保存,刷新后仍存在的任务保持勾选。
  • 搜索时清空勾选,避免对筛选前不可见的任务执行操作。
  • “重新执行”只接受一条已勾选任务,继续沿用原有采集任务校验,不增加批量手机自动化。
  • “重新上报”接受多条已勾选任务,读取每条任务最新的 collect_result 或 purchase_result Outbox 原始负载和幂等键,再提交给 Admin。
  • 重新上报不操作 Android 设备、不创建新 Outbox、不生成任务失败事件,也不修改本地采集或采购结果。
  • 成功上报的任务自动取消勾选;失败或跳过的任务保留勾选,并显示成功、失败和跳过数量。
  • 自动获取、重新执行和重新上报互斥,关闭页面时等待重新上报线程安全退出。
  • 宽窗口使用一行操作区;窄窗口自动改为两行,搜索按钮和刷新按钮始终相邻。

实现与建单方案一致,没有修改数据库结构和 Admin 接口。

改了哪些

  • client/src/pdd_ui.py:增加选择列、勾选状态、重新上报按钮和响应式操作区。
  • client/src/pdd_ui_event.py:增加重新上报工作线程、确认提示、进度反馈和任务互斥控制。
  • client/src/task_repository.py:增加读取任务最新结果 Outbox 的方法。
  • client/test/test_pdd_ui.py:增加任务表选择状态和响应式布局测试。
  • client/test/test_pdd_ui_event.py:增加重新上报成功、失败、跳过、取消和线程退出测试。
  • client/test/test_task_repository.py:增加最新结果 Outbox 查询测试。
  • client/AGENTS.md:补充重新上报操作的开发约束。
  • docs/client/05-ui-specification.md:更新 PDD 任务列表界面和交互规范。

验收结果

验收标准 结果
表格左侧可以逐行勾选,空白占位行不能勾选 通过
普通刷新保留仍存在任务的勾选,搜索清空勾选 通过
“刷新”位于“搜索”右侧,“重新上报”位于“重新执行”右侧 通过
“重新执行”只允许一条已勾选任务 通过
“重新上报”可以处理多条任务,并复用原始结果负载和幂等键 通过
重新上报不调用 Android 自动化,也不创建新 Outbox 通过
成功任务取消勾选,失败或跳过任务保留勾选 通过
自动获取、重新执行和重新上报互斥 通过
窄窗口操作区自动换行,搜索和刷新保持相邻 通过
Client 完整自动测试通过 通过,共 232 项

测试

  • 执行的命令:C:/Python310/python.exe -m unittest discover -s client/test -p "test_*.py"
  • 结果:Ran 232 tests in 10.121s,OK。
  • 执行的命令:使用 QT_QPA_PLATFORM=offscreen 创建并关闭 MainWindow。
  • 结果:窗口初始化冒烟测试通过,输出 OK。
  • 执行的命令:git diff --cached --check
  • 结果:通过,没有空白错误。
  • 没验证到的部分:没有连接真实 Admin 手工执行批量重新上报;没有在真实 Windows 显示器上逐项检查不同 DPI、窗口宽度和主题下的视觉效果。

相关提交

  • 34ff39a 增加任务批量勾选和重新上报