Refine seller store implementation
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
"""轮播商品视频的请求与任务响应契约。"""
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
from pydantic import BaseModel, Field, field_validator
|
||||
|
||||
|
||||
class VideoCreateRequest(BaseModel):
|
||||
"""按传入顺序把 2–5 张当前商品图片合成为无音轨轮播视频。"""
|
||||
|
||||
asset_ids: list[str] = Field(min_length=2, max_length=5)
|
||||
|
||||
@field_validator("asset_ids")
|
||||
@classmethod
|
||||
def asset_ids_must_be_unique(cls, values: list[str]) -> list[str]:
|
||||
if len(set(values)) != len(values):
|
||||
raise ValueError("合成视频不能重复选择同一张图片")
|
||||
return values
|
||||
|
||||
|
||||
class VideoCreateResponse(BaseModel):
|
||||
job_id: str
|
||||
|
||||
|
||||
class VideoDeleteResponse(BaseModel):
|
||||
deleted: bool = True
|
||||
|
||||
|
||||
class VideoResultOut(BaseModel):
|
||||
item_id: str
|
||||
status: str
|
||||
url: str | None = None
|
||||
error: str | None = None
|
||||
|
||||
|
||||
class VideoJobOut(BaseModel):
|
||||
id: str
|
||||
kind: str = "slideshow_video"
|
||||
status: str
|
||||
total: int = 1
|
||||
completed: int = 0
|
||||
failed: int = 0
|
||||
cancel_requested: bool = False
|
||||
preset: str = "wb_ozon"
|
||||
source_asset_ids: list[str] = Field(default_factory=list)
|
||||
slide_seconds: float = 0.0
|
||||
duration_seconds: float | None = None
|
||||
width: int = 810
|
||||
height: int = 1080
|
||||
file_size_bytes: int | None = None
|
||||
created_at: datetime | None = None
|
||||
started_at: datetime | None = None
|
||||
completed_at: datetime | None = None
|
||||
result: VideoResultOut | None = None
|
||||
error: str | None = None
|
||||
Reference in New Issue
Block a user