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
@@ -271,6 +271,7 @@ const esES = {
selectProvider: 'Seleccionar proveedor',
requester: 'Tipo de proveedor',
selectRequester: 'Seleccionar tipo de proveedor',
searchProviders: 'Buscar proveedores...',
langbotModelsDescription: 'Modelos en la nube impulsados por LangBot Space',
credits: 'Créditos',
loginWithSpace: 'Iniciar sesión con Space',
@@ -1236,6 +1237,7 @@ const esES = {
llmCalls: 'Llamadas LLM',
embeddingCalls: 'Llamadas Embedding',
modelCalls: 'Llamadas a modelos',
tokens: 'Monitoreo de Tokens',
sessions: 'Análisis de sesiones',
feedback: 'Comentarios de usuarios',
errors: 'Registros de errores',
@@ -1275,6 +1277,30 @@ const esES = {
avgDuration: 'Duración promedio',
calls: 'Llamadas',
},
tokens: {
totalTokens: 'Tokens totales',
inputTokens: 'Tokens de entrada',
outputTokens: 'Tokens de salida',
avgPerCall: 'Prom. / llamada',
throughput: 'Rendimiento',
tokensPerSec: 'tokens/seg',
errorCalls: 'Llamadas fallidas',
acrossCalls: 'en {{count}} llamadas',
ofTotal: 'de {{count}} en total',
usageOverTime: 'Uso de tokens a lo largo del tiempo',
byModel: 'Por modelo',
model: 'Modelo',
calls: 'Llamadas',
avgLatency: 'Latencia media',
noData: 'No hay uso de tokens en el rango de tiempo seleccionado',
loadError: 'Error al cargar las estadísticas de tokens: {{error}}',
zeroTokenWarning:
'{{count}} llamada(s) exitosa(s) reportaron cero uso de tokens. Esto suele significar que el proveedor upstream no devolvió información de uso; revisa la configuración del proveedor del modelo.',
bucket: {
hour: 'Por hora',
day: 'Por día',
},
},
embeddingCalls: {
title: 'Llamadas Embedding',
model: 'Modelo',