CMVR-AI-ANALYSIS/app/schemas.py

37 lines
1.1 KiB
Python
Raw Normal View History

2026-08-13 16:56:32 +08:00
from enum import Enum
from typing import Any
from pydantic import BaseModel, Field, HttpUrl, model_validator
2026-08-13 16:56:32 +08:00
class AnalysisType(str, Enum):
AUDIO_CLASSIFICATION = "AUDIO_CLASSIFICATION"
VIDEO_ANALYSIS = "VIDEO_ANALYSIS"
IMAGE_ANALYSIS = "IMAGE_ANALYSIS"
2026-08-13 16:56:32 +08:00
class AnalysisRequest(BaseModel):
requestId: str = Field(min_length=1, max_length=200)
analysisType: AnalysisType
profileCode: str = Field(min_length=1, max_length=200)
mediaUrl: HttpUrl | None = None
mediaUrls: list[HttpUrl] = Field(default_factory=list, max_length=12)
2026-08-13 16:56:32 +08:00
options: dict[str, Any] = Field(default_factory=dict)
context: dict[str, Any] = Field(default_factory=dict)
@model_validator(mode="after")
def require_media(self):
if self.mediaUrl is None and not self.mediaUrls:
raise ValueError("mediaUrl or mediaUrls is required")
return self
2026-08-13 16:56:32 +08:00
class AnalysisResponse(BaseModel):
requestId: str
analysisType: AnalysisType
profileCode: str
status: str
result: dict[str, Any] = Field(default_factory=dict)
model: dict[str, Any] = Field(default_factory=dict)
timingMs: int