feat: 平台预设字典+凭证加密+分库备份+Agent采集+移动端优先前端重做

This commit is contained in:
gouki
2026-08-01 23:10:31 +00:00
parent 1dac5d8735
commit e672086b67
31 changed files with 1792 additions and 421 deletions
+29 -1
View File
@@ -30,6 +30,11 @@ class VPSDetailIn(SQLModel):
bandwidth_gb: Optional[int] = None
ssh_port: int = 22
panel_url: Optional[str] = None
ssh_user: Optional[str] = None
login_method: Optional[str] = "key"
ssh_key: Optional[str] = None # 明文输入,服务端加密存储
password: Optional[str] = None # 明文输入,服务端加密存储
purpose: Optional[str] = None
class DomainDetailIn(SQLModel):
@@ -41,6 +46,7 @@ class DomainDetailIn(SQLModel):
cloudflare_account: Optional[str] = None
is_using: bool = True
redirect_target: Optional[str] = None
bind_asset_id: Optional[int] = None
class AIAccountIn(SQLModel):
@@ -64,6 +70,8 @@ class AssetBase(SQLModel):
name: str
asset_type: AssetType
provider: str
provider_id: Optional[int] = None
renewal_cycle: Optional[str] = None
account: Optional[str] = None
expiry_date: Optional[date] = None
auto_renew: bool = False
@@ -88,6 +96,8 @@ class AssetUpdate(SQLModel):
name: Optional[str] = None
asset_type: Optional[AssetType] = None
provider: Optional[str] = None
provider_id: Optional[int] = None
renewal_cycle: Optional[str] = None
account: Optional[str] = None
expiry_date: Optional[date] = None
auto_renew: Optional[bool] = None
@@ -104,9 +114,26 @@ class AssetUpdate(SQLModel):
# --------------------------------------------------------------------------- #
# 输出模型
# --------------------------------------------------------------------------- #
class VPSDetailRead(VPSDetailIn):
class VPSDetailRead(SQLModel):
"""VPS 详情输出(不含敏感明文,仅返回凭证存在标记)"""
id: int
asset_id: int
ip_address: str
tailscale_ip: Optional[str] = None
region: Optional[str] = None
os: Optional[str] = None
cpu_cores: int = 1
memory_gb: float = 1
disk_gb: int = 20
bandwidth_gb: Optional[int] = None
ssh_port: int = 22
panel_url: Optional[str] = None
ssh_user: Optional[str] = None
login_method: Optional[str] = "key"
purpose: Optional[str] = None
has_ssh_key: bool = False
has_password: bool = False
class DomainDetailRead(DomainDetailIn):
@@ -127,6 +154,7 @@ class AssetRead(AssetBase):
created_at: datetime
updated_at: datetime
days_to_expiry: Optional[int] = None
provider_name: Optional[str] = None
vps_detail: Optional[VPSDetailRead] = None
domain_detail: Optional[DomainDetailRead] = None
ai_detail: Optional[AIAccountRead] = None