34 lines
1.8 KiB
Python
34 lines
1.8 KiB
Python
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)
|