feat(channel): 缓存扁平化 + 网关映射集成 + 计费模式统一 + 模型限制
- 缓存重构为 O(1) 哈希结构 (pricingByGroupModel, mappingByGroupModel) - 渠道模型映射接入网关流程 (Forward 前应用, a→b→c 映射链) - 新增 billing_model_source 配置 (请求模型/最终模型计费) - usage_logs 新增 channel_id, model_mapping_chain, billing_tier 字段 - 每种计费模式统一支持默认价格 + 区间定价 - 渠道模型限制开关 (restrict_models) - 分组按平台分类展示 + 彩色图标 - 必填字段红色星号 + 模型映射 UI - 去除模型通配符支持
This commit is contained in:
@@ -1770,8 +1770,8 @@ export default {
|
||||
inOtherChannel: 'In "{name}"',
|
||||
modelPricing: 'Model Pricing',
|
||||
models: 'Models',
|
||||
modelsPlaceholder: 'Type model name and press Enter. Supports wildcard *',
|
||||
modelInputHint: 'Press Enter to add. Supports paste and wildcard *.',
|
||||
modelsPlaceholder: 'Type full model name and press Enter',
|
||||
modelInputHint: 'Press Enter to add, supports paste for batch import.',
|
||||
billingMode: 'Billing Mode',
|
||||
defaultPrices: 'Default prices (fallback when no interval matches)',
|
||||
inputPrice: 'Input',
|
||||
@@ -1790,7 +1790,23 @@ export default {
|
||||
noPricingRules: 'No pricing rules yet. Click "Add" to create one.',
|
||||
perRequestPrice: 'Price per Request',
|
||||
tierLabel: 'Tier',
|
||||
resolution: 'Resolution'
|
||||
resolution: 'Resolution',
|
||||
modelMapping: 'Model Mapping',
|
||||
modelMappingHint: 'Map request model names to actual model names. Runs before account-level mapping.',
|
||||
noMappingRules: 'No mapping rules. Click "Add" to create one.',
|
||||
mappingSource: 'Source model',
|
||||
mappingTarget: 'Target model',
|
||||
billingModelSource: 'Billing Model',
|
||||
billingModelSourceRequested: 'Bill by requested model',
|
||||
billingModelSourceUpstream: 'Bill by final upstream model',
|
||||
billingModelSourceHint: 'Controls which model name is used for pricing lookup',
|
||||
selectedCount: '{count} selected',
|
||||
searchGroups: 'Search groups...',
|
||||
noGroupsMatch: 'No groups match your search',
|
||||
restrictModels: 'Restrict Models',
|
||||
restrictModelsHint: 'When enabled, only models in the pricing list are allowed. Others will be rejected.',
|
||||
defaultPerRequestPrice: 'Default per-request price (fallback when no tier matches)',
|
||||
defaultImagePrice: 'Default image price (fallback when no tier matches)'
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@@ -1850,8 +1850,8 @@ export default {
|
||||
inOtherChannel: '已属于「{name}」',
|
||||
modelPricing: '模型定价',
|
||||
models: '模型列表',
|
||||
modelsPlaceholder: '输入模型名后按回车添加,支持通配符 *',
|
||||
modelInputHint: '按回车添加,支持粘贴批量导入,支持通配符 *',
|
||||
modelsPlaceholder: '输入完整模型名后按回车添加',
|
||||
modelInputHint: '按回车添加,支持粘贴批量导入',
|
||||
billingMode: '计费模式',
|
||||
defaultPrices: '默认价格(未命中区间时使用)',
|
||||
inputPrice: '输入',
|
||||
@@ -1870,7 +1870,23 @@ export default {
|
||||
noPricingRules: '暂无定价规则,点击"添加"创建',
|
||||
perRequestPrice: '单次价格',
|
||||
tierLabel: '层级',
|
||||
resolution: '分辨率'
|
||||
resolution: '分辨率',
|
||||
modelMapping: '模型映射',
|
||||
modelMappingHint: '将请求中的模型名映射为实际模型名。在账号级别映射之前执行。',
|
||||
noMappingRules: '暂无映射规则,点击"添加"创建',
|
||||
mappingSource: '源模型',
|
||||
mappingTarget: '目标模型',
|
||||
billingModelSource: '计费模型',
|
||||
billingModelSourceRequested: '以请求模型计费',
|
||||
billingModelSourceUpstream: '以最终模型计费',
|
||||
billingModelSourceHint: '控制使用哪个模型名称进行定价查找',
|
||||
selectedCount: '已选 {count} 个',
|
||||
searchGroups: '搜索分组...',
|
||||
noGroupsMatch: '没有匹配的分组',
|
||||
restrictModels: '限制模型',
|
||||
restrictModelsHint: '开启后,仅允许模型定价列表中的模型。不在列表中的模型请求将被拒绝。',
|
||||
defaultPerRequestPrice: '默认单次价格(未命中层级时使用)',
|
||||
defaultImagePrice: '默认图片价格(未命中层级时使用)'
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user