diff --git a/apps/web/src/pages/ModelsPage.tsx b/apps/web/src/pages/ModelsPage.tsx index ee79f34..3c8981f 100644 --- a/apps/web/src/pages/ModelsPage.tsx +++ b/apps/web/src/pages/ModelsPage.tsx @@ -127,6 +127,7 @@ function FilterIcon(props: { item: ModelCatalogFilterOption }) { function ModelCard(props: { model: ModelCatalogItem }) { const description = props.model.description || '暂无模型描述'; + const pricing = modelCardPricing(props.model.pricing); return ( @@ -164,8 +165,8 @@ function ModelCard(props: { model: ModelCatalogItem }) {
-
模型定价
-
{props.model.pricing.lines.join(';')}
+
{pricing.label}
+
{pricing.lines.join(';')}
@@ -173,6 +174,31 @@ function ModelCard(props: { model: ModelCatalogItem }) { ); } +function modelCardPricing(pricing: ModelCatalogItem['pricing']) { + const hasFiveSecondBasis = pricing.lines.some((line) => line.includes('5秒基准')); + if (!hasFiveSecondBasis) { + return { + label: '模型定价', + lines: pricing.lines, + title: pricing.title, + }; + } + const lines = pricing.lines.map(stripFiveSecondBasis).filter(Boolean); + const title = stripFiveSecondBasis(pricing.title || pricing.lines.join(';')); + return { + label: '模型定价(每5秒)', + lines: lines.length ? lines : pricing.lines, + title: title || pricing.title, + }; +} + +function stripFiveSecondBasis(value: string) { + return value + .replace(/(5秒基准)/g, '') + .replace(/\s*\/\s*5秒基准/g, '') + .trim(); +} + function PermissionValue(props: { permission: ModelCatalogPermission }) { const allowGroups = props.permission.allowGroups ?? []; const denyGroups = props.permission.denyGroups ?? [];