48 lines
1.9 KiB
Python
48 lines
1.9 KiB
Python
"""平台/服务商注册表模型
|
||
|
||
Provider 是资产的归属平台预设字典,提供唯一标识(slug),
|
||
为未来按平台对接 SDK(自动同步 VPS/域名/AI 状态)打基础。
|
||
"""
|
||
|
||
from datetime import datetime
|
||
from enum import Enum
|
||
from typing import Optional
|
||
|
||
from sqlmodel import Field, SQLModel
|
||
|
||
|
||
class ProviderCategory(str, Enum):
|
||
"""平台分类"""
|
||
|
||
VPS = "vps" # 云服务器
|
||
DOMAIN = "domain" # 域名注册商
|
||
AI_AGENT = "ai_agent" # AI 服务商
|
||
CLOUDFLARE = "cloudflare" # Cloudflare(DNS/Workers/R2/Tunnel/Mail)
|
||
OTHER = "other" # 其他
|
||
|
||
|
||
class Provider(SQLModel, table=True):
|
||
"""平台/服务商(预设 + 自定义)"""
|
||
|
||
__tablename__ = "providers"
|
||
|
||
id: Optional[int] = Field(default=None, primary_key=True)
|
||
slug: str = Field(index=True, unique=True, description="唯一标识,如 aliyun/vultr/openai")
|
||
name: str = Field(index=True, description="显示名,如 阿里云")
|
||
name_en: Optional[str] = Field(default=None, description="英文名")
|
||
category: ProviderCategory = Field(index=True, description="平台分类")
|
||
website: Optional[str] = Field(default=None, description="官网")
|
||
console_url: Optional[str] = Field(default=None, description="管理面板 URL")
|
||
sdk_type: Optional[str] = Field(
|
||
default=None, description="SDK 类型标识,如 aliyun-sdk/vultr-api(供扩展用)"
|
||
)
|
||
api_config_encrypted: Optional[str] = Field(
|
||
default=None, description="加密的 API 配置 JSON(access_key/secret 等)"
|
||
)
|
||
enabled: bool = Field(default=True, description="是否启用")
|
||
remark: Optional[str] = Field(default=None, description="备注")
|
||
last_synced_at: Optional[datetime] = Field(
|
||
default=None, description="最近一次 SDK 同步时间"
|
||
)
|
||
created_at: datetime = Field(default_factory=datetime.utcnow, description="创建时间")
|