From fe819d7112910891a21ff654de0e68a70c7e5403 Mon Sep 17 00:00:00 2001 From: Lynricsy Date: Mon, 23 Feb 2026 14:12:38 +0800 Subject: [PATCH] refactor(logs): :recycle: remove hardcoded max-width from provider column and optimize flex ratios Co-authored-by: Wine Fox --- .../_components/provider-chain-popover.tsx | 10 +---- .../logs/_components/usage-logs-table.tsx | 1 - .../_components/virtualized-logs-table.tsx | 45 +++++++++---------- 3 files changed, 24 insertions(+), 32 deletions(-) diff --git a/src/app/[locale]/dashboard/logs/_components/provider-chain-popover.tsx b/src/app/[locale]/dashboard/logs/_components/provider-chain-popover.tsx index 4f27ca0ae..25aa462a4 100644 --- a/src/app/[locale]/dashboard/logs/_components/provider-chain-popover.tsx +++ b/src/app/[locale]/dashboard/logs/_components/provider-chain-popover.tsx @@ -24,8 +24,6 @@ import { getFake200ReasonKey } from "./fake200-reason"; interface ProviderChainPopoverProps { chain: ProviderChainItem[]; finalProvider: string; - /** Whether a cost badge is displayed, affects name max width */ - hasCostBadge?: boolean; /** Callback when a chain item is clicked in the popover */ onChainItemClick?: (chainIndex: number) => void; } @@ -121,13 +119,12 @@ function getItemStatus(item: ProviderChainItem): { export function ProviderChainPopover({ chain, finalProvider, - hasCostBadge = false, onChainItemClick, }: ProviderChainPopoverProps) { const t = useTranslations("dashboard"); const tChain = useTranslations("provider-chain"); - // “假 200”识别发生在 SSE 流式结束后:此时响应内容可能已透传给客户端,但内部会按失败统计/熔断。 + // "假 200"识别发生在 SSE 流式结束后:此时响应内容可能已透传给客户端,但内部会按失败统计/熔断。 const hasFake200PostStreamFailure = chain.some( (item) => typeof item.errorMessage === "string" && item.errorMessage.startsWith("FAKE_200_") ); @@ -143,9 +140,6 @@ export function ProviderChainPopover({ // Fallback for empty string const displayName = finalProvider || "-"; - // Determine max width based on whether cost badge is present - const maxWidthClass = hasCostBadge ? "max-w-[140px]" : "max-w-[180px]"; - // Check if this is a session reuse const isSessionReuse = chain[0]?.reason === "session_reuse" || chain[0]?.selectionMethod === "session_reuse"; @@ -164,7 +158,7 @@ export function ProviderChainPopover({ const singleRequestItem = chain.find(isActualRequest); return ( -
+
diff --git a/src/app/[locale]/dashboard/logs/_components/usage-logs-table.tsx b/src/app/[locale]/dashboard/logs/_components/usage-logs-table.tsx index 06241c052..3cc622299 100644 --- a/src/app/[locale]/dashboard/logs/_components/usage-logs-table.tsx +++ b/src/app/[locale]/dashboard/logs/_components/usage-logs-table.tsx @@ -198,7 +198,6 @@ export function UsageLogsTable({ log.providerName || tChain("circuit.unknown") } - hasCostBadge={hasCostBadge} onChainItemClick={(chainIndex) => { setDialogState({ logId: log.id, diff --git a/src/app/[locale]/dashboard/logs/_components/virtualized-logs-table.tsx b/src/app/[locale]/dashboard/logs/_components/virtualized-logs-table.tsx index aa196dad7..cb815ae8e 100644 --- a/src/app/[locale]/dashboard/logs/_components/virtualized-logs-table.tsx +++ b/src/app/[locale]/dashboard/logs/_components/virtualized-logs-table.tsx @@ -212,12 +212,12 @@ export function VirtualizedLogsTable({ {/* Fixed header */}
-
+
{t("logs.columns.time")}
{hideUserColumn ? null : (
{t("logs.columns.user")} @@ -225,7 +225,7 @@ export function VirtualizedLogsTable({ )} {hideKeyColumn ? null : (
{t("logs.columns.key")} @@ -233,7 +233,7 @@ export function VirtualizedLogsTable({ )} {hideSessionIdColumn ? null : (
{t("logs.columns.sessionId")} @@ -241,21 +241,21 @@ export function VirtualizedLogsTable({ )} {hideProviderColumn ? null : (
{t("logs.columns.provider")}
)}
{t("logs.columns.model")}
{hideTokensColumn ? null : (
{t("logs.columns.tokens")} @@ -263,7 +263,7 @@ export function VirtualizedLogsTable({ )} {hideCacheColumn ? null : (
{t("logs.columns.cache")} @@ -271,7 +271,7 @@ export function VirtualizedLogsTable({ )} {hideCostColumn ? null : (
{t("logs.columns.cost")} @@ -279,14 +279,14 @@ export function VirtualizedLogsTable({ )} {hidePerformanceColumn ? null : (
{t("logs.columns.performance")}
)}
{t("logs.columns.status")} @@ -349,14 +349,14 @@ export function VirtualizedLogsTable({ )} > {/* Time */} -
+
{/* User */} {hideUserColumn ? null : (
{log.userName} @@ -366,7 +366,7 @@ export function VirtualizedLogsTable({ {/* Key */} {hideKeyColumn ? null : (
{log.keyName} @@ -375,7 +375,7 @@ export function VirtualizedLogsTable({ {/* Session ID */} {hideSessionIdColumn ? null : ( -
+
{log.sessionId ? ( @@ -404,7 +404,7 @@ export function VirtualizedLogsTable({ {/* Provider */} {hideProviderColumn ? null : ( -
+
{log.blockedBy ? ( @@ -468,7 +468,6 @@ export function VirtualizedLogsTable({ log.providerName || tChain("circuit.unknown") } - hasCostBadge={hasCostBadge} onChainItemClick={(chainIndex) => { setDialogState({ logId: log.id, @@ -502,7 +501,7 @@ export function VirtualizedLogsTable({ )} {/* Model */} -
+
@@ -526,7 +525,7 @@ export function VirtualizedLogsTable({ {/* Tokens */} {hideTokensColumn ? null : ( -
+
@@ -554,7 +553,7 @@ export function VirtualizedLogsTable({ {/* Cache */} {hideCacheColumn ? null : ( -
+
@@ -622,7 +621,7 @@ export function VirtualizedLogsTable({ {/* Cost */} {hideCostColumn ? null : ( -
+
{isNonBilling ? ( "-" ) : log.costUsd != null ? ( @@ -669,7 +668,7 @@ export function VirtualizedLogsTable({ {/* Performance */} {hidePerformanceColumn ? null : ( -
+
{(() => { const rate = calculateOutputRate( log.outputTokens, @@ -728,7 +727,7 @@ export function VirtualizedLogsTable({ )} {/* Status */} -
+