修复 PDD 单商品定位模式无法勾选创建采集任务 #84

Closed
opened 2026-08-25 10:59:40 +08:00 by ila · 2 comments
Owner

需求来源

  • 提出时间:2026-08-25
  • 来源:#83 待验收时发现的回归缺陷。
  • 用户反馈:PDD 商品页面列表左侧没有勾选功能,无法批量勾选后创建采集任务。
  • 用户确认:建立独立缺陷工单并修复。

当前事实与根因

  • #83 在单商品定位模式中使用 v-if="!location.active" 隐藏了列表选择列。
  • 从 SYB 商品“查看 PDD 商品”跳转时 URL 带有 productId,因此必然进入定位模式并失去勾选入口。
  • 隐藏选择列是因为现有商品详情响应未提供列表中的 collectionSelectable / collectionDisabledReason 采集资格信息;若只恢复列,定位商品仍可能被错误禁用或错误放行。
  • 普通 PDD 商品列表的批量采集能力是既有业务规则,定位模式不应取消该能力。

目标与方案

  1. 恢复单商品定位模式左侧选择列,不再因 location.active 隐藏。
  2. PDD 商品详情响应补齐与列表一致的采集资格字段:
    • collectionSelectable
    • collectionDisabledReason
  3. 详情接口复用列表现有的服务端资格判断,不在前端猜测:
    • 已停用;
    • 没有可用采集规则;
    • 已存在 pending/running 采集任务。
  4. 定位商品符合条件时可以勾选,并使用既有“批量创建采集任务”流程;不符合条件时禁用勾选并展示既有可读原因。
  5. 普通列表、#83 的单商品定位、查询退出和重置退出行为保持不变。

非目标

  • 不修改采集任务状态机、并发限制或批量创建上限。
  • 不新增数据库字段或迁移。
  • 不修改 Android Agent、采购任务、创建订单或支付。
  • 不改变“只选择当前页,每个商品独立创建任务”的既有规则。

设计证据

恢复现有 PDD 商品列表已确认的选择列和批量采集入口,定位模式仅将数据范围限制为一个商品:

[✓] goods_id | 商品 / 店铺 | 状态 / 采集任务 | ...
已选择 1 条                         [批量创建采集任务]
  • 可采集:勾选框可用。
  • 不可采集:勾选框禁用,并显示现有禁止原因。
  • 加载/失败/空状态:沿用 #83 与现有页面。
  • 权限:沿用 PDD 商品页和采集任务创建权限。

这是恢复既有明确行为的缺陷修复,复用现有组件和交互,不新增页面或主要流程,无需 QuantUX/HTML 原型。

依赖与影响

  • 依赖 #83 单商品定位模式。
  • 影响 Server Admin PDD 商品详情响应、Web PDD 商品页与对应测试。
  • 可独立实施;无数据库迁移和高风险动作。

验收标准

  • 普通 PDD 商品列表仍显示选择列并支持既有批量创建采集任务。
  • 带有效 productId 的单商品定位模式显示选择列。
  • 定位商品可采集时可以勾选,勾选后出现既有批量创建采集任务入口。
  • 定位商品不可采集时选择框禁用,并显示准确的禁止原因。
  • 详情和列表对同一商品返回一致的采集资格结论。
  • #83 的自动打开详情、只显示单商品、查询退出、重置退出和无效编号行为不回归。
  • Server/Web 定向测试及构建、Harness 严格检查通过。

验证计划

  • 服务端测试覆盖详情接口的可采集/无规则/有活动任务/停用状态。
  • Playwright 覆盖定位模式勾选、不可选禁用和普通列表回归。
  • 运行 .\scripts\verify.ps1 -Component server 与 .\scripts\verify.ps1 -Component web。
  • 运行 python dev_scripts/harness.py check --strict。
  • 不执行真机采集、采购、创建订单或支付。

文档影响

无长期文档影响:仅修复 Admin 详情响应与现有列表资格字段不一致的问题,恢复已经记录在业务规则中的 PDD 商品批量采集能力;不改变共享 Agent API、数据库、业务规则、配置或部署方式。

