Status: needs-triage
领域: 支付链路(自动结算与结算记录)+ 管理后台公共 http 客户端
来源: 用户工单「【结算记录】查询报错了 这个是什么问题 现在无法重现」(截图:2026-09-18 页面顶部红色提示 Request failed with status code 502,表格里仍是上一次查询出来的数据)
日期: 2026-09-18
「财务管理 → 结算记录」点「查询」时,页面顶部弹出红色提示 Request failed with status code 502。
列表本身已经渲染出数据(说明**上一次**查询是成功的),失败的是**这一次**请求。用户随后重试无法复现。
这个 502 不是结算记录接口自己返回的,而是「前端 → 后端」之间代理层的报错:代理向上游发起请求时
连接出错(后端不在监听 / 连接被中途重置),Vite 的代理中间件就固定回一个 502 + 空 body。
三处证据:
talent-card-admin/src/api/http.ts:36-38 的提示是error.response?.data?.message || error.message。后端所有业务异常都会带 JSON {code, message},message(例如代理回的 502 空 body)时才会退化成 axios 兜底文案Request failed with status code 502。talent-card-admin/node_modules/vite/dist/node/chunks/node.js:18674-18681proxy.on('error', ...) { ... res.writeHead(502, { 'Content-Type': 'text/plain' }).end() };http proxy error: /api/... 加 err.stack。talent-card-server 的 java 与 resources 全量搜索无 502/Bad Gateway,BusinessException(JSON 响应),不会产生代理级状态码。所以「无法重现」是预期的:触发条件是**那一瞬间的连接失败**,常见来源——
mvn 重新编译部署),端口有一段不可连接的空窗;结算记录这条链路本身很"重",商户一多就更容易撞上上面任何一种超时/重试:
MerchantSettlementAdminService.settlements(...)talent-card-server/src/main/java/com/talentcard/server/business/admin/MerchantSettlementAdminService.java:68-83)for (merchant : merchants) settlementRecordGateway.query(...),status='approved' 且 provider_huifu_id 非空的每个商户最新一条)是 4 家:喜望商家 6666000239896857、存量商户验证专用 6666000226048687、个人进件验证商户 6666001804122、景区服务-卡 6666000242182522。商户继续变多,整页耗时线性增长。talent-card-admin/src/api/http.ts:9 timeout: 12000),一旦超过就是timeout of 12000ms exceeded(另一个不同的报错文案),或用户以为"卡住了"而重复点击、放大后端压力。application.yml:164-166 只配了 logging.level,没有 file appender),Huifu settlement record query failed / 请求耗时——这也是这次"查无实据"的原因之一。http proxy error: /api/admin/management/merchant-settlement/settlementserr.stack 区分 ECONNREFUSED / ECONNRESET)、**IDEA 控制台**在那个时间点是否在重启。502/504/ECONNABORTED 给出中文提示,