fix(i18n,api): backfill missing token-monitoring keys and fix JWT expiry tz

- i18n: add models.searchProviders, monitoring.tabs.tokens and the
  monitoring.tokens.* block (incl. bucket.hour/day) to es-ES, ja-JP,
  ru-RU, th-TH, vi-VN and zh-Hant, which were missing them and failed
  the Check i18n Keys CI.
- api: generate_jwt_token built 'exp' from a naive datetime.now(), which
  PyJWT validates against UTC — in any timezone ahead of UTC the token
  was already expired at issue time. Use datetime.now(timezone.utc).
This commit is contained in:
RockChinQ
2026-06-13 05:26:18 -04:00
parent a2c6c8201b
commit a97d2040bb
7 changed files with 157 additions and 1 deletions
+26
View File
@@ -266,6 +266,7 @@ const viVN = {
selectProvider: 'Chọn nhà cung cấp',
requester: 'Loại nhà cung cấp',
selectRequester: 'Chọn loại nhà cung cấp',
searchProviders: 'Tìm kiếm nhà cung cấp...',
langbotModelsDescription: 'Mô hình đám mây được cung cấp bởi LangBot Space',
credits: 'Tín dụng',
loginWithSpace: 'Đăng nhập với Space',
@@ -1206,6 +1207,7 @@ const viVN = {
llmCalls: 'Cuộc gọi LLM',
embeddingCalls: 'Cuộc gọi Embedding',
modelCalls: 'Cuộc gọi mô hình',
tokens: 'Giám sát Token',
sessions: 'Phân tích phiên',
feedback: 'Phản hồi người dùng',
errors: 'Nhật ký lỗi',
@@ -1244,6 +1246,30 @@ const viVN = {
avgDuration: 'Thời lượng trung bình',
calls: 'Cuộc gọi',
},
tokens: {
totalTokens: 'Tổng số Token',
inputTokens: 'Token đầu vào',
outputTokens: 'Token đầu ra',
avgPerCall: 'TB / lượt gọi',
throughput: 'Thông lượng',
tokensPerSec: 'token/giây',
errorCalls: 'Lượt gọi thất bại',
acrossCalls: 'trong {{count}} lượt gọi',
ofTotal: 'trên tổng {{count}}',
usageOverTime: 'Mức sử dụng Token theo thời gian',
byModel: 'Theo mô hình',
model: 'Mô hình',
calls: 'Lượt gọi',
avgLatency: 'Độ trễ trung bình',
noData: 'Không có mức sử dụng Token trong khoảng thời gian đã chọn',
loadError: 'Không thể tải thống kê Token: {{error}}',
zeroTokenWarning:
'{{count}} lượt gọi thành công báo cáo mức sử dụng Token bằng 0. Điều này thường có nghĩa là nhà cung cấp thượng nguồn không trả về thông tin sử dụng — hãy kiểm tra cấu hình nhà cung cấp mô hình.',
bucket: {
hour: 'Theo giờ',
day: 'Theo ngày',
},
},
embeddingCalls: {
title: 'Cuộc gọi Embedding',
model: 'Mô hình',