from pydantic import BaseModel from typing import Optional from datetime import datetime # ===== 库存 ===== class InventoryBase(BaseModel): cInvCode: str supplier: Optional[str] = None casing_label_remark: Optional[str] = None batch: Optional[str] = None current_remaining: float = 0 storage_location: Optional[str] = None class InventoryCreate(InventoryBase): pass class InventoryUpdate(BaseModel): cInvCode: Optional[str] = None supplier: Optional[str] = None casing_label_remark: Optional[str] = None batch: Optional[str] = None current_remaining: Optional[float] = None storage_location: Optional[str] = None class InventoryResponse(InventoryBase): id: int created_at: Optional[datetime] = None updated_at: Optional[datetime] = None class Config: from_attributes = True # ===== 出入库 ===== class StockOperation(BaseModel): inventory_id: int type: str # "in" or "out" quantity: float remark: Optional[str] = None class TransactionLogResponse(BaseModel): id: int inventory_id: int cInvCode: str type: str quantity: float remark: Optional[str] = None created_at: Optional[datetime] = None class Config: from_attributes = True