docs: 归档任务 #89

This commit is contained in:
chengma
2026-08-10 10:57:41 +08:00
parent 34ff39a200
commit d81aa25b13
@@ -0,0 +1,67 @@
# 89 PDD 任务表增加批量勾选和重新上报
- 类型:需求
- 父级大工单:#1
- 所属 MVP / 版本:#2
- 状态:已完成,待用户验收
- 日期:2026-08-10
- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/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` 增加任务批量勾选和重新上报