Skip to content

Fix monitor averages and retry failure accounting#188

Merged
liuw1535 merged 1 commit into
yanshifrom
codex/review-yanshi-branch-commit-logic
Jun 5, 2026
Merged

Fix monitor averages and retry failure accounting#188
liuw1535 merged 1 commit into
yanshifrom
codex/review-yanshi-branch-commit-logic

Conversation

@liuw1535

@liuw1535 liuw1535 commented Jun 5, 2026

Copy link
Copy Markdown
Owner

Motivation

  • 修正监控中心中 TPM/RPM/RDP 的计算方式,避免选定时间范围内空白日期或未完整一天把平均值稀释;同时让前端能说明平均值的分母来源。
  • 确保只有在实际发生可重试的 429/503 错误时才将一次重试计为失败尝试,从而使监控统计中的失败次数更准确。

Description

  • src/utils/usageStats.js 中为每日统计桶添加 firstSeenlastSeen 字段并在 record 中维护它们,汇总时只统计有请求的 "活跃" 天/分钟作为平均值分母,并通过 averageBasis 返回 activeDaysactiveMinutes
  • 将平均值计算由按选定天数的固定分钟数改为按 activeMinutes/activeDays 计算:tpm/rpm 基于活跃分钟,rdp 基于活跃天数。
  • public/js/monitor.js 中新增展示逻辑以显示平均值的统计基准(例如按多少分钟/小时/天或按多少个有请求日期统计),并改进 Tokens 数字格式化显示。
  • 在重试器 src/server/handlers/common/retry.js 中调整 onAttemptFailure 的调用位置,使其仅在捕获到可重试的 429/503 错误后计入失败尝试。
  • 在请求结束处(src/server/index.js 中的监控中间件)将 req.apiUsageMetrics.failedAttempts 汇总为 failedCount 并与 successCount 一起传入 usageStats.record,以便统计重试失败次数。

Testing

  • 运行对 usageStats.getSummary 的断言测试验证汇总/平均值计算(node --input-type=module),测试通过。
  • 运行对 with429Retry 的行为测试(模拟连续 503 重试并断言 onAttemptFailure 次数),测试通过。
  • 静态检查 node --check src/utils/usageStats.js && node --check src/server/handlers/common/retry.js && node --check public/js/monitor.js 均通过。
  • 尝试构建 npm run build:linuxpkg 在拉取/构建 Node 二进制阶段因外部资源返回 403 Forbidden 导致构建失败(环境/网络问题,与代码变更无关)。

Codex Task

@liuw1535 liuw1535 merged commit a472f78 into yanshi Jun 5, 2026
5 of 7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant