生产部署 #300 后,同页 3 次、每次 60 秒的有限重试已经生效,但顺运宝 /am/stock/list 仍连续在最后一个不足 20 条的尾页等待响应头超时:
/am/stock/list
最新失败运行持续 276 秒,错误已经包含“连续 3 次请求失败”,可排除未部署新版和会话失效。顺运宝主页当前可访问,问题集中在列表高 offset/尾页请求。继续单纯增加超时或重试次数只会延长失败时间。
复现步骤:
page_size=20
length=100
listTotal
syb.Client
ListPage
start=max(total-pageSize,0)
admin/service/syb.go
ListTotal
admin/syb/client.go
admin/syb/client_test.go
admin/service/syb_test.go
docs/admin/08-顺运宝接口.md
预计修改文件:
docs/task/<工单号>-admin顺运宝尾页超时兼容.md
数据库:不变。 Admin/Client 接口:不变。
go test ./... -count=1
go build ./...
go vet ./...
从 admin/ 执行:
admin/
$env:GOTOOLCHAIN = "go1.23.0" go test ./... -count=1 go build ./... go vet ./... Remove-Item Env:GOTOOLCHAIN
重点自动化用例:
生产只读探测只调用列表查询,不执行同步写库;实现完成后生产真实同步需另行部署并由用户验收。
start
pageIndex
length
探测复用生产现有会话,只调用 listTotal/list,没有执行同步落库或顺运宝写请求;输出仅含日期、总数、start、pageIndex、length、返回条数、唯一 ID 数和耗时。
listTotal/list
start=640,pageIndex=33,length=20
start=630,pageIndex=33,length=20
start=600,length=100
start=550,length=100
start=741,length=20
start=661,length=100
start=261,length=500
start=0,length=500
start=0,length=761
start=0,length=894
问题不是单纯“尾页不足 20 条”,而是顺运宝高 offset/连续查询在部分数据和负载窗口下不稳定。只向前重叠 20、100 或 500 条不能覆盖所有日期;把全程页大小改为 100 也不是稳定解法。
start=0,pageIndex=1,length=expectedTotal
page_size
该方案与建单时“按探测结果二选一”的差异:探测证明固定重叠窗口和统一 100 条分页都不足以覆盖历史日期,因此改为低 offset 的单日整批正常路径,并保留旧分页作为明确网络重试耗尽后的兼容回退。
68ff67a652ef059ea17e4d3e54aa0004951e4e52
5f544a1deb91fd4a333aafb1185d9e2465d17ede
docs/task/302-admin顺运宝列表尾页持续超时兼容.md
5f544a1
#302 已完成,等待用户验收。
start=0,length=当天总数
未验证:尚未部署生产并执行真实同步;超过 894 张的真实单日整批响应、生产分页回退恢复、真实 MySQL _test 集成用例。
_test
#302 已通过 #303 部署到生产:稳定链接和实际进程均指向 5f544a1,systemd、Nginx、本机/公网 HTTP、schema v30 和后台活动检查全部通过。部署过程没有主动触发真实顺运宝同步;请由用户在页面执行目标日期范围同步完成业务验收。
No dependencies set.
The note is not visible to the blocked user.
基本信息
要解决什么
生产部署 #300 后,同页 3 次、每次 60 秒的有限重试已经生效,但顺运宝
/am/stock/list仍连续在最后一个不足 20 条的尾页等待响应头超时:最新失败运行持续 276 秒,错误已经包含“连续 3 次请求失败”,可排除未部署新版和会话失效。顺运宝主页当前可访问,问题集中在列表高 offset/尾页请求。继续单纯增加超时或重试次数只会延长失败时间。
复现步骤:
page_size=20的尾页连续 3 次超过 60 秒。做什么 / 不做什么
做什么
length=100请求。listTotal、页响应条数和唯一 ID 完整性检查;任何不一致仍停止且不推进游标。不做什么
怎么做
page_size=20、失败页均为尾部不足一页。syb.Client、生产配置和现有会话,只调用ListPage:start=max(total-pageSize,0)的重叠完整窗口;length=100。只记录状态、条数和耗时,不输出 Cookie、请求体或货运单内容。
admin/service/syb.go的单日分页计划中把非整除尾页改为向前重叠取满一页,并按 ID 合并;若服务端实际忽略非对齐 start,则以探测通过的length=100顺序分页方案替代。实施前把最终选择和证据回填本工单。ListTotal前后复核及唯一 ID 精确计数。重叠区出现重复是预期;除此之外缺失、额外 ID 或总数变化仍返回快照漂移错误。admin/syb/client.go为只读请求注入可选诊断回调或使用标准日志记录每次失败尝试的安全元数据;不得记录请求体与凭据。若 service 层更适合记录日期/页码,则由 service 记录调用边界耗时。admin/syb/client_test.go、admin/service/syb_test.go和docs/admin/08-顺运宝接口.md。预计修改文件:
admin/service/syb.goadmin/service/syb_test.goadmin/syb/client.goadmin/syb/client_test.godocs/admin/08-顺运宝接口.mddocs/task/<工单号>-admin顺运宝尾页超时兼容.md数据库:不变。
Admin/Client 接口:不变。
验收标准
go test ./... -count=1、go build ./...、go vet ./...全部通过。怎么验证
从
admin/执行:重点自动化用例:
生产只读探测只调用列表查询,不执行同步写库;实现完成后生产真实同步需另行部署并由用户验收。
风险和回退
start与pageIndex,非对齐重叠窗口需要生产只读探测确认;提高length可能增加单次响应大小。生产只读探测与最终实现决策(2026-08-24)
探测复用生产现有会话,只调用
listTotal/list,没有执行同步落库或顺运宝写请求;输出仅含日期、总数、start、pageIndex、length、返回条数、唯一 ID 数和耗时。关键结果
page_size=20。start=640,pageIndex=33,length=20:35 秒仍未返回,主动取消;start=630,pageIndex=33,length=20:约 19.5 秒返回 20/20 个唯一 ID;start=600,length=100:约 41.1 秒返回尾部 50 个唯一 ID;start=550,length=100:约 22.1 秒返回 100/100 个唯一 ID。start=741,length=20:50 秒未返回;start=661,length=100:55 秒未返回;start=261,length=500:58 秒未返回;start=0,length=500:约 4.3 秒返回 500/500;start=0,length=761:约 21.0 秒返回 761/761 个唯一 ID。start=0,length=894曾连续 3 次、每次 60 秒超时;结论
问题不是单纯“尾页不足 20 条”,而是顺运宝高 offset/连续查询在部分数据和负载窗口下不稳定。只向前重叠 20、100 或 500 条不能覆盖所有日期;把全程页大小改为 100 也不是稳定解法。
最终方案
start=0,pageIndex=1,length=expectedTotal,一次取得当天列表,显著减少请求次数并避开高 offset。page_size顺序分页,兼容极大响应或上游临时拒绝整批请求。listTotal,并要求响应条数、唯一 ID 数和前后总数完全一致;失败仍不推进游标。该方案与建单时“按探测结果二选一”的差异:探测证明固定重叠窗口和统一 100 条分页都不足以覆盖历史日期,因此改为低 offset 的单日整批正常路径,并保留旧分页作为明确网络重试耗尽后的兼容回退。
实施结果
68ff67a652ef059ea17e4d3e54aa0004951e4e525f544a1deb91fd4a333aafb1185d9e2465d17ededocs/task/302-admin顺运宝列表尾页持续超时兼容.md5f544a1;真实同步结果仍待用户验收。#302 已完成,等待用户验收。
start=0,length=当天总数已分别完整返回 761 和 894 个唯一 ID。go test ./... -count=1、go build ./...、go vet ./...全部通过。68ff67a652ef059ea17e4d3e54aa0004951e4e525f544a1deb91fd4a333aafb1185d9e2465d17ededocs/task/302-admin顺运宝列表尾页持续超时兼容.md未验证:尚未部署生产并执行真实同步;超过 894 张的真实单日整批响应、生产分页回退恢复、真实 MySQL
_test集成用例。#302 已通过 #303 部署到生产:稳定链接和实际进程均指向
5f544a1,systemd、Nginx、本机/公网 HTTP、schema v30 和后台活动检查全部通过。部署过程没有主动触发真实顺运宝同步;请由用户在页面执行目标日期范围同步完成业务验收。