Refine seller store implementation

This commit is contained in:
R524809
2026-08-31 14:37:28 +08:00
parent 957289f717
commit 2a667b4f3b
27 changed files with 1650 additions and 624 deletions
+56
View File
@@ -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