From 129e17ac42884e71b913bbbbffbc73533ae15d71 Mon Sep 17 00:00:00 2001 From: fengsilin Date: Fri, 17 Apr 2026 09:27:16 +0800 Subject: [PATCH] =?UTF-8?q?feat(channel-pricing):=20=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E7=BC=93=E5=AD=98/=E5=9B=BE=E7=89=87/?= =?UTF-8?q?=E9=9F=B3=E9=A2=91=E5=80=8D=E7=8E=87=E7=BC=96=E8=BE=91=E5=92=8C?= =?UTF-8?q?=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ChannelPricingView.jsx: initValues 添加 5 个高级比例字段 + 按量计费模式下新增高级比例表单区块 - ChannelPricingCard.jsx: tableData 映射 cache_ratio/cache_creation_ratio + 条件列展示 Co-Authored-By: Claude Opus 4.6 --- .../modal/components/ChannelPricingCard.jsx | 24 ++++++++++++++++++- .../Setting/Ratio/ChannelPricingView.jsx | 13 ++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/web/src/components/table/model-pricing/modal/components/ChannelPricingCard.jsx b/web/src/components/table/model-pricing/modal/components/ChannelPricingCard.jsx index 6e19339..786f886 100644 --- a/web/src/components/table/model-pricing/modal/components/ChannelPricingCard.jsx +++ b/web/src/components/table/model-pricing/modal/components/ChannelPricingCard.jsx @@ -112,6 +112,8 @@ const ChannelPricingCard = ({ completionRatio: item.completion_ratio, modelPrice: item.model_price, hasCustomPricing: item.has_custom_pricing, + cacheRatio: item.cache_ratio, + cacheCreationRatio: item.cache_creation_ratio, })); // 判断是否存在按次计费的渠道 @@ -205,6 +207,26 @@ const ChannelPricingCard = ({ ] : []; + // 判断是否存在高级比例数据 + const hasAdvancedPricing = tableData.some( + (item) => item.cacheRatio > 0 || item.cacheCreationRatio > 0 + ); + + const advancedColumns = hasAdvancedPricing + ? [ + { + title: t('缓存读取'), + dataIndex: 'cacheRatio', + render: (v) => (v > 0 ? v : '-'), + }, + { + title: t('缓存创建'), + dataIndex: 'cacheCreationRatio', + render: (v) => (v > 0 ? v : '-'), + }, + ] + : []; + // 只有存在按次计费的渠道时才显示固定价格列 const callBasedColumn = hasCallBased ? [ @@ -226,7 +248,7 @@ const ChannelPricingCard = ({ ] : []; - const columns = [...baseColumns, ...tokenBasedColumns, ...callBasedColumn]; + const columns = [...baseColumns, ...tokenBasedColumns, ...advancedColumns, ...callBasedColumn]; return ( diff --git a/web/src/pages/Setting/Ratio/ChannelPricingView.jsx b/web/src/pages/Setting/Ratio/ChannelPricingView.jsx index 77b580a..f097bc9 100644 --- a/web/src/pages/Setting/Ratio/ChannelPricingView.jsx +++ b/web/src/pages/Setting/Ratio/ChannelPricingView.jsx @@ -490,6 +490,11 @@ const ChannelPricingView = ({ channels, channelPricings, tags, onRefresh }) => { completion_ratio: editingRecord?.pricing?.completion_ratio ?? 0, model_price: editingRecord?.pricing?.model_price ?? 0, tag_ids: getInitialTagIds(editingRecord?.pricing), + cache_ratio: editingRecord?.pricing?.cache_ratio ?? 0, + cache_creation_ratio: editingRecord?.pricing?.cache_creation_ratio ?? 0, + image_ratio: editingRecord?.pricing?.image_ratio ?? 0, + audio_ratio: editingRecord?.pricing?.audio_ratio ?? 0, + audio_completion_ratio: editingRecord?.pricing?.audio_completion_ratio ?? 0, }} > { initValue={tokenPrices.outputTokenPrice} /> + + + + + + + + )} {currentQuotaType === 1 && (