Compare commits

..

No commits in common. "648c9917abc44bafa68efbc43629ff32d3a12f1a" and "4a7cb9e0f0d5330a2e45e90a83e8a73de8becfef" have entirely different histories.

2 changed files with 43 additions and 21 deletions

View File

@ -304,43 +304,46 @@ const ModelChannelList = ({
: null; : null;
items.push(makeItem(t('输入价格'), effInputRate, modelData?.model_ratio, false)); items.push(makeItem(t('输入价格'), effInputRate, modelData?.model_ratio, false));
// completion_ratio // completion_ratio
if ( if (
hasRatioValue(channel.model_ratio) && hasRatioValue(channel.model_ratio) &&
hasRatioValue(channel.completion_ratio) hasRatioValue(channel.completion_ratio) &&
hasRatioValue(modelData?.completion_ratio)
) { ) {
const effOut = const effOut =
Number(channel.model_ratio) * Number(channel.completion_ratio) * costDisc + Number(channel.model_ratio) * Number(channel.completion_ratio) * costDisc +
globalMr * globalCR * markupRate; globalMr * globalCR * markupRate;
const rootOut = hasRatioValue(modelData?.model_ratio) && hasRatioValue(modelData?.completion_ratio) const rootOut = hasRatioValue(modelData?.model_ratio)
? Number(modelData.model_ratio) * Number(modelData.completion_ratio) ? Number(modelData.model_ratio) * Number(modelData.completion_ratio)
: null; : null;
items.push(makeItem(t('输出价格'), effOut, rootOut, false)); items.push(makeItem(t('输出价格'), effOut, rootOut, false));
} }
// cache_ratio // cache_ratio
if ( if (
hasRatioValue(channel.model_ratio) && hasRatioValue(channel.model_ratio) &&
hasRatioValue(channel.cache_ratio) hasRatioValue(channel.cache_ratio) &&
hasRatioValue(modelData?.cache_ratio)
) { ) {
const effCacheRate = const effCacheRate =
Number(channel.model_ratio) * Number(channel.cache_ratio) * costDisc + Number(channel.model_ratio) * Number(channel.cache_ratio) * costDisc +
globalMr * globalCacheR * markupRate; globalMr * globalCacheR * markupRate;
const rootC = hasRatioValue(modelData?.model_ratio) && hasRatioValue(modelData?.cache_ratio) const rootC = hasRatioValue(modelData?.model_ratio)
? Number(modelData.model_ratio) * Number(modelData.cache_ratio) ? Number(modelData.model_ratio) * Number(modelData.cache_ratio)
: null; : null;
items.push(makeItem(t('缓存读取价格'), effCacheRate, rootC, false)); items.push(makeItem(t('缓存读取价格'), effCacheRate, rootC, false));
} }
// create_cache_ratio // create_cache_ratio
if ( if (
hasRatioValue(channel.model_ratio) && hasRatioValue(channel.model_ratio) &&
hasRatioValue(channel.create_cache_ratio) hasRatioValue(channel.create_cache_ratio) &&
hasRatioValue(modelData?.create_cache_ratio)
) { ) {
const effCreateCacheRate = const effCreateCacheRate =
Number(channel.model_ratio) * Number(channel.create_cache_ratio) * costDisc + Number(channel.model_ratio) * Number(channel.create_cache_ratio) * costDisc +
globalMr * globalCreateCacheR * markupRate; globalMr * globalCreateCacheR * markupRate;
const rootCC = hasRatioValue(modelData?.model_ratio) && hasRatioValue(modelData?.create_cache_ratio) const rootCC = hasRatioValue(modelData?.model_ratio)
? Number(modelData.model_ratio) * Number(modelData.create_cache_ratio) ? Number(modelData.model_ratio) * Number(modelData.create_cache_ratio)
: null; : null;
items.push(makeItem(t('缓存创建价格'), effCreateCacheRate, rootCC, false)); items.push(makeItem(t('缓存创建价格'), effCreateCacheRate, rootCC, false));

View File

@ -244,10 +244,11 @@ const PricingCardView = ({
); );
originalPrices.input.push(formatPrice(billingRates.inputRatioPrice)); originalPrices.input.push(formatPrice(billingRates.inputRatioPrice));
// completion_ratio // completion_ratio
if ( if (
ch.completion_ratio !== undefined && ch.completion_ratio !== undefined &&
ch.completion_ratio !== null ch.completion_ratio !== null &&
model.completion_ratio != null
) { ) {
prices.output.push( prices.output.push(
formatPrice(billingRates.completionRatioPrice * usedGroupRatio), formatPrice(billingRates.completionRatioPrice * usedGroupRatio),
@ -257,10 +258,11 @@ const PricingCardView = ({
); );
} }
// cache_ratio // cache_ratio
if ( if (
ch.cache_ratio !== undefined && ch.cache_ratio !== undefined &&
ch.cache_ratio !== null ch.cache_ratio !== null &&
model.cache_ratio != null
) { ) {
prices.cache.push( prices.cache.push(
formatPrice(billingRates.cacheRatioPrice * usedGroupRatio), formatPrice(billingRates.cacheRatioPrice * usedGroupRatio),
@ -268,10 +270,11 @@ const PricingCardView = ({
originalPrices.cache.push(formatPrice(billingRates.cacheRatioPrice)); originalPrices.cache.push(formatPrice(billingRates.cacheRatioPrice));
} }
// create_cache_ratio // create_cache_ratio
if ( if (
ch.create_cache_ratio !== undefined && ch.create_cache_ratio !== undefined &&
ch.create_cache_ratio !== null ch.create_cache_ratio !== null &&
model.create_cache_ratio != null
) { ) {
prices.createCache.push( prices.createCache.push(
formatPrice( formatPrice(
@ -557,7 +560,6 @@ const PricingCardView = ({
}); });
} }
// /
// if (cache) { // if (cache) {
// items.push({ // items.push({
// key: 'cache', // key: 'cache',
@ -567,7 +569,7 @@ const PricingCardView = ({
// original: original?.cache, // original: original?.cache,
// }); // });
// } // }
//
// if (createCache) { // if (createCache) {
// items.push({ // items.push({
// key: 'create-cache', // key: 'create-cache',
@ -795,11 +797,28 @@ const PricingCardView = ({
> >
{(() => { {(() => {
const items = getModelPriceItemsForCard(model, priceData); const items = getModelPriceItemsForCard(model, priceData);
if (items.length === 0) return null; const inputItem = items.find(i => i.key === 'input');
const outputItem = items.find(i => i.key === 'output');
return ( return (
<div className='flex flex-wrap gap-3'> <div className='flex gap-3'>
{items.map(item => ( {inputItem && (
<div key={item.key} className='flex-1 rounded-xl px-3 py-2.5' style={{backgroundColor: 'var(--semi-color-fill-0)', minWidth: '120px'}}> <div className='flex-1 rounded-xl px-3 py-2.5' style={{backgroundColor: 'var(--semi-color-fill-0)'}}>
<div className='text-[10px] mb-0.5' style={{color: 'var(--semi-color-text-2)'}}>{inputItem.label}</div>
<div className='text-sm font-bold text-gray-900'>
{inputItem.value}{inputItem.suffix}
</div>
</div>
)}
{outputItem && (
<div className='flex-1 rounded-xl px-3 py-2.5' style={{backgroundColor: 'var(--semi-color-fill-0)'}}>
<div className='text-[10px] mb-0.5' style={{color: 'var(--semi-color-text-2)'}}>{outputItem.label}</div>
<div className='text-sm font-bold text-gray-900'>
{outputItem.value}{outputItem.suffix}
</div>
</div>
)}
{!inputItem && !outputItem && items.map(item => (
<div key={item.key} className='flex-1 rounded-xl px-3 py-2.5' style={{backgroundColor: 'var(--semi-color-fill-0)'}}>
<div className='text-[10px] mb-0.5' style={{color: 'var(--semi-color-text-2)'}}>{item.label}</div> <div className='text-[10px] mb-0.5' style={{color: 'var(--semi-color-text-2)'}}>{item.label}</div>
<div className='text-sm font-bold text-gray-900'> <div className='text-sm font-bold text-gray-900'>
{item.valueNode || (item.value + (item.suffix || ''))} {item.valueNode || (item.value + (item.suffix || ''))}