SYB 与采购管理统一订单号语义并增加蝦皮订单号快照 #67

Closed
opened 2026-08-22 10:29:27 +08:00 by ila · 5 comments
Owner

来源与目标

  • 来源:用户于 2026-08-22 指出,SYB 商品页面的“货运单号”实际是蝦皮订单号,要求统一显示为“订单号”;采购任务缺少对应订单号,采购人员难以定位来源订单。
  • 目标:统一 SYB 页面术语;在采购任务中保存不可变的蝦皮订单号快照,并支持 Admin 查询、列表和详情展示。
  • Gitea 访问说明:项目配置的 MCP 进程仍保留迁移前地址,访问 OPC/goauto 返回 404;本工单按仓库规则回退到 gitea.env 中当前 Gitea API 创建。

当前事实

  • syb_product.order_code 来自 SYB 订单 code,业务语义为蝦皮订单号;现有 Web 列表、搜索提示和详情错误显示为“货运单号”。
  • purchase_task 已保存蝦皮商品、店铺、PDD 商品、规格、价格等任务快照,但没有蝦皮订单号快照。
  • 采购管理目前只能按任务、状态、SYB 商品 ID 和 PDD 订单号查询。
  • 一个蝦皮订单可能包含多条不同颜色/尺码的 SYB 商品,因此订单号不是采购任务唯一键。

范围

Server / 数据库

  1. purchase_task 增加 shopee_order_no_snapshot,长度与 syb_product.order_code 对齐,允许历史行暂时为空并建立普通索引。
  2. 创建采购任务时从 syb_product.order_code 写入不可变快照。
  3. 重试采购任务时保留来源任务的订单号快照,不能回读已变化的来源数据覆盖历史事实。
  4. Admin 列表与详情返回 shopeeOrderNoSnapshot。
  5. Admin 列表增加 shopeeOrderNo 查询条件;同一订单号返回全部相关采购任务。
  6. 数据迁移按 purchase_task.syb_product_id -> syb_product.id 回填已有任务;无法关联的历史任务保留空值。
  7. 不增加唯一约束,不改变 PDD 订单号、采购状态机、支付、物流和回填规则。

Web

  1. SYB 商品页面的列表列名、搜索提示和详情字段由“货运单号”改为“订单号”。
  2. 采购管理筛选栏增加“蝦皮订单号”,与“PDD 订单号”明确区分。
  3. 采购任务列表在任务标识附近展示蝦皮订单号;详情任务快照同步展示。
  4. 空值统一显示“—”,不显示误导性的虚构订单号。
  5. 复用现有 Element Plus 表格、表单和响应式布局;保留可见标签、键盘查询和加载/错误反馈。

文档

  • Wiki-first 更新 Business-Rules-and-Glossary 与 Android-Agent-API-Contract 中相关术语和 Admin 契约说明,然后同步核心镜像。

非目标

  • 不重命名现有 syb_product.order_code 数据库列和 orderCode API 字段。
  • 不修改 Android Agent 或 Agent 下发任务契约。
  • 不改变 PDD 订单号、地址后缀、支付、物流及 SYB 回填流程。
  • 不把蝦皮订单号设为唯一值。

设计证据

这是现有两个页面的小范围字段与布局调整,复用已确认的采购管理和 SYB 商品页面规范,不新增页面、流程、权限或交互。实施前在工单评论提供标注式布局说明:

  • SYB 页面:仅替换三处显示文案。
  • 采购筛选栏:在“任务”后增加“蝦皮订单号”。
  • 采购列表:在“任务”后增加订单号列,PDD 订单号继续位于“订单 / 支付”。
  • 采购详情:任务快照首行显示蝦皮订单号。

按 UI/UX 检查,必须使用明确标签区分两类订单号,不能仅依赖输入框 placeholder。

前置依赖与并行

  • 依赖已验收的 #33、#34、#35、#55。
  • Server 数据契约、迁移与 Web 展示不可独立验收,不并行拆分。
  • 与 Android 真机缺陷 #59~#66 无代码依赖,可独立实施。

