Files
cmautobuy/docs/task/39-PDD任务详情窗口与颜色价格展示.md
T

4.2 KiB

39 PDD 任务详情窗口与颜色价格展示

  • 类型:需求
  • 父级大工单:#1
  • 所属 MVP / 版本:#2 / MVP
  • 状态:已完成,用户验收通过
  • 日期:2026-08-08
  • Gitea 工单:#39

背景与目标

任务列表原来会发出“查看详情”信号,但事件层没有处理,因此用户无法查看 SQLite 中已经保存的完整采集结果。本任务增加只读详情窗口,把颜色和尺码分区展示,并让每个颜色后面直接显示采集价格。

最终方案

  • 沿用任务表格已有的“详情”、双击行和 Enter 三个入口,不修改表格模型,也不把完整 pdd_data 放入表格。
  • 事件层收到任务编号后,通过 TaskRepository.get_task() 读取一条完整记录,再打开可调整大小的非模态窗口。
  • 相同任务只创建一个详情窗口;重复打开时切回已有窗口。主窗口退出时关闭全部详情窗口。
  • 颜色放在上方,尺码放在下方,并按采集顺序去重。
  • 一个颜色只有一个有效价格时显示单价;存在多个价格时显示最低价到最高价并标记“价格不一致”;没有价格时显示“价格未采集”。不可用颜色另外显示“不可用”。
  • 老数据没有 dimensions 时,从 skus.options 恢复颜色和尺码,避免详情完全为空。
  • 使用 PyQt-Fluent-Widgets 的卡片、标签、流式布局、滚动区域和按钮;窗口支持 Esc 和“关闭”按钮返回列表。
  • 任务详情面向采购人员,current_step 在界面层转换为中文;数据库仍保存稳定英文值,未知内部值显示“未知步骤”。
  • 本任务只读本地数据,不请求 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 读取失败或任务不存在时不打开空窗口 通过
当前步骤不向采购人员直接显示英文内部值 通过
语法检查、完整回归和主窗口离屏冒烟通过 通过

测试

  • 执行的命令:

    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
    
  • 结果:首次实现回归 162 项通过;中文化验收修正后的完整 Client 回归共 166 项全部通过;主窗口离屏冒烟输出 OK;未新增依赖。离屏环境仍会输出现有 Qt 字体目录警告,不影响结果。

  • 没验证到的部分:没有在实体 Windows 显示器上人工检查浅色、深色、100%~200% 缩放和大量颜色时的实际排版;没有连接真机,因为详情窗口只读取本地 SQLite,不需要设备。

相关提交

  • cb323d3 实现 PDD 任务详情窗口
  • 2f83be5 中文显示任务当前步骤