refactor: 废弃 rate_multiplier 字段,改进成本倍率回退逻辑

- 在前后端模型中为 rate_multiplier 添加 @deprecated 标记
- 修复 rate_multipliers 回退逻辑:当 rate_multipliers 存在但未配置当前格式时使用 1.0
- ModelMappingsTab: 删除映射后自动保存,简化空状态提示
- ModelManagement: 添加 refreshModel 事件在映射更新后刷新模型数据
- CacheAwareScheduler: 添加映射匹配调试日志,移除 candidate_models 限制
This commit is contained in:
fawney19
2026-01-14 21:07:28 +08:00
parent bec9c3a989
commit 0348b7d915
10 changed files with 67 additions and 22 deletions

View File

@@ -1004,12 +1004,14 @@ class ProviderAPIKey(Base):
note = Column(String(500), nullable=True) # 备注说明(可选)
# 成本计算
# [DEPRECATED] rate_multiplier 已废弃,请使用 rate_multipliers
# 将在未来版本中移除,目前仅作为 rate_multipliers 未配置时的回退值
rate_multiplier = Column(
Float, default=1.0, nullable=False
) # 默认成本倍率(真实成本 = 表面成本 × 倍率)
) # [DEPRECATED] 默认成本倍率,请使用 rate_multipliers
rate_multipliers = Column(
JSON, nullable=True
) # 按 API 格式的成本倍率 {"CLAUDE": 1.0, "OPENAI": 0.8}
) # 按 API 格式的成本倍率 {"CLAUDE_CLI": 1.0, "OPENAI_CLI": 0.8}
# 优先级配置 (数字越小越优先)
internal_priority = Column(

View File

@@ -132,11 +132,12 @@ class EndpointAPIKeyCreate(BaseModel):
name: str = Field(..., min_length=1, max_length=100, description="密钥名称(必填,用于识别)")
# 成本计算
# [DEPRECATED] rate_multiplier 已废弃,请使用 rate_multipliers
rate_multiplier: float = Field(
default=1.0, ge=0.01, description="默认成本倍率(真实成本 = 表面成本 × 倍率)"
default=1.0, ge=0.01, description="[DEPRECATED] 默认成本倍率,已废弃,请使用 rate_multipliers"
)
rate_multipliers: Optional[Dict[str, float]] = Field(
default=None, description="按 API 格式的成本倍率,如 {'CLAUDE': 1.0, 'OPENAI': 0.8}"
default=None, description="按 API 格式的成本倍率,如 {'CLAUDE_CLI': 1.0, 'OPENAI_CLI': 0.8}"
)
# 优先级和限制(数字越小越优先)
@@ -273,9 +274,10 @@ class EndpointAPIKeyUpdate(BaseModel):
default=None, min_length=3, max_length=500, description="API Key将自动加密"
)
name: Optional[str] = Field(default=None, min_length=1, max_length=100, description="密钥名称")
rate_multiplier: Optional[float] = Field(default=None, ge=0.01, description="默认成本倍率")
# [DEPRECATED] rate_multiplier 已废弃,请使用 rate_multipliers
rate_multiplier: Optional[float] = Field(default=None, ge=0.01, description="[DEPRECATED] 默认成本倍率,已废弃")
rate_multipliers: Optional[Dict[str, float]] = Field(
default=None, description="按 API 格式的成本倍率,如 {'CLAUDE': 1.0, 'OPENAI': 0.8}"
default=None, description="按 API 格式的成本倍率,如 {'CLAUDE_CLI': 1.0, 'OPENAI_CLI': 0.8}"
)
internal_priority: Optional[int] = Field(
default=None, description="Key 内部优先级(提供商优先模式,数字越小越优先)"
@@ -399,9 +401,10 @@ class EndpointAPIKeyResponse(BaseModel):
name: str = Field(..., description="密钥名称")
# 成本计算
rate_multiplier: float = Field(default=1.0, description="默认成本倍率")
# [DEPRECATED] rate_multiplier 已废弃,请使用 rate_multipliers
rate_multiplier: float = Field(default=1.0, description="[DEPRECATED] 默认成本倍率,已废弃")
rate_multipliers: Optional[Dict[str, float]] = Field(
default=None, description="按 API 格式的成本倍率,如 {'CLAUDE': 1.0, 'OPENAI': 0.8}"
default=None, description="按 API 格式的成本倍率,如 {'CLAUDE_CLI': 1.0, 'OPENAI_CLI': 0.8}"
)
# 优先级和限制