Admin:档口入库码按货运单号直查顺运宝 #245

Open
opened 2026-08-15 16:17:40 +08:00 by ila · 1 comment
Owner

基本信息

  • 类型:缺陷
  • 父级大工单:#14
  • 所属 MVP / 版本:#224
  • 阶段:远端货运单查询修正

要解决什么

档口入库码匹配目前先从本地 syb_orders 按订单号读取 stock.id,再查询顺运宝详情。复现:Excel 中的货运单号能在顺运宝按“全部单号”搜索到,但该货运单未同步到 Admin 或被 SYB 店铺准入规则过滤时,匹配会错误提示“本地未找到对应的顺运宝货运单”。

原 Python 流程、参考文档和已抓取 HAR 均明确要求使用货运单号查询顺运宝 t_stock.allcode。档口入库码是独立模块,不应依赖 SYB 数据模块是否已同步入库。

做什么 / 不做什么

  • 做:在 Go 顺运宝客户端补齐按货运单号查询 /am/stock/listTotal、/am/stock/list 的只读能力,查询条件固定为 t_stock.allcode。
  • 做:匹配勾选记录时按货运单号去重,直接查询顺运宝得到货运单 ID,再批量读取最新明细并执行现有规格、档口、占用和采购字段门禁。
  • 做:区分未找到、多张货运单、远端协议异常和会话/网络失败;只有逐行可归因的未找到/多单进入行状态,整批网络或协议失败不保存半成品计划。
  • 不做:不把远端查询结果写入 syb_orders;不改变 SYB 店铺准入规则;不改变 Excel 导入、规格算法或远端回写接口;规划阶段不调用删除/更新接口。

怎么做

  • admin/syb/client.go:抽取列表公共请求/解析逻辑,新增按 allcode 精确查询货运单的方法;以 listTotal 为真实总数,分页读取并校验返回的 code 与输入一致。
  • admin/service/inner_code_match.go:把规划读取接口改为“按货运单号查询远端货运单详情”,按唯一订单去重查询;移除本地 syb_orders 快照到 stock.id 的转换依赖,保留详情批量上限 100。
  • admin/syb/client_test.go、admin/service/inner_code_match_test.go:覆盖精确查询、零命中、多命中、分页/协议异常、去重、未同步本地仍能匹配以及整批失败不落计划。
  • 删除确认不再使用的本地快照查询函数和对应测试;不修改数据库结构和浏览器接口。

验收标准

  • 货运单不在本地 syb_orders、但顺运宝 allcode 精确查询唯一命中时,可以继续匹配并生成可回写计划。
  • 同一批多行相同货运单号只查询一次远端列表,详情接口仍按最多 100 个货运单 ID 分批。
  • 顺运宝零命中显示“顺运宝未找到货运单”;同一单号命中多张时跳过并明确提示,不猜测。
  • 返回 code 不等于输入、分页数量异常、会话失效或网络失败时可诊断,且不会保存半批计划。
  • 规划阶段只调用只读列表与详情接口,不调用删除/更新接口,不写入 syb_orders。
  • 固定 Go 1.23.0 下 go vet ./...、go build ./...、go test ./... -count=1 通过。

怎么验证

在 admin/ 执行:

$env:GOTOOLCHAIN="go1.23.0"
go vet ./...
go build ./...
go test ./... -count=1
Remove-Item Env:GOTOOLCHAIN

使用 httptest.Server 模拟顺运宝列表、总数和详情接口,不连接真实顺运宝,不执行真实回写。

风险和回退

  • 风险:按订单逐个远端查询会增加只读请求数量;通过订单号去重、顺序查询和既有分页上限控制,不并发轰炸顺运宝。
  • 风险:allcode 可能返回其他类型单号;必须再次校验响应 code 与输入完全一致,零条或多条都不自动选择。
  • 回退:回退本工单代码即可恢复本地快照定位;不涉及数据库迁移和远端写入,既有计划记录不丢失。
