57 lines
1.8 KiB
Python
57 lines
1.8 KiB
Python
from typing import List, Optional
|
||
|
||
from pydantic import Field
|
||
|
||
from common.models.gmodel import Res_WebPacketProtocol, WebPacketProtocol
|
||
|
||
|
||
class RenegotiationProtocol(WebPacketProtocol):
|
||
pass
|
||
|
||
|
||
class RenegotiationData(RenegotiationProtocol):
|
||
session_id: str = ""
|
||
quotation_id: str = ""
|
||
qt_number: str = ""
|
||
qt_round: int = 0
|
||
qt_name: str = ""
|
||
item_id: str = ""
|
||
item_name: str = ""
|
||
supplier_id: str = ""
|
||
supplier_name: str = ""
|
||
owner_name: str = "" # 견적 담당자(작성자) 이름 — 누구 견적인지 리스트 표시용
|
||
status: int = 0
|
||
reason: str = ""
|
||
desired_price: Optional[int] = None
|
||
requested_at: str = ""
|
||
decided_at: Optional[str] = None
|
||
decided_by_name: Optional[str] = None
|
||
memo: Optional[str] = None
|
||
next_quotation_id: Optional[str] = None
|
||
close_reason: Optional[int] = None
|
||
target_price: Optional[int] = None
|
||
bid_price: Optional[int] = None
|
||
can_act: bool = True # 조회자가 이 요청을 승인/반려할 수 있는지(견적 소유자∪OWNER). 리스트는 전체가 보이되 처리는 이걸로 게이팅
|
||
|
||
|
||
class Res_RenegotiationList(Res_WebPacketProtocol):
|
||
requests: List[RenegotiationData] = []
|
||
total: int = 0
|
||
page: int = 0
|
||
size: int = 0
|
||
|
||
|
||
class Req_ApproveRenegotiation(RenegotiationProtocol):
|
||
supplier_ids: List[str] = Field(default_factory=list, description="다음 라운드에 함께 넣을 공급사. 비우면 요청자만")
|
||
memo: str = Field("", max_length=255, description="승인 메모")
|
||
|
||
|
||
class Req_RejectRenegotiation(RenegotiationProtocol):
|
||
memo: str = Field("", max_length=255, description="반려 사유 — 공급사에게 그대로 노출된다")
|
||
|
||
|
||
class Res_RenegotiationDecision(Res_WebPacketProtocol):
|
||
session_id: str = ""
|
||
status: int = 0
|
||
next_quotation_id: Optional[str] = None
|