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

Closed
opened 2026-08-08 09:41:51 +08:00 by ila · 5 comments
Owner

基本信息

  • 类型:需求
  • 父级大工单:#1
  • 所属 MVP / 版本:#2 / MVP
  • 阶段:Client PDD 任务详情

要解决什么

Client 的 PDD 任务表格已经有“详情”入口、双击和 Enter 信号,但事件层没有连接,也没有详情窗口。已采集的完整 pdd_data 虽然保存在 SQLite,用户只能看到列表摘要,无法查看各颜色价格和全部尺码。

做什么 / 不做什么

  • 做:实现只读、可调整大小的非模态任务详情窗口;从“详情”、双击和 Enter 打开;按任务编号从 Repository 读取完整记录;颜色在上、尺码在下;颜色按名称去重并在文字后显示价格;尺码去重;展示基本任务和采集信息;处理无数据、缺价、同色多价和任务不存在。
  • 不做:不编辑任务;不重新采集;不调用 Admin;不操作 Android;不加购、不下单、不付款;本工单不实现原始 JSON 编辑器和诊断文件打开功能。

已确认方案

  1. 新增独立详情视���文件,保持 UI 与事件分层;窗口为当前主窗口拥有的非模态辅助窗口,重复打开同一任务时激活已有窗口。
  2. 窗口标题为“任务详情 · <远程任务号>”,支持调整大小、Escape/关闭按钮关闭,关闭后焦点返回任务表。
  3. 使用滚动内容和响应式 FlowLayout:颜色分类在上,尺码在下;普通宽度自动换行,不使用固定坐标。
  4. 颜色卡片为只读语义,不伪装成可选择规格按钮;文案为“颜色名称 ¥价格”。缺价显示“价格未采集”,不可用同时显示“不可用”文字。
  5. 从 pdd_data.skus 按颜色聚合价格:同色同价显示单价,同色多价显示价格范围并标记“价格不一致”,不能随意取第一条;尺寸从 dimensions 优先读取,缺失时从 SKU options 回退并去重。
  6. 展示任务编号、类型、状态、商品标题、商品编号、店铺、销量、评价、更新时间和最近错误。没有 pdd_data 时显示明确空状态。
  7. 单条 SQLite 详情查询在事件层按需执行;表格模型继续只保留摘要,不复制 pdd_data。
  8. 使用项目固定 PyQt5 5.15.11 和 PyQt-Fluent-Widgets 1.11.3;优先 Fluent 组件,保持浅色/深色、键盘和 100%–200% 缩放可用。
  9. 这是已确认布局的独立只读辅助窗口,不改变主页面信息架构,因此跳过 HTML 原型。

预计修改文件:

  • client/src/task_detail_view.py(新增)
  • client/src/pdd_ui_event.py
  • client/test/test_task_detail_view.py(新增)
  • client/test/test_pdd_ui_event.py
  • docs/client/05-ui-specification.md

验收标准

  • 点击详情、双击行和选中后按 Enter 均能打开对应任务详情。
  • 窗口非模态、可调整大小;重复打开同一任务不会创建多个窗口。
  • 颜色在上、尺码在下,并能随窗口宽度自动换行。
  • 每个颜色名称后显示单价、价格范围或“价格未采集”。
  • 颜色和尺码均去重,保持 dimensions 中的稳定顺序。
  • 同色多价不会静默选取一个价格,并显示文字提示。
  • 无 pdd_data、任务不存在和数据库读取失败均有明确反馈。
  • 表格模型不持有完整 pdd_data,详情只读且不产生外部操作。
  • 仅键盘可以打开和关闭窗口,关闭后任务表仍保持当前行。
  • Client 全量测试及离屏 UI 冒烟测试通过。

验证方式

从 client 目录执行:

C:/Python310/python.exe -m unittest discover -s test -p test_*.py -q
C:/Python310/python.exe -m py_compile src/task_detail_view.py src/pdd_ui_event.py

设置 QT_QPA_PLATFORM=offscreen 后验证窗口构造、颜色价格聚合、尺码去重、空状态、重复打开和关闭。

风险和回退

  • 风险:规格数量多、名称长或同色存在不同价格时可能造成布局过高或误导。
  • 控制:滚动区域、FlowLayout、完整工具提示、明确价格范围和缺失文字,不只用颜色表达状态。
  • 回退:移除详情视图连接即可恢复为原列表行为,不涉及数据库迁移和接口变化。
