from pydantic import BaseModel, Field # ---- 定价规则 ---- class CreatePricingRuleRequest(BaseModel): product_id: int product_name: str = "" pricing_type: str = "area" base_unit_price: float = Field(default=0, ge=0) pricing_unit: str = "㎡" pricing_inputs: str | None = None # JSON string formula_expr: str | None = None formula_constants: str | None = None # JSON string surcharge_json: str | None = None # JSON string formula_note: str | None = None tax_rate: float = Field(default=0, ge=0) tax_inclusive: int = 0 status: int = 1 class UpdatePricingRuleRequest(BaseModel): product_name: str | None = None pricing_type: str | None = None base_unit_price: float | None = None pricing_unit: str | None = None pricing_inputs: str | None = None formula_expr: str | None = None formula_constants: str | None = None surcharge_json: str | None = None formula_note: str | None = None tax_rate: float | None = None tax_inclusive: int | None = None status: int | None = None # ---- 供应商成本 ---- class CreateSupplierCostRequest(BaseModel): product_id: int supplier_id: int supplier_model: str | None = None our_model: str | None = None thickness: str | None = None weight_gsm: int | None = None base_fabric_weight: int | None = None cost_price: float = Field(ge=0) cost_unit: str = "㎡" is_primary: int = 0 remark: str | None = None status: int = 1 class UpdateSupplierCostRequest(BaseModel): supplier_id: int | None = None supplier_model: str | None = None our_model: str | None = None thickness: str | None = None weight_gsm: int | None = None base_fabric_weight: int | None = None cost_price: float | None = None cost_unit: str | None = None is_primary: int | None = None remark: str | None = None status: int | None = None # ---- 价格层级 ---- class CreatePriceTierRequest(BaseModel): product_id: int tier_code: str tier_name: str price: float = Field(ge=0) price_unit: str = "㎡" remark: str | None = None status: int = 1 class UpdatePriceTierRequest(BaseModel): tier_name: str | None = None price: float | None = None price_unit: str | None = None remark: str | None = None status: int | None = None # ---- 报价计算 ---- class QuotationCalculateRequest(BaseModel): product_id: int customer_id: int | None = None user_inputs: dict = Field(default_factory=dict) surcharge_selections: dict = Field(default_factory=dict) surcharge_inputs: dict = Field(default_factory=dict) include_tax: bool | None = None