"""Pydantic schemas - 商品参数模板""" from pydantic import BaseModel, Field, ConfigDict from typing import Optional, List from datetime import datetime class ProductParameterBase(BaseModel): """商品参数基础字段""" model_config = ConfigDict(populate_by_name=True) name: str = Field(..., max_length=100, description="参数名称", alias="name") code: str = Field(..., max_length=50, description="参数编码", alias="code") param_type: str = Field(default="text", description="参数类型:text-文本输入, select-单选下拉, multi_select-多选", alias="paramType") options: Optional[str] = Field(None, description="可选值列表,JSON数组格式", alias="options") placeholder: Optional[str] = Field(None, max_length=100, description="输入提示文字", alias="placeholder") is_required: int = Field(default=0, description="是否必填:0-否, 1-是", alias="isRequired") is_active: int = Field(default=1, description="是否启用:0-禁用, 1-启用", alias="isActive") sort_order: int = Field(default=0, description="排序", alias="sortOrder") remark: Optional[str] = Field(None, max_length=500, description="备注说明", alias="remark") class ProductParameterCreate(ProductParameterBase): """创建商品参数请求""" pass class ProductParameterUpdate(BaseModel): """更新商品参数请求""" model_config = ConfigDict(populate_by_name=True) name: Optional[str] = Field(None, max_length=100, description="参数名称", alias="name") code: Optional[str] = Field(None, max_length=50, description="参数编码", alias="code") param_type: Optional[str] = Field(None, description="参数类型", alias="paramType") options: Optional[str] = Field(None, description="可选值列表", alias="options") placeholder: Optional[str] = Field(None, max_length=100, description="输入提示文字", alias="placeholder") is_required: Optional[int] = Field(None, description="是否必填", alias="isRequired") is_active: Optional[int] = Field(None, description="是否启用", alias="isActive") sort_order: Optional[int] = Field(None, description="排序", alias="sortOrder") remark: Optional[str] = Field(None, max_length=500, description="备注说明", alias="remark") class ProductParameterResponse(ProductParameterBase): """商品参数响应""" id: str create_at: datetime create_by: Optional[str] = None create_name: Optional[str] = None update_at: Optional[datetime] = None class Config: from_attributes = True class ProductParameterListResponse(BaseModel): """商品参数列表响应""" list: List[ProductParameterResponse] total: int page: int pageSize: int class ProductParameterSimpleResponse(BaseModel): """商品参数简洁响应(用于下拉选择)""" id: str name: str code: str param_type: str options: Optional[str] = None class Config: from_attributes = True