From 18770f25e192cb976be82dd0fbc47aa5d594fa21 Mon Sep 17 00:00:00 2001 From: chengma Date: Sat, 8 Aug 2026 09:47:31 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BD=92=E6=A1=A3=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?#39?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/task/39-PDD任务详情窗口与颜色价格展示.md | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 docs/task/39-PDD任务详情窗口与颜色价格展示.md diff --git a/docs/task/39-PDD任务详情窗口与颜色价格展示.md b/docs/task/39-PDD任务详情窗口与颜色价格展示.md new file mode 100644 index 0000000..b63bf96 --- /dev/null +++ b/docs/task/39-PDD任务详情窗口与颜色价格展示.md @@ -0,0 +1,65 @@ +# 39 PDD 任务详情窗口与颜色价格展示 + +- 类型:需求 +- 父级大工单:#1 +- 所属 MVP / 版本:#2 / MVP +- 状态:已实现,待验收 +- 日期: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 和“关闭”按钮返回列表。 +- 本任务只读本地数据,不请求 Admin,也不操作 Android 设备。 + +## 改了哪些 + +- `client/src/task_detail_view.py`:新增详情展示数据、颜色价格聚合规则和非模态详情窗口。 +- `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 读取失败或任务不存在时不打开空窗口 | 通过 | +| 语法检查、完整回归和主窗口离屏冒烟通过 | 通过 | + +## 测试 + +- 执行的命令: + + ```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 + ``` + +- 结果:语法检查通过;完整 Client 测试共 162 项全部通过;主窗口离屏冒烟输出 `OK`;未新增依赖。离屏环境仍会输出现有 Qt 字体目录警告,不影响结果。 +- **没验证到的部分**:没有在实体 Windows 显示器上人工检查浅色、深色、100%~200% 缩放和大量颜色时的实际排版;没有连接真机,因为详情窗口只读取本地 SQLite,不需要设备。 + +## 相关提交 + +- `cb323d3` 实现 PDD 任务详情窗口