2025-12-10 20:52:44 +08:00
|
|
|
|
"""
|
|
|
|
|
|
Provider API Key相关的API模型
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
from datetime import datetime
|
|
|
|
|
|
|
2025-12-18 02:20:53 +08:00
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field
|
2025-12-10 20:52:44 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ProviderAPIKeyBase(BaseModel):
|
|
|
|
|
|
"""Provider API Key基础模型"""
|
|
|
|
|
|
|
2026-01-30 03:10:21 +08:00
|
|
|
|
name: str | None = Field(None, description="密钥名称/备注")
|
2025-12-10 20:52:44 +08:00
|
|
|
|
api_key: str = Field(..., description="API密钥")
|
2026-01-30 03:10:21 +08:00
|
|
|
|
rpm_limit: int | None = Field(None, description="RPM限制(每分钟请求数),NULL=自适应模式")
|
2025-12-10 20:52:44 +08:00
|
|
|
|
priority: int = Field(0, description="优先级(越高越优先使用)")
|
|
|
|
|
|
is_active: bool = Field(True, description="是否启用")
|
2026-01-30 03:10:21 +08:00
|
|
|
|
expires_at: datetime | None = Field(None, description="过期时间")
|
2025-12-10 20:52:44 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ProviderAPIKeyCreate(ProviderAPIKeyBase):
|
|
|
|
|
|
"""创建Provider API Key请求"""
|
|
|
|
|
|
|
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ProviderAPIKeyUpdate(BaseModel):
|
|
|
|
|
|
"""更新Provider API Key请求"""
|
|
|
|
|
|
|
2026-01-30 03:10:21 +08:00
|
|
|
|
name: str | None = None
|
|
|
|
|
|
api_key: str | None = None
|
|
|
|
|
|
rpm_limit: int | None = None
|
|
|
|
|
|
priority: int | None = None
|
|
|
|
|
|
is_active: bool | None = None
|
|
|
|
|
|
expires_at: datetime | None = None
|
2025-12-10 20:52:44 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ProviderAPIKeyResponse(ProviderAPIKeyBase):
|
|
|
|
|
|
"""Provider API Key响应"""
|
|
|
|
|
|
|
|
|
|
|
|
id: str
|
|
|
|
|
|
provider_id: str
|
2026-01-30 03:10:21 +08:00
|
|
|
|
request_count: int | None = Field(0, description="请求次数")
|
|
|
|
|
|
error_count: int | None = Field(0, description="错误次数")
|
|
|
|
|
|
last_used_at: datetime | None = Field(None, description="最后使用时间")
|
|
|
|
|
|
last_error_at: datetime | None = Field(None, description="最后错误时间")
|
|
|
|
|
|
last_error_msg: str | None = Field(None, description="最后错误信息")
|
2025-12-10 20:52:44 +08:00
|
|
|
|
created_at: datetime
|
|
|
|
|
|
updated_at: datetime
|
|
|
|
|
|
|
2025-12-18 02:20:53 +08:00
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
2025-12-10 20:52:44 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ProviderAPIKeyStats(BaseModel):
|
|
|
|
|
|
"""Provider API Key统计信息"""
|
|
|
|
|
|
|
|
|
|
|
|
id: str
|
2026-01-30 03:10:21 +08:00
|
|
|
|
name: str | None
|
2025-12-10 20:52:44 +08:00
|
|
|
|
request_count: int
|
|
|
|
|
|
error_count: int
|
|
|
|
|
|
success_rate: float
|
2026-01-30 03:10:21 +08:00
|
|
|
|
last_used_at: datetime | None
|
2025-12-10 20:52:44 +08:00
|
|
|
|
is_active: bool
|
|
|
|
|
|
is_expired: bool
|