## 基本信息 - 类型:需求 - 父级大工单:#1 - 所属 MVP / 版本:#2 / MVP - 阶段:Client PDD 任务详情 ## 要解决什么 Client 的 PDD 任务表格已经有“详情”入口、双击和 Enter 信号,但事件层没有连接,也没有详情窗口。已采集的完整 `pdd_data` 虽然保存在 SQLite,用户只能看到列表摘要,无法查看各颜色价格和全部尺码。 ## 做什么 / 不做什么 - 做:实现只读、可调整大小的非模态任务详情窗口;从“详情”、双击和 Enter 打开;按任务编号从 Repository 读取完整记录;颜色在上、尺码在下;颜色按名称去重并在文字后显示价格;尺码去重;展示基本任务和采集信息;处理无数据、缺价、同色多价和任务不存在。 - 不做:不编辑任务;不重新采集;不调用 Admin;不操作 Android;不加购、不下单、不付款;本工单不实现原始 JSON 编辑器和诊断文件打开功能。 ## 已确认方案 1. 新增独立详情视���文件,保持 UI 与事件分层;窗口为当前主窗口拥有的非模态辅助窗口,重复打开同一任务时激活已有窗口。 2. 窗口标题为“任务详情 · <远程任务号>”,支持调整大小、Escape/关闭按钮关闭,关闭后焦点返回任务表。 3. 使用滚动内容和响应式 FlowLayout:颜色分类在上,尺码在下;普通宽度自动换行,不使用固定坐标。 4. 颜色卡片为只读语义,不伪装成可选择规格按钮;文案为“颜色名称 ¥价格”。缺价显示“价格未采集”,不可用同时显示“不可用”文字。 5. 从 `pdd_data.skus` 按颜色聚合价格:同色同价显示单价,同色多价显示价格范围并标记“价格不一致”,不能随意取第一条;尺寸从 dimensions 优先读取,缺失时从 SKU options 回退并去重。 6. 展示任务编号、类型、状态、商品标题、商品编号、店铺、销量、评价、更新时间和最近错误。没有 `pdd_data` 时显示明确空状态。 7. 单条 SQLite 详情查询在事件层按需执行;表格模型继续只保留摘要,不复制 `pdd_data`。 8. 使用项目固定 PyQt5 5.15.11 和 PyQt-Fluent-Widgets 1.11.3;优先 Fluent 组件,保持浅色/深色、键盘和 100%–200% 缩放可用。 9. 这是已确认布局的独立只读辅助窗口,不改变主页面信息架构,因此跳过 HTML 原型。 预计修改文件: - `client/src/task_detail_view.py`(新增) - `client/src/pdd_ui_event.py` - `client/test/test_task_detail_view.py`(新增) - `client/test/test_pdd_ui_event.py` - `docs/client/05-ui-specification.md` ## 验收标准 - [ ] 点击详情、双击行和选中后按 Enter 均能打开对应任务详情。 - [ ] 窗口非模态、可调整大小;重复打开同一任务不会创建多个窗口。 - [ ] 颜色在上、尺码在下,并能随窗口宽度自动换行。 - [ ] 每个颜色名称后显示单价、价格范围或“价格未采集”。 - [ ] 颜色和尺码均去重,保持 `dimensions` 中的稳定顺序。 - [ ] 同色多价不会静默选取一个价格,并显示文字提示。 - [ ] 无 `pdd_data`、任务不存在和数据库读取失败均有明确反馈。 - [ ] 表格模型不持有完整 `pdd_data`,详情只读且不产生外部操作。 - [ ] 仅键盘可以打开和关闭窗口,关闭后任务表仍保持当前行。 - [ ] Client 全量测试及离屏 UI 冒烟测试通过。 ## 验证方式 从 `client` 目录执行: C:/Python310/python.exe -m unittest discover -s test -p test_*.py -q C:/Python310/python.exe -m py_compile src/task_detail_view.py src/pdd_ui_event.py 设置 `QT_QPA_PLATFORM=offscreen` 后验证窗口构造、颜色价格聚合、尺码去重、空状态、重复打开和关闭。 ## 风险和回退 - 风险:规格数量多、名称长或同色存在不同价格时可能造成布局过高或误导。 - 控制:滚动区域、FlowLayout、完整工具提示、明确价格范围和缺失文字,不只用颜色表达状态。 - 回退:移除详情视图连接即可恢复为原列表行为,不涉及数据库迁移和接口变化。
Author
Owner

进度更新:已完成详情展示数据整理与非模态窗口骨架,并接通现有 detailRequested 信号。当前已覆盖颜色/尺码按采集顺序去重、同色单价/价格范围/缺价状态、旧 SKU 数据回退,以及同一任务详情窗口复用。目标离屏测试已通过,正在补充界面规范并执行完整 Client 回归。

