from pydantic import BaseModel, ConfigDict, Field from app.schemas.common import NaiveDatetime class ApiModelPricingCreate(BaseModel): """创建 API 模型价格请求。支持 camelCase 和 snake_case 两种字段名。""" model_config = ConfigDict(populate_by_name=True) model_config_id: str = Field( ..., max_length=32, description="引擎ID", alias="modelConfigId", ) gen_type: str = Field(default="video", max_length=16, description="image | video", alias="genType") resolution: str = Field(..., max_length=16, description="分辨率") price_ratio: float = Field(default=1.0, gt=0, description="价格系数", alias="priceRatio") base_price: float = Field(default=0.0, ge=0, description="基础价格(元)", alias="basePrice") per_second_price: float = Field(default=0.0, ge=0, description="每秒价格(元)", alias="perSecondPrice") input_video_ratio: float = Field(default=1.0, ge=0, description="传入视频系数", alias="inputVideoRatio") input_video_base_price: float = Field(default=0.0, ge=0, description="传入视频基础价(元)", alias="inputVideoBasePrice") input_video_per_second_price: float = Field(default=0.0, ge=0, description="传入视频每秒价(元)", alias="inputVideoPerSecondPrice") input_image_ratio: float = Field(default=1.0, ge=0, description="传入图片系数", alias="inputImageRatio") input_image_base_price: float = Field(default=0.0, ge=0, description="传入图片基础价(元)", alias="inputImageBasePrice") input_image_per_image_price: float = Field(default=0.0, ge=0, description="传入图片每张价(元)", alias="inputImagePerImagePrice") class ApiModelPricingOut(ApiModelPricingCreate): """API 模型价格响应。""" id: str created_at: NaiveDatetime model_config = ConfigDict(from_attributes=True, populate_by_name=True)