## 基本信息 - 类型:缺陷 - 父级大工单:#14 - 所属 MVP / 版本:#224 - 阶段:远端货运单查询修正 ## 要解决什么 档口入库码匹配目前先从本地 `syb_orders` 按订单号读取 `stock.id`,再查询顺运宝详情。复现:Excel 中的货运单号能在顺运宝按“全部单号”搜索到,但该货运单未同步到 Admin 或被 SYB 店铺准入规则过滤时,匹配会错误提示“本地未找到对应的顺运宝货运单”。 原 Python 流程、参考文档和已抓取 HAR 均明确要求使用货运单号查询顺运宝 `t_stock.allcode`。档口入库码是独立模块,不应依赖 SYB 数据模块是否已同步入库。 ## 做什么 / 不做什么 - 做:在 Go 顺运宝客户端补齐按货运单号查询 `/am/stock/listTotal`、`/am/stock/list` 的只读能力,查询条件固定为 `t_stock.allcode`。 - 做:匹配勾选记录时按货运单号去重,直接查询顺运宝得到货运单 ID,再批量读取最新明细并执行现有规格、档口、占用和采购字段门禁。 - 做:区分未找到、多张货运单、远端协议异常和会话/网络失败;只有逐行可归因的未找到/多单进入行状态,整批网络或协议失败不保存半成品计划。 - 不做:不把远端查询结果写入 `syb_orders`;不改变 SYB 店铺准入规则;不改变 Excel 导入、规格算法或远端回写接口;规划阶段不调用删除/更新接口。 ## 怎么做 - `admin/syb/client.go`:抽取列表公共请求/解析逻辑,新增按 `allcode` 精确查询货运单的方法;以 `listTotal` 为真实总数,分页读取并校验返回的 `code` 与输入一致。 - `admin/service/inner_code_match.go`:把规划读取接口改为“按货运单号查询远端货运单详情”,按唯一订单去重查询;移除本地 `syb_orders` 快照到 `stock.id` 的转换依赖,保留详情批量上限 100。 - `admin/syb/client_test.go`、`admin/service/inner_code_match_test.go`:覆盖精确查询、零命中、多命中、分页/协议异常、去重、未同步本地仍能匹配以及整批失败不落计划。 - 删除确认不再使用的本地快照查询函数和对应测试;不修改数据库结构和浏览器接口。 ## 验收标准 - [ ] 货运单不在本地 `syb_orders`、但顺运宝 `allcode` 精确查询唯一命中时,可以继续匹配并生成可回写计划。 - [ ] 同一批多行相同货运单号只查询一次远端列表,详情接口仍按最多 100 个货运单 ID 分批。 - [ ] 顺运宝零命中显示“顺运宝未找到货运单”;同一单号命中多张时跳过并明确提示,不猜测。 - [ ] 返回 `code` 不等于输入、分页数量异常、会话失效或网络失败时可诊断,且不会保存半批计划。 - [ ] 规划阶段只调用只读列表与详情接口,不调用删除/更新接口,不写入 `syb_orders`。 - [ ] 固定 Go 1.23.0 下 `go vet ./...`、`go build ./...`、`go test ./... -count=1` 通过。 ## 怎么验证 在 `admin/` 执行: ```powershell $env:GOTOOLCHAIN="go1.23.0" go vet ./... go build ./... go test ./... -count=1 Remove-Item Env:GOTOOLCHAIN ``` 使用 `httptest.Server` 模拟顺运宝列表、总数和详情接口,不连接真实顺运宝,不执行真实回写。 ## 风险和回退 - 风险:按订单逐个远端查询会增加只读请求数量;通过订单号去重、顺序查询和既有分页上限控制,不并发轰炸顺运宝。 - 风险:`allcode` 可能返回其他类型单号;必须再次校验响应 `code` 与输入完全一致,零条或多条都不自动选择。 - 回退:回退本工单代码即可恢复本地快照定位;不涉及数据库迁移和远端写入,既有计划记录不丢失。
Author
Owner

状态:已实现并归档,待用户验收。

实现:

  • 顺运宝客户端新增 t_stock.allcode 货运单号直查,严格校验 listTotal、20 条分页、返回 code、重复 ID 和 100 条安全上限。
  • 档口入库码规划对勾选记录的订单号去重后直查远端,不再读取本地 syb_orders;唯一命中后仍按最多 100 个 ID 批量读取详情。
  • 零命中显示“顺运宝未找到货运单”,多命中继续安全跳过;网络或协议失败不保存半批计划。
  • 删除不再使用的本地 SYB 快照查询和 stock.id JSON 解析。

验证:

  • go test ./syb ./service -run 'ListByOrderNumber|InnerCode' -count=1:通过。
  • 固定 GOTOOLCHAIN=go1.23.0 的 go vet ./...、go build ./...、go test ./... -count=1:全部通过。
  • 自动化覆盖本地无 syb_orders 记录但远端唯一命中仍生成 ready 计划。
  • 未连接真实顺运宝,未部署生产,未执行任何远端写入。

提交:

  • b47e7ed 实现
  • 6b30594 归档
  • 归档:docs/task/245-档口入库码直查顺运宝.md
状态:已实现并归档,待用户验收。 实现: - 顺运宝客户端新增 `t_stock.allcode` 货运单号直查,严格校验 listTotal、20 条分页、返回 code、重复 ID 和 100 条安全上限。 - 档口入库码规划对勾选记录的订单号去重后直查远端,不再读取本地 `syb_orders`;唯一命中后仍按最多 100 个 ID 批量读取详情。 - 零命中显示“顺运宝未找到货运单”,多命中继续安全跳过;网络或协议失败不保存半批计划。 - 删除不再使用的本地 SYB 快照查询和 stock.id JSON 解析。 验证: - `go test ./syb ./service -run 'ListByOrderNumber|InnerCode' -count=1`:通过。 - 固定 `GOTOOLCHAIN=go1.23.0` 的 `go vet ./...`、`go build ./...`、`go test ./... -count=1`:全部通过。 - 自动化覆盖本地无 `syb_orders` 记录但远端唯一命中仍生成 ready 计划。 - 未连接真实顺运宝,未部署生产,未执行任何远端写入。 提交: - `b47e7ed` 实现 - `6b30594` 归档 - 归档:`docs/task/245-档口入库码直查顺运宝.md`
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#245