修复模型引用与账单展示
This commit is contained in:
@@ -333,8 +333,8 @@ function WalletTransactionRecord(props: { transaction: GatewayWalletTransaction
|
||||
const metadata = transaction.metadata;
|
||||
const referenceId = transaction.referenceId || metadataString(transaction.metadata, 'taskId');
|
||||
const requestId = metadataString(metadata, 'requestId');
|
||||
const model = metadataString(metadata, 'resolvedModel') || metadataString(metadata, 'platformModelAlias') || metadataString(metadata, 'providerModel') || metadataString(metadata, 'model');
|
||||
const requestedModel = metadataString(metadata, 'requestedModel');
|
||||
const model = walletTransactionCalledModel(metadata);
|
||||
const resolvedModel = walletTransactionResolvedModel(metadata);
|
||||
const platform = metadataString(metadata, 'platformName') || metadataString(metadata, 'platformKey') || metadataString(metadata, 'provider') || metadataString(metadata, 'clientId');
|
||||
const provider = metadataString(metadata, 'provider');
|
||||
const taskType = metadataString(metadata, 'modelType') || metadataString(metadata, 'kind');
|
||||
@@ -347,7 +347,7 @@ function WalletTransactionRecord(props: { transaction: GatewayWalletTransaction
|
||||
<TableCell className="walletTransactionModelCell">
|
||||
<span className="walletTransactionPrimaryCell">
|
||||
<strong>{model || '-'}</strong>
|
||||
{requestedModel && requestedModel !== model && <small>{requestedModel}</small>}
|
||||
{resolvedModel && resolvedModel !== model && <small>{resolvedModel}</small>}
|
||||
</span>
|
||||
</TableCell>
|
||||
<TableCell className="walletTransactionPlatformCell">
|
||||
@@ -926,7 +926,8 @@ function TaskRecord(props: { task: GatewayTask; token: string; onCopyRequestId:
|
||||
const usage = props.task.usage ?? {};
|
||||
const tokenUsage = formatTokenUsage(usage);
|
||||
const chargeText = props.task.finalChargeAmount !== undefined ? formatCellValue(props.task.finalChargeAmount) : '-';
|
||||
const resolvedModel = props.task.resolvedModel || props.task.model;
|
||||
const calledModel = taskCalledModelLabel(props.task);
|
||||
const resolvedModel = taskResolvedModelLabel(props.task);
|
||||
const badgeVariant = props.task.status === 'succeeded' ? 'success' : props.task.status === 'failed' ? 'destructive' : 'secondary';
|
||||
return (
|
||||
<TableRow>
|
||||
@@ -957,8 +958,8 @@ function TaskRecord(props: { task: GatewayTask; token: string; onCopyRequestId:
|
||||
<TableCell><Badge variant={badgeVariant}>{props.task.status}</Badge></TableCell>
|
||||
<TableCell className="taskRecordModelCell">
|
||||
<span className="taskRecordPrimaryCell">
|
||||
<strong>{resolvedModel}</strong>
|
||||
{props.task.requestedModel && props.task.requestedModel !== resolvedModel && <small>{props.task.requestedModel}</small>}
|
||||
<strong>{calledModel || '-'}</strong>
|
||||
{resolvedModel && resolvedModel !== calledModel && <small>{resolvedModel}</small>}
|
||||
</span>
|
||||
</TableCell>
|
||||
<TableCell className="taskRecordAttemptCell">
|
||||
@@ -1463,6 +1464,58 @@ function firstText(...values: Array<unknown>) {
|
||||
return '';
|
||||
}
|
||||
|
||||
function walletTransactionCalledModel(metadata: Record<string, unknown> | undefined) {
|
||||
return firstText(
|
||||
metadataModelReference(metadata, 'requestedModel'),
|
||||
metadataModelReference(metadata, 'model'),
|
||||
metadataModelReference(metadata, 'modelId'),
|
||||
);
|
||||
}
|
||||
|
||||
function walletTransactionResolvedModel(metadata: Record<string, unknown> | undefined) {
|
||||
return firstText(
|
||||
metadataString(metadata, 'resolvedModel'),
|
||||
metadataString(metadata, 'platformModelAlias'),
|
||||
metadataString(metadata, 'providerModel'),
|
||||
metadataString(metadata, 'modelName'),
|
||||
);
|
||||
}
|
||||
|
||||
function taskCalledModelLabel(task: GatewayTask) {
|
||||
return firstText(
|
||||
task.requestedModel,
|
||||
modelReferenceLabel(task.request?.model),
|
||||
task.model,
|
||||
);
|
||||
}
|
||||
|
||||
function taskResolvedModelLabel(task: GatewayTask) {
|
||||
return firstText(
|
||||
task.resolvedModel,
|
||||
metadataString(task.metrics, 'resolvedModel'),
|
||||
metadataString(task.metrics, 'providerModel'),
|
||||
metadataString(task.metrics, 'modelName'),
|
||||
);
|
||||
}
|
||||
|
||||
function metadataModelReference(metadata: Record<string, unknown> | undefined, key: string) {
|
||||
return modelReferenceLabel(metadata?.[key]);
|
||||
}
|
||||
|
||||
function modelReferenceLabel(value: unknown) {
|
||||
if (typeof value === 'string' && value.trim()) return value.trim();
|
||||
if (!value || typeof value !== 'object' || Array.isArray(value)) return '';
|
||||
const record = value as Record<string, unknown>;
|
||||
return firstText(
|
||||
objectString(record, 'modelId'),
|
||||
objectString(record, 'model_id'),
|
||||
objectString(record, 'modelName'),
|
||||
objectString(record, 'model_name'),
|
||||
objectString(record, 'id'),
|
||||
objectString(record, 'name'),
|
||||
);
|
||||
}
|
||||
|
||||
function metadataString(metadata: Record<string, unknown> | undefined, key: string) {
|
||||
const value = metadata?.[key];
|
||||
return typeof value === 'string' && value.trim() ? value.trim() : '';
|
||||
|
||||
Reference in New Issue
Block a user