Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ For commercial licensing, please contact support@quantumnous.com
import React from 'react';
import { Avatar, Tag, Table, Typography } from '@douyinfe/semi-ui';
import { IconPriceTag } from '@douyinfe/semi-icons';
import { parseTiersFromExpr } from '../../../../../helpers';
import { parseTiersFromExpr, getCurrencyConfig } from '../../../../../helpers';
import { BILLING_VARS } from '../../../../../constants';
import {
splitBillingExprAndRequestRules,
Expand All @@ -36,8 +36,6 @@ import {

const { Text } = Typography;

const PRICE_SUFFIX = '$/1M tokens';

const VAR_LABELS = { p: '输入', c: '输出' };
const OP_LABELS = { '<': '<', '<=': '≤', '>': '>', '>=': '≥' };
const TIME_FUNC_LABELS = { hour: '小时', minute: '分钟', weekday: '星期', month: '月份', day: '日期' };
Expand Down Expand Up @@ -89,6 +87,7 @@ function describeGroup(group, t) {
}

export default function DynamicPricingBreakdown({ billingExpr, t }) {
const { symbol, rate } = getCurrencyConfig();
const { billingExpr: baseExpr, requestRuleExpr: ruleExpr } =
splitBillingExprAndRequestRules(billingExpr || '');

Expand Down Expand Up @@ -132,9 +131,9 @@ export default function DynamicPricingBreakdown({ billingExpr, t }) {
...priceFields
.filter(([field]) => hasTiers && tiers.some((tier) => tier[field] > 0))
.map(([field, label]) => ({
title: `${t(label)} (${PRICE_SUFFIX})`,
title: `${t(label)} (${symbol}/1M tokens)`,
dataIndex: field,
render: (v) => v > 0 ? <Text strong>${v.toFixed(4)}</Text> : '-',
render: (v) => v > 0 ? <Text strong>{`${symbol}${(v * rate).toFixed(4)}`}</Text> : '-',
})),
];

Expand Down
16 changes: 15 additions & 1 deletion web/src/helpers/utils.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -900,6 +900,20 @@ export const getModelPriceItems = (
export const formatDynamicPriceSummary = (billingExpr, t, groupRatio = 1) => {
if (!billingExpr) return <span style={{ color: 'var(--semi-color-text-1)' }}>{t('动态计费')}</span>;

const quotaDisplayType = localStorage.getItem('quota_display_type') || 'USD';
let symbol = '$';
let rate = 1;
try {
const s = JSON.parse(localStorage.getItem('status') || '{}');
if (quotaDisplayType === 'CNY') {
symbol = '¥';
rate = s?.usd_exchange_rate || 7;
} else if (quotaDisplayType === 'CUSTOM') {
symbol = s?.custom_currency_symbol || '¤';
rate = s?.custom_currency_exchange_rate || 1;
}
} catch (e) {}

const gr = groupRatio || 1;
const exprBody = billingExpr.replace(/^v\d+:/, '');
const tierMatches = exprBody.match(/tier\(/g) || [];
Expand Down Expand Up @@ -933,7 +947,7 @@ export const formatDynamicPriceSummary = (billingExpr, t, groupRatio = 1) => {
{varLabels.map(([key, label]) =>
key in varCoeffs ? (
<span key={key} style={lineStyle}>
{t(label)} ${(varCoeffs[key] * gr).toFixed(4)}{unitSuffix}
{`${t(label)} ${symbol}${(varCoeffs[key] * gr * rate).toFixed(4)}${unitSuffix}`}
</span>
) : null,
)}
Expand Down