Files
ozon-seller-kit/server/schemas/product.py
T

103 lines
2.8 KiB
Python

"""商品 Pydantic 模型(列表 / 详情 / 部分更新)。"""
from __future__ import annotations
from datetime import datetime
from uuid import UUID
from pydantic import BaseModel, ConfigDict, Field
class ProductListItem(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: UUID
stage: str
name: str = ""
offer_id: str = ""
price: float | None = None
currency_code: str = "RUB"
source_platform: str | None = None
source_url: str | None = None
asset_counts: dict | None = None
ozon_product_id: int | None = None
created_at: datetime
updated_at: datetime
class ProductDetail(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: UUID
shop_id: UUID | None = None
stage: str
source_platform: str | None = None
source_item_id: str | None = None
source_url: str | None = None
offer_id: str = ""
ozon_product_id: int | None = None
name: str = ""
description: str = ""
description_category_id: int | None = None
type_id: int | None = None
price: float | None = None
old_price: float | None = None
currency_code: str = "RUB"
vat: str = "0"
depth: float | None = None
width: float | None = None
height: float | None = None
dimension_unit: str = "mm"
weight: float | None = None
weight_unit: str = "g"
barcode: str | None = None
images: list | None = None
primary_image: str | None = None
images360: list | None = None
color_image: str | None = None
attributes: list | None = None
complex_attributes: list | None = None
raw: dict | None = None
pricing: dict | None = None
copy: dict | None = None
fx_rate: float | None = None
asset_counts: dict | None = None
published_at: datetime | None = None
created_at: datetime
updated_at: datetime
class ProductUpdate(BaseModel):
"""编辑页 autosave 的部分更新。仅允许业务字段,id/时间由服务端维护。"""
shop_id: UUID | None = None
stage: str | None = None
offer_id: str | None = None
name: str | None = None
description: str | None = None
description_category_id: int | None = None
type_id: int | None = None
price: float | None = None
old_price: float | None = None
currency_code: str | None = None
vat: str | None = None
depth: float | None = None
width: float | None = None
height: float | None = None
dimension_unit: str | None = None
weight: float | None = None
weight_unit: str | None = None
barcode: str | None = None
images: list | None = None
primary_image: str | None = None
attributes: list | None = None
complex_attributes: list | None = None
raw: dict | None = None
pricing: dict | None = None
copy: dict | None = None
fx_rate: float | None = None
source_url: str | None = None