"""Script (口播文案库) Pydantic schemas — Issue #1795.""" from __future__ import annotations from datetime import datetime from typing import Any, Dict, 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) title_text: str = "" title_category: str = "" title_config: Dict[str, Any] = Field(default_factory=dict) 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) title_text: str = "" title_category: str = "" title_config: Optional[Dict[str, Any]] = None 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 title_text: Optional[str] = None title_category: Optional[str] = None title_config: Optional[Dict[str, Any]] = None