✨ feat(render): introduce getEffectiveRatio helper for improved group ratio handling
This commit is contained in:
@@ -868,7 +868,27 @@ export function renderQuota(quota, digits = 2) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function isValidGroupRatio(ratio) {
|
function isValidGroupRatio(ratio) {
|
||||||
return ratio !== undefined && ratio !== null && ratio !== -1;
|
return Number.isFinite(ratio) && ratio !== -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper function to get effective ratio and label
|
||||||
|
* @param {number} groupRatio - The default group ratio
|
||||||
|
* @param {number} user_group_ratio - The user-specific group ratio
|
||||||
|
* @returns {Object} - Object containing { ratio, label, useUserGroupRatio }
|
||||||
|
*/
|
||||||
|
function getEffectiveRatio(groupRatio, user_group_ratio) {
|
||||||
|
const useUserGroupRatio = isValidGroupRatio(user_group_ratio);
|
||||||
|
const ratioLabel = useUserGroupRatio
|
||||||
|
? i18next.t('专属倍率')
|
||||||
|
: i18next.t('分组倍率');
|
||||||
|
const effectiveRatio = useUserGroupRatio ? user_group_ratio : groupRatio;
|
||||||
|
|
||||||
|
return {
|
||||||
|
ratio: effectiveRatio,
|
||||||
|
label: ratioLabel,
|
||||||
|
useUserGroupRatio: useUserGroupRatio
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function renderModelPrice(
|
export function renderModelPrice(
|
||||||
@@ -894,11 +914,9 @@ export function renderModelPrice(
|
|||||||
audioInputTokens = 0,
|
audioInputTokens = 0,
|
||||||
audioInputPrice = 0,
|
audioInputPrice = 0,
|
||||||
) {
|
) {
|
||||||
const useUserGroupRatio = isValidGroupRatio(user_group_ratio);
|
const { ratio: effectiveGroupRatio, label: ratioLabel } = getEffectiveRatio(groupRatio, user_group_ratio);
|
||||||
const ratioLabel = useUserGroupRatio
|
groupRatio = effectiveGroupRatio;
|
||||||
? i18next.t('专属倍率')
|
|
||||||
: i18next.t('分组倍率');
|
|
||||||
groupRatio = useUserGroupRatio ? user_group_ratio : groupRatio;
|
|
||||||
if (modelPrice !== -1) {
|
if (modelPrice !== -1) {
|
||||||
return i18next.t(
|
return i18next.t(
|
||||||
'模型价格:${{price}} * {{ratioType}}:{{ratio}} = ${{total}}',
|
'模型价格:${{price}} * {{ratioType}}:{{ratio}} = ${{total}}',
|
||||||
@@ -1110,11 +1128,7 @@ export function renderLogContent(
|
|||||||
fileSearch = false,
|
fileSearch = false,
|
||||||
fileSearchCallCount = 0,
|
fileSearchCallCount = 0,
|
||||||
) {
|
) {
|
||||||
useUserGroupRatio = isValidGroupRatio(user_group_ratio);
|
const { ratio, label: ratioLabel, useUserGroupRatio: useUserGroupRatio } = getEffectiveRatio(groupRatio, user_group_ratio);
|
||||||
const ratioLabel = useUserGroupRatio
|
|
||||||
? i18next.t('专属倍率')
|
|
||||||
: i18next.t('分组倍率');
|
|
||||||
const ratio = useUserGroupRatio ? user_group_ratio : groupRatio;
|
|
||||||
|
|
||||||
if (modelPrice !== -1) {
|
if (modelPrice !== -1) {
|
||||||
return i18next.t('模型价格 ${{price}},{{ratioType}} {{ratio}}', {
|
return i18next.t('模型价格 ${{price}},{{ratioType}} {{ratio}}', {
|
||||||
@@ -1169,11 +1183,8 @@ export function renderModelPriceSimple(
|
|||||||
image = false,
|
image = false,
|
||||||
imageRatio = 1.0,
|
imageRatio = 1.0,
|
||||||
) {
|
) {
|
||||||
const useUserGroupRatio = isValidGroupRatio(user_group_ratio);
|
const { ratio: effectiveGroupRatio, label: ratioLabel } = getEffectiveRatio(groupRatio, user_group_ratio);
|
||||||
const ratioLabel = useUserGroupRatio
|
groupRatio = effectiveGroupRatio;
|
||||||
? i18next.t('专属倍率')
|
|
||||||
: i18next.t('分组倍率');
|
|
||||||
groupRatio = useUserGroupRatio ? user_group_ratio : groupRatio;
|
|
||||||
if (modelPrice !== -1) {
|
if (modelPrice !== -1) {
|
||||||
return i18next.t('价格:${{price}} * {{ratioType}}:{{ratio}}', {
|
return i18next.t('价格:${{price}} * {{ratioType}}:{{ratio}}', {
|
||||||
price: modelPrice,
|
price: modelPrice,
|
||||||
@@ -1236,11 +1247,8 @@ export function renderAudioModelPrice(
|
|||||||
cacheTokens = 0,
|
cacheTokens = 0,
|
||||||
cacheRatio = 1.0,
|
cacheRatio = 1.0,
|
||||||
) {
|
) {
|
||||||
const useUserGroupRatio = isValidGroupRatio(user_group_ratio);
|
const { ratio: effectiveGroupRatio, label: ratioLabel } = getEffectiveRatio(groupRatio, user_group_ratio);
|
||||||
const ratioLabel = useUserGroupRatio
|
groupRatio = effectiveGroupRatio;
|
||||||
? i18next.t('专属倍率')
|
|
||||||
: i18next.t('分组倍率');
|
|
||||||
groupRatio = useUserGroupRatio ? user_group_ratio : groupRatio;
|
|
||||||
// 1 ratio = $0.002 / 1K tokens
|
// 1 ratio = $0.002 / 1K tokens
|
||||||
if (modelPrice !== -1) {
|
if (modelPrice !== -1) {
|
||||||
return i18next.t(
|
return i18next.t(
|
||||||
@@ -1409,11 +1417,8 @@ export function renderClaudeModelPrice(
|
|||||||
cacheCreationTokens = 0,
|
cacheCreationTokens = 0,
|
||||||
cacheCreationRatio = 1.0,
|
cacheCreationRatio = 1.0,
|
||||||
) {
|
) {
|
||||||
const useUserGroupRatio = isValidGroupRatio(user_group_ratio);
|
const { ratio: effectiveGroupRatio, label: ratioLabel } = getEffectiveRatio(groupRatio, user_group_ratio);
|
||||||
const ratioLabel = useUserGroupRatio
|
groupRatio = effectiveGroupRatio;
|
||||||
? i18next.t('专属倍率')
|
|
||||||
: i18next.t('分组倍率');
|
|
||||||
groupRatio = useUserGroupRatio ? user_group_ratio : groupRatio;
|
|
||||||
|
|
||||||
if (modelPrice !== -1) {
|
if (modelPrice !== -1) {
|
||||||
return i18next.t(
|
return i18next.t(
|
||||||
@@ -1541,11 +1546,8 @@ export function renderClaudeLogContent(
|
|||||||
cacheRatio = 1.0,
|
cacheRatio = 1.0,
|
||||||
cacheCreationRatio = 1.0,
|
cacheCreationRatio = 1.0,
|
||||||
) {
|
) {
|
||||||
const useUserGroupRatio = isValidGroupRatio(user_group_ratio);
|
const { ratio: effectiveGroupRatio, label: ratioLabel } = getEffectiveRatio(groupRatio, user_group_ratio);
|
||||||
const ratioLabel = useUserGroupRatio
|
groupRatio = effectiveGroupRatio;
|
||||||
? i18next.t('专属倍率')
|
|
||||||
: i18next.t('分组倍率');
|
|
||||||
groupRatio = useUserGroupRatio ? user_group_ratio : groupRatio;
|
|
||||||
|
|
||||||
if (modelPrice !== -1) {
|
if (modelPrice !== -1) {
|
||||||
return i18next.t('模型价格 ${{price}},{{ratioType}} {{ratio}}', {
|
return i18next.t('模型价格 ${{price}},{{ratioType}} {{ratio}}', {
|
||||||
@@ -1578,11 +1580,8 @@ export function renderClaudeModelPriceSimple(
|
|||||||
cacheCreationTokens = 0,
|
cacheCreationTokens = 0,
|
||||||
cacheCreationRatio = 1.0,
|
cacheCreationRatio = 1.0,
|
||||||
) {
|
) {
|
||||||
const useUserGroupRatio = isValidGroupRatio(user_group_ratio);
|
const { ratio: effectiveGroupRatio, label: ratioLabel } = getEffectiveRatio(groupRatio, user_group_ratio);
|
||||||
const ratioLabel = useUserGroupRatio
|
groupRatio = effectiveGroupRatio;
|
||||||
? i18next.t('专属倍率')
|
|
||||||
: i18next.t('分组倍率');
|
|
||||||
groupRatio = useUserGroupRatio ? user_group_ratio : groupRatio;
|
|
||||||
|
|
||||||
if (modelPrice !== -1) {
|
if (modelPrice !== -1) {
|
||||||
return i18next.t('价格:${{price}} * {{ratioType}}:{{ratio}}', {
|
return i18next.t('价格:${{price}} * {{ratioType}}:{{ratio}}', {
|
||||||
|
|||||||
Reference in New Issue
Block a user