进度更新:已完成详情展示数据整理与非模态窗口骨架,并接通现有 `detailRequested` 信号。当前已覆盖颜色/尺码按采集顺序去重、同色单价/价格范围/缺价状态、旧 SKU 数据回退,以及同一任务详情窗口复用。目标离屏测试已通过,正在补充界面规范并执行完整 Client 回归。
Author
Owner

实施完成,待用户验收

已完成:

  • 从现有“详情”列、双击行、Enter 三个入口打开详情;
  • 使用 TaskRepository.get_task() 按任务号读取完整本地记录,表格仍不保存 pdd_data;
  • 新增可调整大小的非模态详情窗口,相同任务复用同一窗口;
  • 颜色在上、尺码在下,按采集顺序去重;
  • 颜色展示单价、价格范围、价格未采集、价格不一致和不可用状态;
  • 兼容没有 dimensions、只有 SKU 的旧数据;
  • 主窗口关闭时同步清理详情窗口。

提交:

  • cb323d3 feat: 实现 PDD 任务详情窗口 (#39)
  • 18770f2 docs: 归档任务 #39

归档:docs/task/39-PDD任务详情窗口与颜色价格展示.md

验证:Python 语法检查通过;Client 完整回归 Ran 162 tests ... OK;主窗口离屏冒烟输出 OK;git diff --cached --check 通过。离屏 Qt 仍有本机字体目录警告,不影响结果。

未验证:实体 Windows 下浅色/深色、100%~200% 缩放和大量颜色的人工视觉检查。工单保持开启,等待用户验收。

## 实施完成,待用户验收 已完成: - 从现有“详情”列、双击行、Enter 三个入口打开详情; - 使用 `TaskRepository.get_task()` 按任务号读取完整本地记录,表格仍不保存 `pdd_data`; - 新增可调整大小的非模态详情窗口,相同任务复用同一窗口; - 颜色在上、尺码在下,按采集顺序去重; - 颜色展示单价、价格范围、价格未采集、价格不一致和不可用状态; - 兼容没有 `dimensions`、只有 SKU 的旧数据; - 主窗口关闭时同步清理详情窗口。 提交: - `cb323d3` `feat: 实现 PDD 任务详情窗口 (#39)` - `18770f2` `docs: 归档任务 #39` 归档:`docs/task/39-PDD任务详情窗口与颜色价格展示.md` 验证:Python 语法检查通过;Client 完整回归 `Ran 162 tests ... OK`;主窗口离屏冒烟输出 `OK`;`git diff --cached --check` 通过。离屏 Qt 仍有本机字体目录警告,不影响结果。 未验证:实体 Windows 下浅色/深色、100%~200% 缩放和大量颜色的人工视觉检查。工单保持开启,等待用户验收。
Author
Owner

验收修正:采购端详情中的 current_step 目前直接显示数据库英文值。按用户确认,界面层增加中文映射,不修改数据库存储值或任务状态逻辑;未知值显示“未知步骤”。本修正继续归属 #39。

验收修正:采购端详情中的 `current_step` 目前直接显示数据库英文值。按用户确认,界面层增加中文映射,不修改数据库存储值或任务状态逻辑;未知值显示“未知步骤”。本修正继续归属 #39。
Author
Owner

验收修正已完成:详情中的 current_step 通过界面映射显示中文,数据库值和任务状态逻辑未改;未知值显示“未知步骤”。

提交:

  • 2f83be5 fix: 中文显示任务当前步骤 (#39)
  • d8505a4 docs: 更新任务 #39 验收修正

归档已更新:docs/task/39-PDD任务详情窗口与颜色价格展示.md。Client 完整回归 166 项通过,#39 继续保持待用户验收。

验收修正已完成:详情中的 `current_step` 通过界面映射显示中文,数据库值和任务状态逻辑未改;未知值显示“未知步骤”。 提交: - `2f83be5` `fix: 中文显示任务当前步骤 (#39)` - `d8505a4` `docs: 更新任务 #39 验收修正` 归档已更新:`docs/task/39-PDD任务详情窗口与颜色价格展示.md`。Client 完整回归 166 项通过,#39 继续保持待用户验收。
Author
Owner

用户已于 2026-08-11 明确验收通过。

  • 本地归档状态已更新为“已完成,用户验收通过”
  • 验收记录提交:eca9289
  • 本工单按项目流程关闭
用户已于 2026-08-11 明确验收通过。 - 本地归档状态已更新为“已完成,用户验收通过” - 验收记录提交:`eca9289` - 本工单按项目流程关闭
ila closed this issue 2026-08-11 10:58:04 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#39