from pydantic import BaseModel, Field class CreateCategoryRequest(BaseModel): category_name: str category_code: str sort_no: int = 0 status: int = 1 remark: str | None = None class UpdateCategoryRequest(BaseModel): category_name: str category_code: str sort_no: int = 0 status: int = 1 remark: str | None = None class ProductSpecificationPayload(BaseModel): specification: str unit: str category_id: int | None = None cost_price: float = 0 sale_price: float = 0 status: int = 1 remark: str | None = None is_default: bool = False class CreateProductRequest(BaseModel): product_name: str category_id: int | None = None status: int = 1 remark: str | None = None specifications: list[ProductSpecificationPayload] = Field(default_factory=list) class UpdateProductRequest(BaseModel): product_name: str category_id: int | None = None status: int = 1 remark: str | None = None class UpdateProductSpecificationRequest(BaseModel): specification: str unit: str category_id: int | None = None cost_price: float = 0 sale_price: float = 0 status: int = 1 remark: str | None = None is_default: bool = False class UpdateProductCategoryRequest(BaseModel): category_name: str category_code: str sort_no: int = 0 status: int = 1 remark: str | None = None