T42 Admin SYB商品列表规格匹配入口与批量采购创建 #44

Closed
opened 2026-08-17 15:16:46 +08:00 by ila · 4 comments
Owner

基本信息

  • 类型:需求 / Admin / SYB采购入口
  • 所属总体设计:#32
  • 阶段:待实施,前置门禁已全部解除(#32 于 2026-08-18 验收,#40、#41 原型于 2026-08-19 验收)
  • 设计证据:#41 Stage A 原型第 9 屏「批量创建采购任务确认」与第 10 屏「批量创建采购任务结果」,App ID 6a83d7b4191a826306a7eebd,2026-08-19 已确认。本工单不需另建 Stage A 原型。

原始需求与目标

采购人员在 SYB 商品列表左侧勾选一条或多条商品后批量创建采购任务;未映射行可直接进入 Shopee/PDD 规格映射。SYB 商品详情保持只读。

依赖与并行

  • 前置:#32 用户明确验收、#40 Shopee/PDD规格映射、#41 SYB商品档案、#33/#34采购任务契约与服务能力。
  • 不与未稳定的采购任务契约并行实施。

子项目影响

  • web:SYB列表多选、禁用原因、去匹配、批量确认和结果。
  • server:批量创建编排与逐条结果;复用单任务创建事务和约束。
  • shared-docs:采购状态、错误提示和接口契约。

与 #35 的边界(2026-08-19 收敛)

按能力切分,不按入口切分:

  • 本工单(#44)拥有全部采购任务创建能力:SYB 列表勾选与批量入口、单条创建入口、创建确认页、创建结果页、创建前逐条校验与部分成功返回。
  • #35 只负责已存在的任务:采购任务列表、任务详情、执行状态展示、重新采购、有效订单选择、物流回填等人工处理。
  • 原因:创建是一个完整能力,拆到两个工单会导致确认页被实现两遍或互相等待。#35 正文中的「创建采购任务确认」条目已移交本工单。

方案

  • 表头全选只选择当前页;工具栏显示已选数量,未选时按钮禁用。
  • 页面已知不可创建的行禁用复选框并显示原因:映射缺失、活动任务、有效未取消订单、已支付禁止再次采购等。
  • “去匹配”携带 Shopee 商品身份进入 #40 页面,保存后返回并刷新原列表状态。
  • 每条 SYB 商品分别创建一个采购任务;禁止合并商品、任务或PDD订单。
  • 服务端创建前重新校验;并发变化导致的失败按行返回,不回滚其他成功项。
  • 批量结果逐条显示任务号或未创建原因。

不做

  • 不在详情页创建任务或维护映射。
  • 不实现支付、自动取消订单或跨页无上限全选。
  • 不复制 #40 的规格映射编辑器。

验收

  • 当前页多选、取消选择和已选数量正确。
  • 已知不可创建行禁用且原因清楚。
  • 未映射行可进入正确 Shopee 商品映射并返回刷新。
  • 每条合格商品生成独立任务,部分失败不回滚成功项。
  • 结果页逐条显示任务号或下一步处理建议。
  • 管理员和采购员可用,其他角色无入口。

风险与文档

批量操作仍受活动任务、订单和价格门禁约束。实现时更新 Wiki 业务规则、架构、API契约和任务状态说明;用户验收前工单不得关闭。

## 基本信息 - 类型:需求 / Admin / SYB采购入口 - 所属总体设计:#32 - 阶段:待实施,前置门禁已全部解除(#32 于 2026-08-18 验收,#40、#41 原型于 2026-08-19 验收) - 设计证据:#41 Stage A 原型第 9 屏「批量创建采购任务确认」与第 10 屏「批量创建采购任务结果」,App ID `6a83d7b4191a826306a7eebd`,2026-08-19 已确认。本工单不需另建 Stage A 原型。 ## 原始需求与目标 采购人员在 SYB 商品列表左侧勾选一条或多条商品后批量创建采购任务;未映射行可直接进入 Shopee/PDD 规格映射。SYB 商品详情保持只读。 ## 依赖与并行 - 前置:#32 用户明确验收、#40 Shopee/PDD规格映射、#41 SYB商品档案、#33/#34采购任务契约与服务能力。 - 不与未稳定的采购任务契约并行实施。 ## 子项目影响 - web:SYB列表多选、禁用原因、去匹配、批量确认和结果。 - server:批量创建编排与逐条结果;复用单任务创建事务和约束。 - shared-docs:采购状态、错误提示和接口契约。 ## 与 #35 的边界(2026-08-19 收敛) 按**能力**切分,不按入口切分: - **本工单(#44)拥有全部采购任务创建能力**:SYB 列表勾选与批量入口、单条创建入口、创建确认页、创建结果页、创建前逐条校验与部分成功返回。 - **#35 只负责已存在的任务**:采购任务列表、任务详情、执行状态展示、重新采购、有效订单选择、物流回填等人工处理。 - 原因:创建是一个完整能力,拆到两个工单会导致确认页被实现两遍或互相等待。#35 正文中的「创建采购任务确认」条目已移交本工单。 ## 方案 - 表头全选只选择当前页;工具栏显示已选数量,未选时按钮禁用。 - 页面已知不可创建的行禁用复选框并显示原因:映射缺失、活动任务、有效未取消订单、已支付禁止再次采购等。 - “去匹配”携带 Shopee 商品身份进入 #40 页面,保存后返回并刷新原列表状态。 - 每条 SYB 商品分别创建一个采购任务;禁止合并商品、任务或PDD订单。 - 服务端创建前重新校验;并发变化导致的失败按行返回,不回滚其他成功项。 - 批量结果逐条显示任务号或未创建原因。 ## 不做 - 不在详情页创建任务或维护映射。 - 不实现支付、自动取消订单或跨页无上限全选。 - 不复制 #40 的规格映射编辑器。 ## 验收 - [ ] 当前页多选、取消选择和已选数量正确。 - [ ] 已知不可创建行禁用且原因清楚。 - [ ] 未映射行可进入正确 Shopee 商品映射并返回刷新。 - [ ] 每条合格商品生成独立任务,部分失败不回滚成功项。 - [ ] 结果页逐条显示任务号或下一步处理建议。 - [ ] 管理员和采购员可用,其他角色无入口。 ## 风险与文档 批量操作仍受活动任务、订单和价格门禁约束。实现时更新 Wiki 业务规则、架构、API契约和任务状态说明;用户验收前工单不得关闭。
Author
Owner

前置设计证据

#32 QuantUX App 6a827440191a826306a7eddd 已覆盖本工单的 SYB 列表多选、禁用原因、去匹配、批量确认和逐条结果;本地快照为 prototypes/quantux-procurement-flow-6a827440191a826306a7eddd.html,提交 7df4546。当前仅为草稿设计证据,#32 未明确验收前本工单保持待实施。

## 前置设计证据 #32 QuantUX App `6a827440191a826306a7eddd` 已覆盖本工单的 SYB 列表多选、禁用原因、去匹配、批量确认和逐条结果;本地快照为 `prototypes/quantux-procurement-flow-6a827440191a826306a7eddd.html`,提交 `7df4546`。当前仅为草稿设计证据,#32 未明确验收前本工单保持待实施。
Author
Owner

三工单边界核对结果(#35 / #41 / #44)

用户 2026-08-19 要求核对 #35、#41、#44 的边界。核对发现四个问题,均已修复。

职责划分(收敛后)

工单 职责
#41 T39 SYB 数据域:导入、解析、明细数据与列表本身
#44 T42 全部采购任务创建能力:SYB 列表勾选与批量入口、单条入口、创建确认页、创建结果页
#35 T33 已存在任务的管理:任务列表、任务详情、执行状态、重新采购、有效订单选择、物流回填

问题一:#41 原型的归属标注错误(已修复)

#41 Stage A 原型第 9、10 屏及列表页的采购入口说明,此前标注「本页由 #35 实现」。经核对 #44 正文——「SYB 商品列表左侧勾选后批量创建」「表头全选只选择当前页」「不可创建行禁用并显示原因」「每条分别创建一个任务,禁止合并」「批量结果逐条显示」——与该原型逐条对应,归属应为 #44。

已更正 3 处标注,导出文件中「由 #35 实现」残留 0 处,verdict=PASS。提交 1cd32a4。

问题二:#35 与 #44 都声称拥有创建确认页(已收敛)

  • #35 原文:「创建采购任务确认:PDD账号/设备、目标规格、映射规格、数量和 _cg{task.id} 提示」
  • #44 原文:「批量确认和结果」

按能力而非入口切分:创建是一个完整能力,拆到两个工单会导致确认页被实现两遍或互相等待。创建能力整体归 #44,#35 收敛为管理已有任务。两张工单正文均已更新并注明移交关系。

问题三:#44 状态过期(已更新)

原写「阶段:待实施;受 #32 原型审核门禁阻塞」。实际 #32 已于 2026-08-18 验收,#40、#41 原型已于 2026-08-19 验收,三个前置门禁全部解除,#44 现为可实施状态。

问题四:本单阶段二第 7 项记错对象(已修正)

「#35 原型缺口」应拆为两部分:创建流程已由 #41 原型覆盖且归属 #44,无需另建原型;任务详情展示 spec_source、AI 匹配快照与两趟 attempt 历史的部分才归 #35,实施前需评估。正文第 7 项已改写。

## 三工单边界核对结果(#35 / #41 / #44) 用户 2026-08-19 要求核对 #35、#41、#44 的边界。核对发现四个问题,均已修复。 ### 职责划分(收敛后) | 工单 | 职责 | |---|---| | **#41** T39 | SYB 数据域:导入、解析、明细数据与列表本身 | | **#44** T42 | **全部采购任务创建能力**:SYB 列表勾选与批量入口、单条入口、创建确认页、创建结果页 | | **#35** T33 | **已存在任务的管理**:任务列表、任务详情、执行状态、重新采购、有效订单选择、物流回填 | ### 问题一:#41 原型的归属标注错误(已修复) #41 Stage A 原型第 9、10 屏及列表页的采购入口说明,此前标注「本页由 #35 实现」。经核对 #44 正文——「SYB 商品列表左侧勾选后批量创建」「表头全选只选择当前页」「不可创建行禁用并显示原因」「每条分别创建一个任务,禁止合并」「批量结果逐条显示」——与该原型逐条对应,**归属应为 #44**。 已更正 3 处标注,导出文件中「由 #35 实现」残留 0 处,`verdict=PASS`。提交 `1cd32a4`。 ### 问题二:#35 与 #44 都声称拥有创建确认页(已收敛) - #35 原文:「创建采购任务确认:PDD账号/设备、目标规格、映射规格、数量和 `_cg{task.id}` 提示」 - #44 原文:「批量确认和结果」 按**能力**而非**入口**切分:创建是一个完整能力,拆到两个工单会导致确认页被实现两遍或互相等待。创建能力整体归 #44,#35 收敛为管理已有任务。两张工单正文均已更新并注明移交关系。 ### 问题三:#44 状态过期(已更新) 原写「阶段:待实施;受 #32 原型审核门禁阻塞」。实际 #32 已于 2026-08-18 验收,#40、#41 原型已于 2026-08-19 验收,**三个前置门禁全部解除**,#44 现为可实施状态。 ### 问题四:本单阶段二第 7 项记错对象(已修正) 「#35 原型缺口」应拆为两部分:创建流程已由 #41 原型覆盖且归属 #44,无需另建原型;任务详情展示 `spec_source`、AI 匹配快照与两趟 attempt 历史的部分才归 #35,实施前需评估。正文第 7 项已改写。
Author
Owner

实施完成,等待验收

实现结果

  • SYB 商品列表增加“创建采购 / 重新解析”模式,保留原批量重新解析能力。
  • 创建采购模式按行显示采购准备状态;已知不满足条件的行禁止勾选,并给出普通用户可理解的原因和下一步。
  • 支持单条与批量创建采购任务,批量上限 100 条;每条 SYB 商品独立创建一个任务,部分失败不回滚已成功项。
  • 创建前由服务端重新校验 SYB 解析、Shopee/PDD 关联、PDD 价格、活动任务/订单、已支付限制及可选设备能力。
  • 未人工匹配规格时,只要服务端默认采购规则支持 purchase.spec-probe.v1,允许创建任务,由后续 Agent 精确探测;不在 Agent 端猜测近似规格。
  • 价格保护使用 PDD 商品人民币价格,不使用 SYB/Shopee 的 TWD 金额;已匹配颜色按该颜色价格计算,未匹配时按可用颜色价格范围计算。
  • 新增批量预检与创建接口:POST /api/admin/v1/purchase-tasks/batch-preview、POST /api/admin/v1/purchase-tasks/batch。
  • 每个成功任务冻结默认正式采购规则快照;规则不含任何支付动作。本工单只创建任务,不触碰 PDD、不创建真实订单。
  • 已支付任务禁止再次授权重新采购,详情页同时隐藏该入口。
  • 无数据库迁移;未修改 Android Agent。

验证结果

  • ./scripts/verify.ps1 -Component server:通过(go test ./...、go build)。
  • ./scripts/verify.ps1 -Component web:通过(lint 0 error,生产构建通过;现有 warning 未增加为错误)。
  • go test ./app/goauto/purchase ./app/goauto/purchasecontract:通过。
  • python dev_scripts/harness.py check --strict:通过。
  • python dev_scripts/harness.py sync --check:通过。
  • git diff --check:通过。
  • 浏览器连接器当前没有可用浏览器,因此未完成本轮页面点击验收;未用其他方式伪造该结果。现有 8010/9527 用户进程未停止或替换。

文档与提交

  • 提交:7e4f404 feat(#44): create purchase tasks from SYB products,已推送 main。
  • Wiki 已更新并在线回读:
    • Business-Rules-and-Glossary:6f0a0c4d36c7101b5e81660363865f2e75759584
    • Architecture-and-Code-Map:bea774951bc16ac3adba62ff4fdc2c4e750a0884
    • Android-Agent-API-Contract:8fa791cf3f249096ddad2ede02bf13251f963407
  • 任务归档:Task-44-Admin-SYB商品列表规格匹配入口与批量采购创建,revision 4cde46d533c97deb84deeef0b424939c6211c227。

状态:待用户页面验收;本工单暂不关闭。

## 实施完成,等待验收 ### 实现结果 - SYB 商品列表增加“创建采购 / 重新解析”模式,保留原批量重新解析能力。 - 创建采购模式按行显示采购准备状态;已知不满足条件的行禁止勾选,并给出普通用户可理解的原因和下一步。 - 支持单条与批量创建采购任务,批量上限 100 条;每条 SYB 商品独立创建一个任务,部分失败不回滚已成功项。 - 创建前由服务端重新校验 SYB 解析、Shopee/PDD 关联、PDD 价格、活动任务/订单、已支付限制及可选设备能力。 - 未人工匹配规格时,只要服务端默认采购规则支持 `purchase.spec-probe.v1`,允许创建任务,由后续 Agent 精确探测;不在 Agent 端猜测近似规格。 - 价格保护使用 PDD 商品人民币价格,不使用 SYB/Shopee 的 TWD 金额;已匹配颜色按该颜色价格计算,未匹配时按可用颜色价格范围计算。 - 新增批量预检与创建接口:`POST /api/admin/v1/purchase-tasks/batch-preview`、`POST /api/admin/v1/purchase-tasks/batch`。 - 每个成功任务冻结默认正式采购规则快照;规则不含任何支付动作。本工单只创建任务,不触碰 PDD、不创建真实订单。 - 已支付任务禁止再次授权重新采购,详情页同时隐藏该入口。 - 无数据库迁移;未修改 Android Agent。 ### 验证结果 - `./scripts/verify.ps1 -Component server`:通过(`go test ./...`、`go build`)。 - `./scripts/verify.ps1 -Component web`:通过(lint 0 error,生产构建通过;现有 warning 未增加为错误)。 - `go test ./app/goauto/purchase ./app/goauto/purchasecontract`:通过。 - `python dev_scripts/harness.py check --strict`:通过。 - `python dev_scripts/harness.py sync --check`:通过。 - `git diff --check`:通过。 - 浏览器连接器当前没有可用浏览器,因此未完成本轮页面点击验收;未用其他方式伪造该结果。现有 8010/9527 用户进程未停止或替换。 ### 文档与提交 - 提交:`7e4f404 feat(#44): create purchase tasks from SYB products`,已推送 `main`。 - Wiki 已更新并在线回读: - Business-Rules-and-Glossary:`6f0a0c4d36c7101b5e81660363865f2e75759584` - Architecture-and-Code-Map:`bea774951bc16ac3adba62ff4fdc2c4e750a0884` - Android-Agent-API-Contract:`8fa791cf3f249096ddad2ede02bf13251f963407` - 任务归档:[Task-44-Admin-SYB商品列表规格匹配入口与批量采购创建](https://git.ilapage.cn/OPC/goauto/wiki/Task-44-Admin-SYB%E5%95%86%E5%93%81%E5%88%97%E8%A1%A8%E8%A7%84%E6%A0%BC%E5%8C%B9%E9%85%8D%E5%85%A5%E5%8F%A3%E4%B8%8E%E6%89%B9%E9%87%8F%E9%87%87%E8%B4%AD%E5%88%9B%E5%BB%BA.-),revision `4cde46d533c97deb84deeef0b424939c6211c227`。 状态:待用户页面验收;本工单暂不关闭。
Author
Owner

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

用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。
ila closed this issue 2026-08-28 15:07:35 +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#44