"""Pydantic schemas - 分类参数关联""" from pydantic import BaseModel, Field, ConfigDict from typing import Optional, List from datetime import datetime class CategoryParameterBase(BaseModel): """分类参数关联基础字段""" model_config = ConfigDict(populate_by_name=True) category_id: str = Field(..., description="分类ID", alias="categoryId") parameter_id: str = Field(..., description="参数ID", alias="parameterId") is_required: int = Field(default=0, description="该分类下是否必填:0-否, 1-是", alias="isRequired") default_value: Optional[str] = Field(None, max_length=500, description="默认值", alias="defaultValue") sort_order: int = Field(default=0, description="排序", alias="sortOrder") class CategoryParameterItem(BaseModel): """批量更新中的单个参数项(不包含categoryId)""" model_config = ConfigDict(populate_by_name=True) parameter_id: str = Field(..., description="参数ID", alias="parameterId") is_required: int = Field(default=0, description="该分类下是否必填:0-否, 1-是", alias="isRequired") default_value: Optional[str] = Field(None, max_length=500, description="默认值", alias="defaultValue") sort_order: int = Field(default=0, description="排序", alias="sortOrder") class CategoryParameterCreate(CategoryParameterBase): """创建分类参数关联请求""" pass class CategoryParameterUpdate(BaseModel): """更新分类参数关联请求""" model_config = ConfigDict(populate_by_name=True) is_required: Optional[int] = Field(None, description="是否必填", alias="isRequired") default_value: Optional[str] = Field(None, max_length=500, description="默认值", alias="defaultValue") sort_order: Optional[int] = Field(None, description="排序", alias="sortOrder") class CategoryParameterBatchUpdate(BaseModel): """批量更新分类参数关联请求""" model_config = ConfigDict(populate_by_name=True) items: List[CategoryParameterItem] = Field(..., description="参数关联列表") class CategoryParameterResponse(CategoryParameterBase): """分类参数关联响应""" 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 CategoryParameterWithDetailResponse(BaseModel): """带参数详情的分类参数关联响应""" id: str category_id: str parameter_id: str parameter_name: str parameter_code: str param_type: str options: Optional[str] = None placeholder: Optional[str] = None is_required: int default_value: Optional[str] = None sort_order: int class Config: from_attributes = True class CategoryParameterListResponse(BaseModel): """分类参数关联列表响应""" list: List[CategoryParameterWithDetailResponse] total: int