# 131 PDD 任务表增加全选和反选并移除详情列 - 类型:需求 - 父级大工单:#1 - 所属 MVP / 版本:#2 Client 可运行任务闭环 - 状态:已完成,用户验收通过 - 日期:2026-08-11 - Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/131 ## 背景与目标 PDD 任务表已有逐行勾选和批量操作,但任务较多时逐条勾选效率低,最后的“操作 / 详情”列也占用横向空间。本任务增加全选和反选,并在保留详情入口的前提下移除详情列。 ## 最终方案 - “全选”和“反选”只处理当前已加载的真实任务,忽略空白占位行。 - 全选后新领取或继续增量加载的任务默认不勾选,避免删除或重新上报范围自动扩大。 - 勾选继续使用 `remote_task_id`;批量修改后一次刷新复选框列并发送一次勾选变化信号。 - 没有真实任务,或重新执行、重新上报、删除正在运行时,禁用全选和反选。 - 删除“操作 / 详情”列。双击任务行的非复选框区域,或选中行后按 Enter,仍可打开详情;复选框只改变勾选状态。 - 宽布局在 1460px 及以上使用单行命令区;较窄布局将筛选和批量操作分成三行,避免按钮拥挤。 方案的功能范围没有变化;实施时补充了 1460px 响应式断点和紧凑三行布局这一实现细节。 ## 改了哪些 - `client/src/pdd_ui.py`:增加全选、反选和忙碌状态控制,移除详情列,保留双击 / Enter 详情入口。 - `client/test/test_pdd_ui.py`:覆盖全选、反选、占位行、增量加载、响应式布局、忙碌状态和详情入口。 - `docs/client/00-glossary.md`:修正不再适用的详情列委托示例。 - `docs/client/01-requirements.md`:更新任务详情入口描述。 - `docs/client/05-ui-specification.md`:更新命令区、表格列、批量选择和键盘交互规范。 ## 验收结果 | 验收标准 | 结果 | |---|---| | 有任务时可全选和反选,空表及批量忙碌时禁用 | 通过 | | 只处理当前已加载真实任务,不处理占位行 | 通过 | | 后续增量加载任务默认不勾选 | 通过 | | 使用 `remote_task_id` 并准确更新已选数量和操作按钮 | 通过 | | 搜索清空勾选、普通刷新保留有效勾选 | 通过 | | 移除“操作 / 详情”列 | 通过 | | 双击或 Enter 仍可查看详情,复选框不打开详情 | 通过 | | 现有重新执行、重新上报、删除规则不回归 | 通过 | | Client 全量自动测试通过,未启用真实下单 | 通过 | ## 测试 - 执行的命令: ```powershell C:/Python310/python.exe -m py_compile src/pdd_ui.py $env:QT_QPA_PLATFORM="offscreen" C:/Python310/python.exe -m unittest discover -s test -p "test_pdd_ui.py" -v C:/Python310/python.exe -m unittest discover -s test -v C:/Python310/python.exe -c "from src.ui_main import MainWindow; from PyQt5.QtWidgets import QApplication; app=QApplication([]); w=MainWindow(); print('OK'); w.close(); app.quit()" Remove-Item Env:QT_QPA_PLATFORM ``` - 结果:PDD UI 针对性测试 10 项通过;Client 全量 364 项通过;主窗口输出 `OK`;`git diff --check` 通过;1000px 和 1500px 离屏截图未发现按钮重叠。 - **没验证到的部分**:未在真实 Windows 桌面人工验证浅色、深色、高对比度、100%–200% DPI、Narrator 以及鼠标和键盘操作。测试环境有既有的 PyQt5 字体目录警告,不影响自动测试结果。 ## 相关提交 - `cc4c1c4` feat: 优化任务表批量选择和详情入口 (#131)