fix(web): show video pricing basis in model card title

This commit is contained in:
wangbo 2026-05-11 22:39:06 +08:00
parent 483f3ab1f5
commit 4c2de4b4c9

View File

@ -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 (
<Card className="modelCard">
<CardContent>
@ -164,8 +165,8 @@ function ModelCard(props: { model: ModelCatalogItem }) {
</dd>
</div>
<div className="modelCardFactFull">
<dt></dt>
<dd title={props.model.pricing.title}>{props.model.pricing.lines.join('')}</dd>
<dt>{pricing.label}</dt>
<dd title={pricing.title}>{pricing.lines.join('')}</dd>
</div>
</dl>
</CardContent>
@ -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 ?? [];