""" MediaAsset Schema Definition Source of truth for media asset data model. """ from dataclasses import dataclass, field from datetime import datetime from enum import Enum from typing import Any, Dict, List, Optional from uuid import UUID class AssetStatus(str, Enum): """Status of a media asset after probing.""" PENDING = "pending" READY = "ready" ERROR = "error" @dataclass class MediaAsset: """ A video/audio file registered in the system. Metadata is populated asynchronously via ffprobe after registration. """ id: UUID filename: str file_path: str # Status status: AssetStatus = AssetStatus.PENDING error_message: Optional[str] = None # File info file_size: Optional[int] = None # Media metadata (populated by ffprobe) duration: Optional[float] = None # seconds video_codec: Optional[str] = None audio_codec: Optional[str] = None width: Optional[int] = None height: Optional[int] = None framerate: Optional[float] = None bitrate: Optional[int] = None # bits per second # Full ffprobe output and custom metadata properties: Dict[str, Any] = field(default_factory=dict) # User annotations comments: str = "" tags: List[str] = field(default_factory=list) # Timestamps created_at: Optional[datetime] = None updated_at: Optional[datetime] = None