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
@@ -269,6 +269,7 @@ const ruRU = {
selectProvider: 'Выберите провайдера',
requester: 'Тип провайдера',
selectRequester: 'Выберите тип провайдера',
searchProviders: 'Поиск провайдеров...',
langbotModelsDescription: 'Облачные модели на базе LangBot Space',
credits: 'Кредиты',
loginWithSpace: 'Войти через Space',
@@ -1213,6 +1214,7 @@ const ruRU = {
llmCalls: 'Вызовы LLM',
embeddingCalls: 'Вызовы Embedding',
modelCalls: 'Вызовы моделей',
tokens: 'Мониторинг токенов',
feedback: 'Обратная связь',
sessions: 'Анализ сессий',
errors: 'Журнал ошибок',
@@ -1251,6 +1253,30 @@ const ruRU = {
avgDuration: 'Средняя длительность',
calls: 'Вызовы',
},
tokens: {
totalTokens: 'Всего токенов',
inputTokens: 'Входные токены',
outputTokens: 'Выходные токены',
avgPerCall: 'Сред. / вызов',
throughput: 'Пропускная способность',
tokensPerSec: 'токенов/сек',
errorCalls: 'Неуспешные вызовы',
acrossCalls: 'за {{count}} вызов(ов)',
ofTotal: 'из {{count}} всего',
usageOverTime: 'Использование токенов со временем',
byModel: 'По модели',
model: 'Модель',
calls: 'Вызовы',
avgLatency: 'Сред. задержка',
noData: 'Нет использования токенов в выбранном диапазоне времени',
loadError: 'Не удалось загрузить статистику токенов: {{error}}',
zeroTokenWarning:
'{{count}} успешный(ых) вызов(ов) сообщили о нулевом использовании токенов. Обычно это означает, что вышестоящий провайдер не вернул информацию об использовании — проверьте настройки провайдера модели.',
bucket: {
hour: 'По часам',
day: 'По дням',
},
},
embeddingCalls: {
title: 'Вызовы Embedding',
model: 'Модель',