feat(proxy): record tunnel stability metrics

This commit is contained in:
fawney19
2026-05-08 22:03:17 +08:00
parent 9a84a6ff6c
commit a703acd1fe
81 changed files with 7228 additions and 1109 deletions
@@ -106,6 +106,14 @@ describe('usage status helpers', () => {
})).toBe('failed')
})
it('downgrades terminal success to failed when status code is 3xx', () => {
expect(resolveTimelineFinalStatus({
traceFinalStatus: 'success',
requestStatus: 'completed',
statusCode: 302,
})).toBe('failed')
})
it('falls back to request lifecycle status when status code and trace are missing', () => {
expect(resolveTimelineFinalStatus({
requestStatus: 'failed',
@@ -189,6 +197,9 @@ describe('usage status helpers', () => {
expect(resolveTimelineFinalStatus({
statusCode: 200,
})).toBe('success')
expect(resolveTimelineFinalStatus({
statusCode: 302,
})).toBe('failed')
expect(resolveTimelineFinalStatus({
statusCode: 503,
})).toBe('failed')
+13 -3
View File
@@ -157,7 +157,7 @@ function hasTerminalSuccessStatusCode(
): boolean {
return typeof record.status_code === 'number' &&
record.status_code >= 200 &&
record.status_code < 400
record.status_code < 300
}
export function isUsageRecordFailed(
@@ -272,18 +272,28 @@ export function resolveTimelineFinalStatus(params: {
requestStatus?: RequestStatusLike
statusCode?: number
}): TimelineFinalStatus {
const hasTerminalSuccessStatusCode = typeof params.statusCode === 'number'
? params.statusCode >= 200 && params.statusCode < 300
: undefined
const requestStatus = mapRequestStatusToTimelineStatus(params.requestStatus)
if (requestStatus === 'success' || requestStatus === 'failed' || requestStatus === 'cancelled') {
if (requestStatus === 'success' && hasTerminalSuccessStatusCode === false) {
return 'failed'
}
return requestStatus
}
const traceStatus = normalizeTimelineFinalStatus(params.traceFinalStatus)
if (traceStatus === 'success' || traceStatus === 'failed' || traceStatus === 'cancelled') {
if (traceStatus === 'success' && hasTerminalSuccessStatusCode === false) {
return 'failed'
}
return traceStatus
}
if (typeof params.statusCode === 'number') {
return params.statusCode >= 200 && params.statusCode < 400 ? 'success' : 'failed'
if (hasTerminalSuccessStatusCode !== undefined) {
return hasTerminalSuccessStatusCode ? 'success' : 'failed'
}
if (params.hasPendingCandidates) {