diff --git a/src/schemas/filter_infos.py b/src/schemas/filter_infos.py index 7808b3c..2fa5781 100644 --- a/src/schemas/filter_infos.py +++ b/src/schemas/filter_infos.py @@ -1,4 +1,4 @@ -from pydantic import BaseModel, Field +from pydantic import BaseModel, Field, field_validator from typing import List, Optional from .audio_timelines import TimelineItem @@ -7,7 +7,15 @@ class FilterInfosRequest(BaseModel): """滤镜信息请求参数""" filters: List[str] = Field(..., description="滤镜名称列表") timelines: List[TimelineItem] = Field(..., description="时间线数组") - intensities: Optional[List[float]] = Field(default=None, ge=0, le=100, description="滤镜强度列表(0-100),可选") + intensities: Optional[List[float]] = Field(default=None, description="滤镜强度列表(0-100),可选") + + @field_validator('intensities', mode='before') + @classmethod + def validate_intensities(cls, v): + """验证并限制 intensities 数组中的每个值在 0-100 范围内""" + if v is None: + return v + return [max(0, min(100, val)) for val in v] class FilterInfosResponse(BaseModel):