修复接单端过期会话重复请求

This commit is contained in:
yml2213
2026-08-30 17:32:34 +08:00
parent 535cefd4de
commit ffb71f2276
6 changed files with 117 additions and 11 deletions
+16
View File
@@ -0,0 +1,16 @@
import assert from 'node:assert/strict'
import test from 'node:test'
import { resolveRouteErrorLogLevel } from './http.js'
test('expected worker session expiry is debug-level', () => {
assert.equal(
resolveRouteErrorLogLevel({ statusCode: 401, errorCode: 'worker_auth_expired' }),
'debug',
)
assert.equal(
resolveRouteErrorLogLevel({ statusCode: 401, errorCode: 'worker_auth_invalid' }),
'warn',
)
assert.equal(resolveRouteErrorLogLevel({ statusCode: 500, errorCode: 'internal_error' }), 'error')
})
+12 -2
View File
@@ -1,5 +1,5 @@
import type { Request, Response } from 'express'
import { logError, logWarn } from './logger.js'
import { logDebug, logError, logWarn } from './logger.js'
const RESPONSE_TIME_ZONE = 'Asia/Shanghai'
@@ -52,7 +52,8 @@ export function sendRouteError(
scope = '[route]',
): void {
const classification = classifyRouteError(error)
const logger = classification.statusCode >= 500 ? logError : logWarn
const logLevel = resolveRouteErrorLogLevel(classification)
const logger = logLevel === 'error' ? logError : logLevel === 'debug' ? logDebug : logWarn
logger(scope, fallbackMessage, {
statusCode: classification.statusCode,
errorCode: classification.errorCode,
@@ -62,6 +63,15 @@ export function sendRouteError(
res.status(classification.statusCode).json(buildErrorPayload(error, fallbackMessage))
}
export function resolveRouteErrorLogLevel(classification: {
statusCode: number
errorCode: string
}): 'debug' | 'warn' | 'error' {
if (classification.statusCode >= 500) return 'error'
if (classification.errorCode === 'worker_auth_expired') return 'debug'
return 'warn'
}
export function buildNotFoundPayload(req: Request) {
return {
code: 1,