from datetime import datetime from typing import Optional from pydantic import BaseModel, Field class ProxyProviderBase(BaseModel): name: str = Field(description="名称") platform: str = Field("all", description="目标平台: boss/qcwy/zhilian/all") mode: str = Field("json", description="解析模式: json/text") list_path: Optional[str] = Field(None, description="JSON列表路径") ip_path: Optional[str] = Field(None, description="IP字段路径") port_path: Optional[str] = Field(None, description="端口字段路径") username_path: Optional[str] = Field(None, description="用户名字段路径") password_path: Optional[str] = Field(None, description="密码字段路径") pattern: Optional[str] = Field(None, description="文本解析正则") template: str = Field(description="最终代理模板") class ProxyProviderCreate(ProxyProviderBase): pass class ProxyProviderUpdate(BaseModel): id: int = Field(description="主键ID") name: Optional[str] = Field(None, description="名称") platform: Optional[str] = Field(None, description="目标平台: boss/qcwy/zhilian/all") mode: Optional[str] = Field(None, description="解析模式: json/text") list_path: Optional[str] = Field(None, description="JSON列表路径") ip_path: Optional[str] = Field(None, description="IP字段路径") port_path: Optional[str] = Field(None, description="端口字段路径") username_path: Optional[str] = Field(None, description="用户名字段路径") password_path: Optional[str] = Field(None, description="密码字段路径") pattern: Optional[str] = Field(None, description="文本解析正则") template: Optional[str] = Field(None, description="最终代理模板") class ProxyProviderOut(ProxyProviderBase): id: int created_at: datetime updated_at: datetime class Config: from_attributes = True