生产同步日期范围 2026-08-23~2026-08-24 时连续三次在 2026-08-23 第 45 页失败:前 44 页已获取 880/894 张,第 45 页 POST /am/stock/list 连续 30 秒未返回响应头并触发 Client.Timeout。三次失败位置完全一致,最新同步记录的 stock/detail/created/updated 均为 0,游标未推进。
POST /am/stock/list
Client.Timeout
当前顺运宝客户端单请求总超时固定 30 秒;listTotal、list、detail/listByStock 发生网络超时、响应读取失败或临时 5xx 时不做页级重试。历史日期因此立即失败,操作员再次点击会从当天第 1 页重新请求,重复给远端制造负载。
listTotal
list
detail/listByStock
page_size
admin/syb/client.go
do
ListTotal
listPage
DetailListByStock
admin/syb/client_test.go
docs/admin/08-顺运宝接口.md
预计修改:
不涉及数据库迁移和 Client。
/am/stock/list
go test ./...
go build ./...
go vet ./...
从 admin/ 执行:
admin/
$env:GOTOOLCHAIN="go1.23.0" go test ./syb ./service -count=1 go test ./... -count=1 go build ./... go vet ./... Remove-Item Env:GOTOOLCHAIN
测试全部使用 httptest,禁止调用真实顺运宝站点。
httptest
实现提交:439639c
439639c
完成内容:
start=880
pageIndex=45
length=20
验证结果:
GOTOOLCHAIN=go1.23.0 go test ./syb ./service -count=1
GOTOOLCHAIN=go1.23.0 go test ./... -count=1
GOTOOLCHAIN=go1.23.0 go build ./...
GOTOOLCHAIN=go1.23.0 go vet ./...
git diff --check
未验证:没有调用真实顺运宝站点复现第 45 页,尚未部署生产;需另建部署工单后验证真实超时恢复。
本地归档已完成并推送:
docs/task/300-admin顺运宝只读分页超时有限重试.md
f7c2ce3
工单保持开放,等待用户验收。生产仍运行上一部署版本,本修复尚未上线。
生产部署后确认同页 3 次、单次 60 秒重试已经生效,但 /am/stock/list 仍在多个“最后一个不足 20 条的尾页”连续超时。#300 的有限重试保持有效,新发现的尾页请求形状兼容问题转由 #302 处理;#300 暂不验收关闭。
No dependencies set.
The note is not visible to the blocked user.
基本信息
要解决什么
生产同步日期范围 2026-08-23~2026-08-24 时连续三次在 2026-08-23 第 45 页失败:前 44 页已获取 880/894 张,第 45 页
POST /am/stock/list连续 30 秒未返回响应头并触发Client.Timeout。三次失败位置完全一致,最新同步记录的 stock/detail/created/updated 均为 0,游标未推进。当前顺运宝客户端单请求总超时固定 30 秒;
listTotal、list、detail/listByStock发生网络超时、响应读取失败或临时 5xx 时不做页级重试。历史日期因此立即失败,操作员再次点击会从当天第 1 页重新请求,重复给远端制造负载。做什么 / 不做什么
listTotal、list、detail/listByStock这三类只读货运查询增加最多 3 次的当前请求重试,重试间隔为 1 秒、2 秒,并支持 context 取消。page_size。怎么做
admin/syb/client.go中给可重试的传输/临时服务错误增加内部类型判断;非法 JSON 与业务错误继续作为不可重试错误。do,使用 1 秒、2 秒退避;等待期间监听调用方 context。ListTotal、日期/单号listPage、DetailListByStock改用只读封装。登录、会话检查和三个真实写入方法继续直接调用do。admin/syb/client_test.go覆盖相同第 45 页超时/5xx后成功、三次耗尽、context 取消、401/业务/格式错误不重试,以及真实写请求仍只发送一次。docs/admin/08-顺运宝接口.md的分页和写入边界。预计修改:
admin/syb/client.goadmin/syb/client_test.godocs/admin/08-顺运宝接口.md不涉及数据库迁移和 Client。
验收标准
/am/stock/list第 45 页首次或第二次发生超时/5xx时,只重试同一页,请求参数不变化;成功后继续同步。listTotal与detail/listByStock使用相同的只读重试边界。go test ./...、go build ./...、go vet ./...全部通过。怎么验证
从
admin/执行:测试全部使用
httptest,禁止调用真实顺运宝站点。风险和回退
do并把超时改回 30 秒即可;无 schema 和数据回退。实施完成,待用户验收
实现提交:
439639c完成内容:
listTotal、list、detail/listByStock对网络/响应读取/HTTP 5xx 最多尝试 3 次,退避 1 秒、2 秒。start=880、pageIndex=45、length=20,只重试当前页。验证结果:
GOTOOLCHAIN=go1.23.0 go test ./syb ./service -count=1:通过。GOTOOLCHAIN=go1.23.0 go test ./... -count=1:通过。GOTOOLCHAIN=go1.23.0 go build ./...:通过。GOTOOLCHAIN=go1.23.0 go vet ./...:通过。git diff --check:通过。未验证:没有调用真实顺运宝站点复现第 45 页,尚未部署生产;需另建部署工单后验证真实超时恢复。
本地归档已完成并推送:
docs/task/300-admin顺运宝只读分页超时有限重试.mdf7c2ce3439639c工单保持开放,等待用户验收。生产仍运行上一部署版本,本修复尚未上线。
生产部署后确认同页 3 次、单次 60 秒重试已经生效,但
/am/stock/list仍在多个“最后一个不足 20 条的尾页”连续超时。#300 的有限重试保持有效,新发现的尾页请求形状兼容问题转由 #302 处理;#300 暂不验收关闭。