2026-08-08 09:47:31 +08:00
|
|
|
# 39 PDD 任务详情窗口与颜色价格展示
|
|
|
|
|
|
|
|
|
|
- 类型:需求
|
|
|
|
|
- 父级大工单:#1
|
|
|
|
|
- 所属 MVP / 版本:#2 / MVP
|
2026-08-11 10:56:59 +08:00
|
|
|
- 状态:已完成,用户验收通过
|
2026-08-08 09:47:31 +08:00
|
|
|
- 日期:2026-08-08
|
|
|
|
|
- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/39
|
|
|
|
|
|
|
|
|
|
## 背景与目标
|
|
|
|
|
|
|
|
|
|
任务列表原来会发出“查看详情”信号,但事件层没有处理,因此用户无法查看 SQLite 中已经保存的完整采集结果。本任务增加只读详情窗口,把颜色和尺码分区展示,并让每个颜色后面直接显示采集价格。
|
|
|
|
|
|
|
|
|
|
## 最终方案
|
|
|
|
|
|
|
|
|
|
- 沿用任务表格已有的“详情”、双击行和 Enter 三个入口,不修改表格模型,也不把完整 `pdd_data` 放入表格。
|
|
|
|
|
- 事件层收到任务编号后,通过 `TaskRepository.get_task()` 读取一条完整记录,再打开可调整大小的非模态窗口。
|
|
|
|
|
- 相同任务只创建一个详情窗口;重复打开时切回已有窗口。主窗口退出时关闭全部详情窗口。
|
|
|
|
|
- 颜色放在上方,尺码放在下方,并按采集顺序去重。
|
|
|
|
|
- 一个颜色只有一个有效价格时显示单价;存在多个价格时显示最低价到最高价并标记“价格不一致”;没有价格时显示“价格未采集”。不可用颜色另外显示“不可用”。
|
|
|
|
|
- 老数据没有 `dimensions` 时,从 `skus.options` 恢复颜色和尺码,避免详情完全为空。
|
|
|
|
|
- 使用 PyQt-Fluent-Widgets 的卡片、标签、流式布局、滚动区域和按钮;窗口支持 Esc 和“关闭”按钮返回列表。
|
2026-08-08 10:30:49 +08:00
|
|
|
- 任务详情面向采购人员,`current_step` 在界面层转换为中文;数据库仍保存稳定英文值,未知内部值显示“未知步骤”。
|
2026-08-08 09:47:31 +08:00
|
|
|
- 本任务只读本地数据,不请求 Admin,也不操作 Android 设备。
|
|
|
|
|
|
|
|
|
|
## 改了哪些
|
|
|
|
|
|
2026-08-08 10:30:49 +08:00
|
|
|
- `client/src/task_detail_view.py`:新增详情展示数据、颜色价格聚合规则、当前步骤中文映射和非模态详情窗口。
|
2026-08-08 09:47:31 +08:00
|
|
|
- `client/src/pdd_ui_event.py`:接收详情信号、读取 Repository、复用窗口并处理关闭生命周期。
|
|
|
|
|
- `client/test/test_task_detail_view.py`:测试去重、价格范围、缺价、旧数据回退、空数据和窗口创建。
|
|
|
|
|
- `client/test/test_pdd_ui_event.py`:测试详情窗口打开、非模态、相同任务复用和任务不存在。
|
|
|
|
|
- `docs/client/05-ui-specification.md`:记录详情入口、颜色价格和尺码展示规范。
|
|
|
|
|
|
|
|
|
|
## 验收结果
|
|
|
|
|
|
|
|
|
|
| 验收标准 | 结果 |
|
|
|
|
|
|---|---|
|
|
|
|
|
| 点击“详情”、双击任务行或按 Enter 均可进入同一详情流程 | 通过(复用现有三个信号入口) |
|
|
|
|
|
| 详情窗口非模态、可调整大小,相同任务不重复创建 | 通过 |
|
|
|
|
|
| 颜色位于尺码上方,每个颜色旁显示价格或明确缺价 | 通过 |
|
|
|
|
|
| 同色多价格显示范围并提示不一致 | 通过 |
|
|
|
|
|
| 颜色、尺码保持采集顺序并去重 | 通过 |
|
|
|
|
|
| 不可用、空数据和旧格式数据有明确结果 | 通过 |
|
|
|
|
|
| 表格模型不保存完整 `pdd_data` | 通过 |
|
|
|
|
|
| SQLite 读取失败或任务不存在时不打开空窗口 | 通过 |
|
2026-08-08 10:30:49 +08:00
|
|
|
| 当前步骤不向采购人员直接显示英文内部值 | 通过 |
|
2026-08-08 09:47:31 +08:00
|
|
|
| 语法检查、完整回归和主窗口离屏冒烟通过 | 通过 |
|
|
|
|
|
|
|
|
|
|
## 测试
|
|
|
|
|
|
|
|
|
|
- 执行的命令:
|
|
|
|
|
|
|
|
|
|
```powershell
|
|
|
|
|
cd client
|
|
|
|
|
C:/Python310/python.exe -m py_compile src/task_detail_view.py src/pdd_ui_event.py test/test_task_detail_view.py test/test_pdd_ui_event.py
|
|
|
|
|
$env:QT_QPA_PLATFORM="offscreen"
|
|
|
|
|
C:/Python310/python.exe -m unittest discover -s test
|
|
|
|
|
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.processEvents(); app.quit()"
|
|
|
|
|
Remove-Item Env:QT_QPA_PLATFORM
|
|
|
|
|
```
|
|
|
|
|
|
2026-08-08 10:30:49 +08:00
|
|
|
- 结果:首次实现回归 162 项通过;中文化验收修正后的完整 Client 回归共 166 项全部通过;主窗口离屏冒烟输出 `OK`;未新增依赖。离屏环境仍会输出现有 Qt 字体目录警告,不影响结果。
|
2026-08-08 09:47:31 +08:00
|
|
|
- **没验证到的部分**:没有在实体 Windows 显示器上人工检查浅色、深色、100%~200% 缩放和大量颜色时的实际排版;没有连接真机,因为详情窗口只读取本地 SQLite,不需要设备。
|
|
|
|
|
|
|
|
|
|
## 相关提交
|
|
|
|
|
|
|
|
|
|
- `cb323d3` 实现 PDD 任务详情窗口
|
2026-08-08 10:30:49 +08:00
|
|
|
- `2f83be5` 中文显示任务当前步骤
|