diff --git a/docs/task/176-重新执行支持当前行兜底.md b/docs/task/176-重新执行支持当前行兜底.md new file mode 100644 index 0000000..834b74a --- /dev/null +++ b/docs/task/176-重新执行支持当前行兜底.md @@ -0,0 +1,52 @@ +# 176 重新采集和重新采购支持当前行兜底 + +- 类型:需求 +- 父级大工单:#1 +- 所属 MVP / 版本:#2 +- 状态:已完成,待用户验收 +- 日期:2026-08-12 +- Gitea 工单: + +## 背景与目标 + +原来的“重新采集”和“重新采购”只读取复选框勾选集。用户已经单击选中任务行时,仍需再次点击较小的复选框。本任务增加当前行兜底,同时保留批量勾选的明确优先级和原有采购安全门禁。 + +## 最终方案 + +- 集中使用 `_rerun_target_task_ids()` 解析目标:存在勾选时返回全部勾选任务;没有勾选时返回当前行的稳定 `remote_task_id`。 +- 只要列表存在真实任务就允许点击“重新采集”和“重新采购”;没有勾选和当前行时在底部状态区提示用户先勾选或单击一行。 +- 当前行和复选框继续相互独立,重新上报和删除仍只接受勾选集。 +- 事件层、批量类型过滤、Android 设备预检、确认弹窗和采购不可逆门禁没有改动。 + +与建单方案的实现细节差异:不需要监听每一次当前行变化来反复启停按钮。列表存在真实任务时保持按钮可用,由点击时的统一目标解析给出兜底或提示,代码更直白,也能覆盖“尚未选择当前行”的提示场景。 + +## 改了哪些 + +- `client/src/pdd_ui.py`:增加重新执行目标解析和缺少目标提示,调整按钮启用规则及无障碍名称。 +- `client/test/test_pdd_ui.py`:覆盖当前行兜底、勾选优先、缺少目标提示,以及重新上报和删除边界。 +- `client/test/test_pdd_ui_event.py`:更新有真实任务时重新执行按钮可用的既有断言。 +- `docs/client/05-ui-specification.md`:记录勾选优先、当前行兜底的稳定交互规则。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| 勾选任务时只使用勾选集 | 通过 | +| 无勾选时使用当前行的稳定任务编号 | 通过 | +| 无勾选且无当前行时显示明确提示 | 通过 | +| 单击当前行不改变勾选状态 | 通过 | +| 重新上报和删除仍只作用于勾选集 | 通过 | +| 原有类型过滤、设备预检及采购安全门禁不变 | 通过 | +| 占位空行不成为操作目标 | 通过 | + +## 测试 + +- 执行的命令:在 `client` 目录执行 `$env:QT_QPA_PLATFORM='offscreen'; C:/Python310/python.exe -m unittest discover -s test -p 'test_pdd_ui*.py'` +- 结果:68 个测试全部通过。 +- 执行的命令:在 `client` 目录执行 `$env:QT_QPA_PLATFORM='offscreen'; C:/Python310/python.exe -m unittest discover -s test -p 'test_*.py'` +- 结果:439 个 Client 测试全部通过。 +- **没验证到的部分**:未进行人工鼠标操作验收;本次没有改变真机自动化和采购执行逻辑。 + +## 相关提交 + +- `bb7a502` feat: 重新执行支持当前行兜底 (#176)