验收标准

  • SYB 商品页面不再显示错误的“货运单号”文案。
  • 新采购任务保存创建时的蝦皮订单号快照。
  • 重试生成的新任务保留正确订单号快照。
  • 采购管理可按蝦皮订单号查询,并返回该订单下全部相关任务。
  • 列表、详情能同时辨认蝦皮订单号和 PDD 订单号。
  • 同一蝦皮订单号可对应多条 SYB 商品和多个采购任务。
  • 历史任务能关联时完成回填,不能关联时显示“—”。
  • Server 单元测试、迁移契约测试和 Web 生产构建通过。
  • Wiki 在线修改、回读 revision、核心镜像同步检查通过。

风险与门禁

  • 数据库迁移属于高风险操作:迁移代码可先准备和测试,但在本机 MySQL 执行前必须再次取得用户明确确认。
  • 不执行付款、不创建 PDD 订单、不接触设备凭据和生产个人数据。

文档影响

有长期文档影响:Business-Rules-and-Glossary、Android-Agent-API-Contract。

## 来源与目标 - 来源:用户于 2026-08-22 指出,SYB 商品页面的“货运单号”实际是蝦皮订单号,要求统一显示为“订单号”;采购任务缺少对应订单号,采购人员难以定位来源订单。 - 目标:统一 SYB 页面术语;在采购任务中保存不可变的蝦皮订单号快照,并支持 Admin 查询、列表和详情展示。 - Gitea 访问说明:项目配置的 MCP 进程仍保留迁移前地址,访问 `OPC/goauto` 返回 404;本工单按仓库规则回退到 `gitea.env` 中当前 Gitea API 创建。 ## 当前事实 - `syb_product.order_code` 来自 SYB 订单 `code`,业务语义为蝦皮订单号;现有 Web 列表、搜索提示和详情错误显示为“货运单号”。 - `purchase_task` 已保存蝦皮商品、店铺、PDD 商品、规格、价格等任务快照,但没有蝦皮订单号快照。 - 采购管理目前只能按任务、状态、SYB 商品 ID 和 PDD 订单号查询。 - 一个蝦皮订单可能包含多条不同颜色/尺码的 SYB 商品,因此订单号不是采购任务唯一键。 ## 范围 ### Server / 数据库 1. `purchase_task` 增加 `shopee_order_no_snapshot`,长度与 `syb_product.order_code` 对齐,允许历史行暂时为空并建立普通索引。 2. 创建采购任务时从 `syb_product.order_code` 写入不可变快照。 3. 重试采购任务时保留来源任务的订单号快照,不能回读已变化的来源数据覆盖历史事实。 4. Admin 列表与详情返回 `shopeeOrderNoSnapshot`。 5. Admin 列表增加 `shopeeOrderNo` 查询条件;同一订单号返回全部相关采购任务。 6. 数据迁移按 `purchase_task.syb_product_id -> syb_product.id` 回填已有任务;无法关联的历史任务保留空值。 7. 不增加唯一约束,不改变 PDD 订单号、采购状态机、支付、物流和回填规则。 ### Web 1. SYB 商品页面的列表列名、搜索提示和详情字段由“货运单号”改为“订单号”。 2. 采购管理筛选栏增加“蝦皮订单号”,与“PDD 订单号”明确区分。 3. 采购任务列表在任务标识附近展示蝦皮订单号;详情任务快照同步展示。 4. 空值统一显示“—”,不显示误导性的虚构订单号。 5. 复用现有 Element Plus 表格、表单和响应式布局;保留可见标签、键盘查询和加载/错误反馈。 ### 文档 - Wiki-first 更新 Business-Rules-and-Glossary 与 Android-Agent-API-Contract 中相关术语和 Admin 契约说明,然后同步核心镜像。 ## 非目标 - 不重命名现有 `syb_product.order_code` 数据库列和 `orderCode` API 字段。 - 不修改 Android Agent 或 Agent 下发任务契约。 - 不改变 PDD 订单号、地址后缀、支付、物流及 SYB 回填流程。 - 不把蝦皮订单号设为唯一值。 ## 设计证据 这是现有两个页面的小范围字段与布局调整,复用已确认的采购管理和 SYB 商品页面规范,不新增页面、流程、权限或交互。实施前在工单评论提供标注式布局说明: - SYB 页面:仅替换三处显示文案。 - 采购筛选栏:在“任务”后增加“蝦皮订单号”。 - 采购列表:在“任务”后增加订单号列,PDD 订单号继续位于“订单 / 支付”。 - 采购详情:任务快照首行显示蝦皮订单号。 按 UI/UX 检查,必须使用明确标签区分两类订单号,不能仅依赖输入框 placeholder。 ## 前置依赖与并行 - 依赖已验收的 #33、#34、#35、#55。 - Server 数据契约、迁移与 Web 展示不可独立验收,不并行拆分。 - 与 Android 真机缺陷 #59~#66 无代码依赖,可独立实施。 ## 验收标准 - [ ] SYB 商品页面不再显示错误的“货运单号”文案。 - [ ] 新采购任务保存创建时的蝦皮订单号快照。 - [ ] 重试生成的新任务保留正确订单号快照。 - [ ] 采购管理可按蝦皮订单号查询,并返回该订单下全部相关任务。 - [ ] 列表、详情能同时辨认蝦皮订单号和 PDD 订单号。 - [ ] 同一蝦皮订单号可对应多条 SYB 商品和多个采购任务。 - [ ] 历史任务能关联时完成回填,不能关联时显示“—”。 - [ ] Server 单元测试、迁移契约测试和 Web 生产构建通过。 - [ ] Wiki 在线修改、回读 revision、核心镜像同步检查通过。 ## 风险与门禁 - 数据库迁移属于高风险操作:迁移代码可先准备和测试,但在本机 MySQL 执行前必须再次取得用户明确确认。 - 不执行付款、不创建 PDD 订单、不接触设备凭据和生产个人数据。 ## 文档影响 有长期文档影响:Business-Rules-and-Glossary、Android-Agent-API-Contract。
Author
Owner

