from pydantic import BaseModel, Field from datetime import datetime from typing import Optional, Any class AnimationGenerate(BaseModel): prompt: str = Field(..., min_length=1, description="教学动画描述") anim_type: str = Field(default="general", pattern=r"^(math|physics|chemistry|biology|geography|general)$") subject: str = Field(default="", max_length=50) class AnimationCreate(BaseModel): title: str = Field(..., min_length=1, max_length=200) anim_type: str = "general" description: str = "" config: dict[str, Any] = {} class AnimationUpdate(BaseModel): title: Optional[str] = None anim_type: Optional[str] = None description: Optional[str] = None config: Optional[dict[str, Any]] = None thumbnail: Optional[str] = None status: Optional[str] = None class AnimationOut(BaseModel): id: int user_id: int title: str anim_type: str = "general" description: str = "" config: dict = {} thumbnail: str = "" status: str = "draft" created_at: datetime | None = None updated_at: datetime | None = None model_config = {"from_attributes": True}