import uuid from datetime import datetime from typing import Optional from pydantic import ConfigDict from common.models.gmodel import Res_WebPacketProtocol, WebPacketProtocol class SupplierItemProtocol(WebPacketProtocol): pass class Req_CreateSupplierItem(SupplierItemProtocol): supplier_id: uuid.UUID item_id: uuid.UUID supply_type: int = 0 class Req_UpdateSupplyType(SupplierItemProtocol): supply_type: int class Req_BulkMapByNames(SupplierItemProtocol): names: list[str] = [] class SupplierItemData(WebPacketProtocol): model_config = ConfigDict(from_attributes=True) supplier_item_id: uuid.UUID item_id: uuid.UUID item_name: str item_code: Optional[str] = None supply_type: int item_category: Optional[str] = None item_manufacturer: Optional[str] = None created_at: Optional[datetime] = None updated_at: Optional[datetime] = None class ItemSupplyType(WebPacketProtocol): supplier_id: uuid.UUID supply_type: int supplier_name: Optional[str] = None supplier_item_id: Optional[uuid.UUID] = None # 상품측 매핑 편집(수정/삭제)용 class Res_SupplierItem(Res_WebPacketProtocol): supplier_item: Optional[SupplierItemData] = None class Res_SupplierItemList(Res_WebPacketProtocol): supplier_items: list[SupplierItemData] = [] class Res_ItemSupplyTypeList(Res_WebPacketProtocol): suppliers: list[ItemSupplyType] = [] class Res_BulkMapByNames(Res_WebPacketProtocol): created_count: int = 0 skipped_count: int = 0 # 이미 매핑돼 있어 건너뛴 상품 수 unmatched: list[str] = [] # 회사 상품 목록에 이름이 없어 매핑 못한 입력명들