实施前设计证据(现有页面小范围调整)

本改动不新增页面、流程、状态或权限,复用 #51、#57 已确认的 Element Plus 密集表格与筛选栏,因此采用标注式布局说明,不制作新 QuantUX 页面:

SYB 商品

  • 搜索框保持原位置和宽度,placeholder 改为“订单号、蝦皮商品 ID 或商品标题”。
  • 列表原“货运单号”列原位改为“订单号”,列宽不变。
  • 详情原“货运单号”字段原位改为“订单号”。
  • 正常、空、加载、失败状态均沿用现有页面;仅术语修正。

采购管理

筛选栏顺序:任务 → 蝦皮订单号 → 状态 → SYB 商品 → PDD 订单号 → 查询/重置。字段使用可见 label,不能只靠 placeholder 区分订单类型。

列表顺序:勾选 → 任务 → 蝦皮订单号 → SYB / 蝦皮商品 → PDD 商品 → 其余既有列。蝦皮订单号使用普通文本,空值显示“—”;PDD 订单号仍保留在“订单 / 支付”列,不合并。

详情“任务快照”首行:SYB 商品 + 蝦皮订单号;下一行继续显示蝦皮商品 ID/标题/店铺。不会改变人工处理按钮和订单状态区。

响应与可访问性

  • 复用现有横向表格响应方式,不改变按钮点击区域和键盘查询。
  • 查询期间保留现有 loading;失败保留页面级错误与“重新加载”。
  • “蝦皮订单号”和“PDD 订单号”始终使用文字标签区分,不依赖颜色或位置推断。
## 实施前设计证据(现有页面小范围调整) 本改动不新增页面、流程、状态或权限,复用 #51、#57 已确认的 Element Plus 密集表格与筛选栏,因此采用标注式布局说明,不制作新 QuantUX 页面: ### SYB 商品 - 搜索框保持原位置和宽度,placeholder 改为“订单号、蝦皮商品 ID 或商品标题”。 - 列表原“货运单号”列原位改为“订单号”,列宽不变。 - 详情原“货运单号”字段原位改为“订单号”。 - 正常、空、加载、失败状态均沿用现有页面;仅术语修正。 ### 采购管理 筛选栏顺序:`任务` → `蝦皮订单号` → `状态` → `SYB 商品` → `PDD 订单号` → `查询/重置`。字段使用可见 label,不能只靠 placeholder 区分订单类型。 列表顺序:`勾选` → `任务` → `蝦皮订单号` → `SYB / 蝦皮商品` → `PDD 商品` → 其余既有列。蝦皮订单号使用普通文本,空值显示“—”;PDD 订单号仍保留在“订单 / 支付”列,不合并。 详情“任务快照”首行:`SYB 商品` + `蝦皮订单号`;下一行继续显示蝦皮商品 ID/标题/店铺。不会改变人工处理按钮和订单状态区。 ### 响应与可访问性 - 复用现有横向表格响应方式,不改变按钮点击区域和键盘查询。 - 查询期间保留现有 loading;失败保留页面级错误与“重新加载”。 - “蝦皮订单号”和“PDD 订单号”始终使用文字标签区分,不依赖颜色或位置推断。
Author
Owner

