from typing import Optional, List from pydantic import BaseModel, Field from datetime import datetime class RemoteServerBase(BaseModel): server_id: str = Field(..., description="服务器唯一标识,如 MCP1") name: str = Field(..., description="服务器名称") host: str = Field(..., description="服务器地址") port: int = Field(22, description="SSH端口") username: str = Field("root", description="SSH用户名") password: Optional[str] = Field(None, description="SSH密码") key_file: Optional[str] = Field(None, description="SSH私钥路径") project_path: str = Field("/root/troov-asyncio", description="项目路径") class RemoteServerCreate(RemoteServerBase): pass class RemoteServerUpdate(BaseModel): name: Optional[str] = None host: Optional[str] = None port: Optional[int] = None username: Optional[str] = None password: Optional[str] = None key_file: Optional[str] = None project_path: Optional[str] = None class RemoteServerOut(RemoteServerBase): id: int created_at: datetime updated_at: datetime class Config: from_attributes = True