"""Script (口播文案库) Pydantic schemas — Issue #1795.""" from __future__ import annotations from datetime import datetime from typing import List, Optional from pydantic import BaseModel, Field class ScriptSegment(BaseModel): """单段文案.""" text: str duration: Optional[float] = None class ScriptResponse(BaseModel): id: str user_id: str title: str content: str segments: List[ScriptSegment] = Field(default_factory=list) tags: List[str] = Field(default_factory=list) created_at: datetime updated_at: datetime class ScriptListResponse(BaseModel): items: list[ScriptResponse] total: int = 0 class CreateScriptRequest(BaseModel): title: str = Field(..., min_length=1, max_length=255) content: str = "" segments: List[ScriptSegment] = Field(default_factory=list) tags: List[str] = Field(default_factory=list) class UpdateScriptRequest(BaseModel): title: Optional[str] = Field(None, min_length=1, max_length=255) content: Optional[str] = None segments: Optional[List[ScriptSegment]] = None tags: Optional[List[str]] = None