Files
vps-manager/app/models/provider.py
T

48 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""平台/服务商注册表模型
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" # CloudflareDNS/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 配置 JSONaccess_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="创建时间")