## 需求来源 - 提出时间:2026-08-25 - 来源:#83 待验收时发现的回归缺陷。 - 用户反馈:PDD 商品页面列表左侧没有勾选功能,无法批量勾选后创建采集任务。 - 用户确认:建立独立缺陷工单并修复。 ## 当前事实与根因 - #83 在单商品定位模式中使用 `v-if="!location.active"` 隐藏了列表选择列。 - 从 SYB 商品“查看 PDD 商品”跳转时 URL 带有 `productId`,因此必然进入定位模式并失去勾选入口。 - 隐藏选择列是因为现有商品详情响应未提供列表中的 `collectionSelectable` / `collectionDisabledReason` 采集资格信息;若只恢复列,定位商品仍可能被错误禁用或错误放行。 - 普通 PDD 商品列表的批量采集能力是既有业务规则,定位模式不应取消该能力。 ## 目标与方案 1. 恢复单商品定位模式左侧选择列,不再因 `location.active` 隐藏。 2. PDD 商品详情响应补齐与列表一致的采集资格字段: - `collectionSelectable` - `collectionDisabledReason` 3. 详情接口复用列表现有的服务端资格判断,不在前端猜测: - 已停用; - 没有可用采集规则; - 已存在 `pending/running` 采集任务。 4. 定位商品符合条件时可以勾选,并使用既有“批量创建采集任务”流程;不符合条件时禁用勾选并展示既有可读原因。 5. 普通列表、#83 的单商品定位、查询退出和重置退出行为保持不变。 ## 非目标 - 不修改采集任务状态机、并发限制或批量创建上限。 - 不新增数据库字段或迁移。 - 不修改 Android Agent、采购任务、创建订单或支付。 - 不改变“只选择当前页,每个商品独立创建任务”的既有规则。 ## 设计证据 恢复现有 PDD 商品列表已确认的选择列和批量采集入口,定位模式仅将数据范围限制为一个商品: ```text [✓] goods_id | 商品 / 店铺 | 状态 / 采集任务 | ... 已选择 1 条 [批量创建采集任务] ``` - 可采集:勾选框可用。 - 不可采集:勾选框禁用,并显示现有禁止原因。 - 加载/失败/空状态:沿用 #83 与现有页面。 - 权限:沿用 PDD 商品页和采集任务创建权限。 这是恢复既有明确行为的缺陷修复,复用现有组件和交互,不新增页面或主要流程,无需 QuantUX/HTML 原型。 ## 依赖与影响 - 依赖 #83 单商品定位模式。 - 影响 Server Admin PDD 商品详情响应、Web PDD 商品页与对应测试。 - 可独立实施;无数据库迁移和高风险动作。 ## 验收标准 - [ ] 普通 PDD 商品列表仍显示选择列并支持既有批量创建采集任务。 - [ ] 带有效 `productId` 的单商品定位模式显示选择列。 - [ ] 定位商品可采集时可以勾选,勾选后出现既有批量创建采集任务入口。 - [ ] 定位商品不可采集时选择框禁用,并显示准确的禁止原因。 - [ ] 详情和列表对同一商品返回一致的采集资格结论。 - [ ] #83 的自动打开详情、只显示单商品、查询退出、重置退出和无效编号行为不回归。 - [ ] Server/Web 定向测试及构建、Harness 严格检查通过。 ## 验证计划 - 服务端测试覆盖详情接口的可采集/无规则/有活动任务/停用状态。 - Playwright 覆盖定位模式勾选、不可选禁用和普通列表回归。 - 运行 `.\scripts\verify.ps1 -Component server` 与 `.\scripts\verify.ps1 -Component web`。 - 运行 `python dev_scripts/harness.py check --strict`。 - 不执行真机采集、采购、创建订单或支付。 ## 文档影响 无长期文档影响:仅修复 Admin 详情响应与现有列表资格字段不一致的问题,恢复已经记录在业务规则中的 PDD 商品批量采集能力;不改变共享 Agent API、数据库、业务规则、配置或部署方式。
Author
Owner

实施完成,等待用户验收

已完成 #83 回归缺陷修复并推送到 main。

根因与修复

  • 根因:单商品定位模式通过 v-if="!location.active" 隐藏选择列;同时详情响应没有列表已有的采集资格字段。
  • Web:定位模式恢复选择列,并显示真实的“可创建采集任务”或禁止原因。
  • Server:详情与列表复用同一个采集资格计算,统一返回:
    • collectionSelectable
    • collectionDisabledReason
    • activeCollectionTaskId
  • 可采集商品可勾选并启用既有“创建采集”入口;停用、无规则或已有活动采集任务时禁用,不在前端猜测。

提交

  • a622d71 fix(#84): restore collection selection in locate mode

验证

  • go test ./app/goauto/product:通过
  • 单商品定位 Playwright:3/3 通过
  • PDD 商品模块 Playwright:5/5 通过
  • .\scripts\verify.ps1 -Component server:通过(全量 Go 测试及构建)
  • .\scripts\verify.ps1 -Component web:通过(lint 0 error、30 个既有 warning;Vite 构建成功)
  • python dev_scripts/harness.py check --strict:通过
  • git diff --check:通过

文档与风险

无长期文档影响,按当前仓库规则未创建 Wiki 任务归档、未执行 Wiki 同步。未修改数据库、Android Agent、采购、创建订单或支付行为。

待人工验收

  1. 从 SYB 的“查看 PDD 商品”进入定位模式;
  2. 关闭详情后确认左侧出现勾选框;
  3. 可采集商品勾选后“创建采集 (1)”可用;
  4. 不可采集商品勾选框禁用且原因准确。
## 实施完成,等待用户验收 已完成 #83 回归缺陷修复并推送到 `main`。 ### 根因与修复 - 根因:单商品定位模式通过 `v-if="!location.active"` 隐藏选择列;同时详情响应没有列表已有的采集资格字段。 - Web:定位模式恢复选择列,并显示真实的“可创建采集任务”或禁止原因。 - Server:详情与列表复用同一个采集资格计算,统一返回: - `collectionSelectable` - `collectionDisabledReason` - `activeCollectionTaskId` - 可采集商品可勾选并启用既有“创建采集”入口;停用、无规则或已有活动采集任务时禁用,不在前端猜测。 ### 提交 - `a622d71 fix(#84): restore collection selection in locate mode` ### 验证 - `go test ./app/goauto/product`:通过 - 单商品定位 Playwright:3/3 通过 - PDD 商品模块 Playwright:5/5 通过 - `.\scripts\verify.ps1 -Component server`:通过(全量 Go 测试及构建) - `.\scripts\verify.ps1 -Component web`:通过(lint 0 error、30 个既有 warning;Vite 构建成功) - `python dev_scripts/harness.py check --strict`:通过 - `git diff --check`:通过 ### 文档与风险 无长期文档影响,按当前仓库规则未创建 Wiki 任务归档、未执行 Wiki 同步。未修改数据库、Android Agent、采购、创建订单或支付行为。 ### 待人工验收 1. 从 SYB 的“查看 PDD 商品”进入定位模式; 2. 关闭详情后确认左侧出现勾选框; 3. 可采集商品勾选后“创建采集 (1)”可用; 4. 不可采集商品勾选框禁用且原因准确。
Author
Owner

用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。

用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。
ila closed this issue 2026-08-28 15:07:23 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#84