o2o-negosium-original/negodata/backend/router/v1/supplier_item/protocol.py

65 lines
1.7 KiB
Python

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] = [] # 회사 상품 목록에 이름이 없어 매핑 못한 입력명들