""" 文件系统操作相关的 Pydantic Schema """ from pydantic import BaseModel, Field from typing import Optional, List class FileTreeNode(BaseModel): """文件树节点 Schema""" title: str = Field(..., description="节点标题(文件/文件夹名)") key: str = Field(..., description="节点唯一键(相对路径)") isLeaf: bool = Field(..., description="是否叶子节点") children: Optional[List['FileTreeNode']] = Field(None, description="子节点") class Config: from_attributes = True # 支持递归引用 FileTreeNode.model_rebuild() class FileContentRequest(BaseModel): """文件内容请求 Schema""" path: str = Field(..., description="文件相对路径") class FileSaveRequest(BaseModel): """文件保存请求 Schema""" path: str = Field(..., description="文件相对路径") content: str = Field(..., description="文件内容") class FileOperateRequest(BaseModel): """文件操作请求 Schema""" action: str = Field(..., description="操作类型:rename|delete|create_dir|create_file") path: str = Field(..., description="当前路径") new_path: Optional[str] = Field(None, description="新路径(重命名时使用)") content: Optional[str] = Field(None, description="文件内容(创建文件时使用)") class FileUploadResponse(BaseModel): """文件上传响应 Schema""" filename: str = Field(..., description="文件名") path: str = Field(..., description="文件相对路径") url: str = Field(..., description="文件访问URL") size: int = Field(..., description="文件大小(字节)")