from pydantic import BaseModel, Field class OrderListQuery(BaseModel): order_status: str | None = None customer_name: str | None = None customer_mobile: str | None = None salesman_id: int | None = None factory_id: int | None = None order_source: str | None = None start_time: str | None = None end_time: str | None = None page_no: int = 1 page_size: int = 20 class OrderItemPayload(BaseModel): product_id: int | None = None product_name: str specification: str unit: str quantity: float = Field(gt=0) sale_price: float = Field(ge=0) cost_price: float = Field(ge=0) rebate_amount: float = Field(default=0, ge=0) freight_amount: float = Field(default=0, ge=0) tax_amount: float = Field(default=0, ge=0) other_fee_amount: float = Field(default=0, ge=0) remark: str | None = None class CreateOrderRequest(BaseModel): customer_name: str customer_mobile: str customer_address: str | None = None order_source: str | None = None delivery_type: str | None = None factory_id: int | None = None commission_amount: float = Field(default=0, ge=0) rebate_total: float = Field(default=0, ge=0) freight_total: float = Field(default=0, ge=0) tax_total: float = Field(default=0, ge=0) other_fee_total: float = Field(default=0, ge=0) remark: str | None = None items: list[OrderItemPayload] = Field(default_factory=list) class CancelOrderRequest(BaseModel): cancel_reason: str cancel_opinion: str | None = None class ApproveOrderRequest(BaseModel): approve_result: str approve_opinion: str | None = None class SupplierTextRequest(BaseModel): supplier_id: int class ConfirmSupplierTextRequest(BaseModel): supplier_id: int text_content: str remark: str | None = None