Przeglądaj źródła

Merge pull request #155 from miraserver/fix/ui-improvements-and-i18n

fix: improve Usage Logs table layout and i18n
Ding 3 miesięcy temu
rodzic
commit
df02d0e9f9

+ 1 - 1
messages/en/dashboard.json

@@ -361,7 +361,7 @@
     "quotasManagement": "Quota Management",
     "userManagement": "User Management",
     "documentation": "Documentation",
-    "systemSettings": "System Settings",
+    "systemSettings": "Settings",
     "feedback": "Feedback",
     "login": "Login",
     "logout": "Logout"

+ 2 - 2
messages/en/settings.json

@@ -423,13 +423,13 @@
     "sync": {
       "button": "Sync LiteLLM Prices",
       "syncing": "Syncing...",
-      "successWithChanges": "Price table updated successfully, {count} models updated",
+      "successWithChanges": "Price table updated: {added} added, {updated} updated, {unchanged} unchanged",
       "successNoChanges": "Price table is up to date, no updates needed",
       "failed": "Sync failed",
       "failedError": "Sync failed: {error}",
       "failedNoResult": "Price table updated but no result returned",
       "noModels": "No model prices found",
-      "partialFailure": "Partial update succeeded, but {count} models failed"
+      "partialFailure": "Partial update succeeded, but {failed} models failed"
     },
     "table": {
       "modelName": "Model Name",

+ 2 - 2
messages/ja/settings.json

@@ -423,13 +423,13 @@
     "sync": {
       "button": "LiteLLM価格を同期",
       "syncing": "同期中...",
-      "successWithChanges": "価格表が正常に更新されました。{count}個のモデルを更新しました",
+      "successWithChanges": "価格表を更新: {added}件追加、{updated}件更新、{unchanged}件変化なし",
       "successNoChanges": "価格表は最新です。更新の必要はありません",
       "failed": "同期に失敗しました",
       "failedError": "同期に失敗しました: {error}",
       "failedNoResult": "価格表は更新されましたが結果が返されていません",
       "noModels": "モデル価格が見つかりません",
-      "partialFailure": "一部更新が成功しましたが、{count}個のモデルが失敗しました"
+      "partialFailure": "一部更新が成功しましたが、{failed}件のモデルが失敗しました"
     },
     "table": {
       "modelName": "モデル名",

+ 6 - 7
messages/ru/dashboard.json

@@ -57,7 +57,6 @@
       "provider": "Поставщик",
       "model": "Модель",
       "endpoint": "Эндпоинт",
-      "endpoint": "Эндпоинт",
       "status": "Статус",
       "timeRange": "Диапазон времени",
       "startTime": "Время начала",
@@ -356,13 +355,13 @@
   },
   "all": "Все",
   "nav": {
-    "dashboard": "Панель управления",
-    "usageLogs": "Журналы использования",
-    "leaderboard": "Таблица лидеров",
-    "quotasManagement": "Управление квотами",
-    "userManagement": "Управление пользователями",
+    "dashboard": "Панель",
+    "usageLogs": "Журналы",
+    "leaderboard": "Лидеры",
+    "quotasManagement": "Квоты",
+    "userManagement": "Пользователи",
     "documentation": "Документация",
-    "systemSettings": "Настройки системы",
+    "systemSettings": "Настройки",
     "feedback": "Обратная связь",
     "login": "Вход",
     "logout": "Выход"

+ 2 - 2
messages/ru/settings.json

@@ -423,13 +423,13 @@
     "sync": {
       "button": "Синхронизировать цены LiteLLM",
       "syncing": "Синхронизация...",
-      "successWithChanges": "Прайс-лист успешно обновлён, {count} моделей обновлено",
+      "successWithChanges": "Обновление прайс-листа: добавлено {added}, обновлено {updated}, без изменений {unchanged}",
       "successNoChanges": "Прайс-лист актуален, обновление не требуется",
       "failed": "Ошибка синхронизации",
       "failedError": "Ошибка синхронизации: {error}",
       "failedNoResult": "Прайс-лист обновлен но результат не возвращен",
       "noModels": "Цены моделей не найдены",
-      "partialFailure": "Частичное обновление выполнено, но {count} моделей не удалось обновить"
+      "partialFailure": "Частичное обновление выполнено, но {failed} моделей не удалось обновить"
     },
     "table": {
       "modelName": "Название модели",

+ 2 - 2
messages/zh-CN/settings.json

@@ -911,13 +911,13 @@
     "sync": {
       "button": "同步 LiteLLM 价格",
       "syncing": "同步中...",
-      "successWithChanges": "价格表更新成功,共更新 {count} 个模型",
+      "successWithChanges": "价格表更新: 新增 {added} 个,更新 {updated} 个,未变化 {unchanged} 个",
       "successNoChanges": "价格表已是最新,无需更新",
       "failed": "同步失败",
       "failedError": "同步失败: {error}",
       "failedNoResult": "价格表更新成功但未返回处理结果",
       "noModels": "未找到支持的模型价格",
-      "partialFailure": "部分更新成功,但有 {count} 个模型失败"
+      "partialFailure": "部分更新成功,但有 {failed} 个模型失败"
     },
     "table": {
       "modelName": "模型名称",

+ 2 - 2
messages/zh-TW/settings.json

@@ -423,13 +423,13 @@
     "sync": {
       "button": "同步 LiteLLM 價格",
       "syncing": "同步中...",
-      "successWithChanges": "價格表更新成功,共更新 {count} 個模型",
+      "successWithChanges": "價格表更新: 新增 {added} 個,更新 {updated} 個,未變化 {unchanged} 個",
       "successNoChanges": "價格表已是最新,無需更新",
       "failed": "同步失敗",
       "failedError": "同步失敗: {error}",
       "failedNoResult": "價格表更新成功但未返回處理結果",
       "noModels": "未找到支援的模型價格",
-      "partialFailure": "部分更新成功,但有 {count} 個模型失敗"
+      "partialFailure": "部分更新成功,但有 {failed} 個模型失敗"
     },
     "table": {
       "modelName": "模型名稱",

+ 20 - 7
src/app/[locale]/dashboard/logs/_components/usage-logs-table.tsx

@@ -111,8 +111,10 @@ export function UsageLogsTable({
                     )}
                     aria-label={isNonBilling ? t("logs.table.nonBilling") : undefined}
                   >
-                    <TableCell className="font-mono text-xs">
-                      <RelativeTime date={log.createdAt} fallback="-" />
+                    <TableCell className="font-mono text-xs w-[90px] max-w-[90px] overflow-hidden">
+                      <div className="truncate">
+                        <RelativeTime date={log.createdAt} fallback="-" />
+                      </div>
                     </TableCell>
                     <TableCell>{log.userName}</TableCell>
                     <TableCell className="font-mono text-xs">{log.keyName}</TableCell>
@@ -190,11 +192,22 @@ export function UsageLogsTable({
                         </div>
                       )}
                     </TableCell>
-                    <TableCell className="font-mono text-xs">
-                      <ModelDisplayWithRedirect
-                        originalModel={log.originalModel}
-                        currentModel={log.model}
-                      />
+                    <TableCell className="font-mono text-xs w-[120px] max-w-[120px] overflow-hidden">
+                      <TooltipProvider>
+                        <Tooltip>
+                          <TooltipTrigger asChild>
+                            <div className="truncate cursor-help">
+                              <ModelDisplayWithRedirect
+                                originalModel={log.originalModel}
+                                currentModel={log.model}
+                              />
+                            </div>
+                          </TooltipTrigger>
+                          <TooltipContent>
+                            <p className="text-xs">{log.originalModel || log.model || "-"}</p>
+                          </TooltipContent>
+                        </Tooltip>
+                      </TooltipProvider>
                     </TableCell>
                     <TableCell className="text-right font-mono text-xs">
                       {formatTokenAmount(log.inputTokens)}