实施进度:代码完成,等待数据库迁移确认

实现提交:9490bdd feat(#67): add Shopee order snapshots to purchase tasks

已完成:

  • purchase_task 模型增加 shopee_order_no_snapshot 普通索引字段。
  • 正式采购任务从 SYB order_code 保存蝦皮订单号快照;批量重试沿用失败任务快照。
  • 新增 shopeeOrderNo Admin 查询条件和 shopeeOrderNoSnapshot 列表/详情字段。
  • 新增版本迁移 1786701500000:建列后只回填仍为空且能通过 syb_product_id 关联的历史任务,不覆盖已有快照。
  • SYB 商品列表、搜索和详情把“货运单号”改为“订单号”。
  • 采购管理增加“蝦皮订单号”筛选、独立列表列和详情快照展示,与 PDD 订单号分开。
  • Wiki-first 更新并回读:Business-Rules-and-Glossary 1e8dff56860d92c22cba44b2e9c966e58f67d721;Android-Agent-API-Contract 47ecaff133f837394c3d14a9819c37e90855d801;harness.py sync --verify 通过。

验证:

  • go test ./app/goauto/purchase ./app/goauto/migrations ./cmd/migrate/migration/version-local:通过。
  • scripts/verify.ps1 -Component server:全部测试和构建通过。
  • scripts/verify.ps1 -Component web:lint 0 错误、30 条上游既有 warning;生产构建通过。
  • Android 未改动,未重新构建或安装。
  • 未连接或修改本机 MySQL;迁移只在 SQLite 测试库验证。

当前门禁

数据库迁移属于高风险动作。等待用户明确确认后,才会在本机配置的 MySQL 执行迁移并核对:迁移版本记录、字段/索引、历史回填行数,以及采购列表接口查询结果。执行期间不会创建订单或付款。

## 实施进度:代码完成,等待数据库迁移确认 实现提交:`9490bdd feat(#67): add Shopee order snapshots to purchase tasks` 已完成: - `purchase_task` 模型增加 `shopee_order_no_snapshot` 普通索引字段。 - 正式采购任务从 SYB `order_code` 保存蝦皮订单号快照;批量重试沿用失败任务快照。 - 新增 `shopeeOrderNo` Admin 查询条件和 `shopeeOrderNoSnapshot` 列表/详情字段。 - 新增版本迁移 `1786701500000`:建列后只回填仍为空且能通过 `syb_product_id` 关联的历史任务,不覆盖已有快照。 - SYB 商品列表、搜索和详情把“货运单号”改为“订单号”。 - 采购管理增加“蝦皮订单号”筛选、独立列表列和详情快照展示,与 PDD 订单号分开。 - Wiki-first 更新并回读:Business-Rules-and-Glossary `1e8dff56860d92c22cba44b2e9c966e58f67d721`;Android-Agent-API-Contract `47ecaff133f837394c3d14a9819c37e90855d801`;`harness.py sync --verify` 通过。 验证: - `go test ./app/goauto/purchase ./app/goauto/migrations ./cmd/migrate/migration/version-local`:通过。 - `scripts/verify.ps1 -Component server`:全部测试和构建通过。 - `scripts/verify.ps1 -Component web`:lint 0 错误、30 条上游既有 warning;生产构建通过。 - Android 未改动,未重新构建或安装。 - 未连接或修改本机 MySQL;迁移只在 SQLite 测试库验证。 ## 当前门禁 数据库迁移属于高风险动作。等待用户明确确认后,才会在本机配置的 MySQL 执行迁移并核对:迁移版本记录、字段/索引、历史回填行数,以及采购列表接口查询结果。执行期间不会创建订单或付款。
Author
Owner

实施完成,待验收

已实现并推送:

  • SYB 商品页面将采购人员看到的“货运单号”统一改为“订单号”(蝦皮订单号)。
  • 采购任务保存不可变的蝦皮订单号快照,并支持列表展示、筛选和详情查看;与 PDD 订单号保持分列。
  • 批量重试沿用原任务快照,避免 SYB 源数据后续变化导致历史任务无法解释。
  • 新增 MySQL 迁移和历史任务回填。

提交:9490bddf8f3bf1884d45c2c58d6f45cd14735ab4

验证:

  • 服务端全量验证通过。
  • Web lint 通过(0 error,保留 30 条既有上游 warning),构建通过。
  • Wiki 核心镜像 sync --verify 与最终 sync --check 均通过。
  • Android 未改动,未重新构建。

本机数据库迁移(用户已于 2026-08-22 明确确认):

  • MySQL 8.4.8,迁移版本 1786701500000 已应用。
  • 字段 shopee_order_no_snapshot 和索引 idx_purchase_task_shopee_order_no_snapshot 已确认存在。
  • 12 条关联历史采购任务全部回填;空值 0,错配 0。
  • 迁移过程未启动/重启服务,未执行任何 PDD 操作、创建订单或支付。

任务归档:Task-67-SYB-与采购任务蝦皮订单号
Wiki revision:1bbb7996ce36cd3ad9d47ebbf0eaa415b9f470c6

状态:保持开启,等待用户验收。

## 实施完成,待验收 已实现并推送: - SYB 商品页面将采购人员看到的“货运单号”统一改为“订单号”(蝦皮订单号)。 - 采购任务保存不可变的蝦皮订单号快照,并支持列表展示、筛选和详情查看;与 PDD 订单号保持分列。 - 批量重试沿用原任务快照,避免 SYB 源数据后续变化导致历史任务无法解释。 - 新增 MySQL 迁移和历史任务回填。 提交:`9490bddf8f3bf1884d45c2c58d6f45cd14735ab4` 验证: - 服务端全量验证通过。 - Web lint 通过(0 error,保留 30 条既有上游 warning),构建通过。 - Wiki 核心镜像 `sync --verify` 与最终 `sync --check` 均通过。 - Android 未改动,未重新构建。 本机数据库迁移(用户已于 2026-08-22 明确确认): - MySQL 8.4.8,迁移版本 `1786701500000` 已应用。 - 字段 `shopee_order_no_snapshot` 和索引 `idx_purchase_task_shopee_order_no_snapshot` 已确认存在。 - 12 条关联历史采购任务全部回填;空值 0,错配 0。 - 迁移过程未启动/重启服务,未执行任何 PDD 操作、创建订单或支付。 任务归档:[Task-67-SYB-与采购任务蝦皮订单号](https://git.ilapage.cn/OPC/goauto/wiki/Task-67-SYB-%E4%B8%8E%E9%87%87%E8%B4%AD%E4%BB%BB%E5%8A%A1%E8%9D%A6%E7%9A%AE%E8%AE%A2%E5%8D%95%E5%8F%B7.-) Wiki revision:`1bbb7996ce36cd3ad9d47ebbf0eaa415b9f470c6` 状态:保持开启,等待用户验收。
Author
Owner

用户于 2026-08-22 明确确认:#67 验收通过。

验收范围:SYB 页面订单号文案、采购任务蝦皮订单号快照、列表/查询/详情展示,以及已确认完成的数据库迁移和历史任务回填。

用户于 2026-08-22 明确确认:#67 验收通过。 验收范围:SYB 页面订单号文案、采购任务蝦皮订单号快照、列表/查询/详情展示,以及已确认完成的数据库迁移和历史任务回填。
ila closed this issue 2026-08-22 10:53:32 +08:00
Author
Owner

验收归档已更新并在线回读确认:

  • Wiki revision:318c2f006049f5501751d2aafac98c8c76a6af9a
  • 验收标记:已确认存在
  • python dev_scripts/harness.py sync --check:通过
  • 本工单没有登记父工单关系,因此无父工单状态需要同步
验收归档已更新并在线回读确认: - Wiki revision:`318c2f006049f5501751d2aafac98c8c76a6af9a` - 验收标记:已确认存在 - `python dev_scripts/harness.py sync --check`:通过 - 本工单没有登记父工单关系,因此无父工单状态需要同步
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#67