feat(render): introduce getEffectiveRatio helper for improved group ratio handling

This commit is contained in:
CaIon
2025-06-13 01:16:16 +08:00
parent 9b659ed4f1
commit f191f981c4

View File

@@ -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}}', {