- POST /v1/negotiation/sessions/{session_id}/reject (Req_Reject/Res_Reject)
- 참여와 공통 검증(인증/소유/세션상태/견적마감/마감시간)을
_load_actionable_session 헬퍼로 추출해 participate·reject 재사용
- 거부 불가 상태: 협상완료/미참여/협상거부 → NEGO_NOT_PARTICIPABLE
- 성공 시 세션을 협상거부(5)로 전이하고 reject_reason 저장(최대 255자)
- 빈 사유는 INVALID_REQUEST_DATA
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
34 lines
1.0 KiB
Python
34 lines
1.0 KiB
Python
from common.models.gmodel import Res_WebPacketProtocol, WebPacketProtocol
|
|
|
|
|
|
# 협상 세션 목록 행. status/qt_type 은 정수 코드로 내려가고 라벨 매핑은 프론트가 한다.
|
|
class ListItem(WebPacketProtocol):
|
|
session_id: str = ""
|
|
session_status: int = 0 # SessionStatus 코드
|
|
qt_type: int = 0 # QtType 코드 (1=재협상, 2=재견적)
|
|
qt_number: str = ""
|
|
qt_end_time: str = "" # ISO 8601 (마감 시각)
|
|
item_code: str = ""
|
|
item_name: str = ""
|
|
model_name: str = ""
|
|
maker_name: str = ""
|
|
|
|
|
|
class Res_SessionList(Res_WebPacketProtocol):
|
|
items: list[ListItem] = []
|
|
total: int = 0
|
|
page: int = 0
|
|
page_size: int = 0
|
|
|
|
|
|
class Res_Participate(Res_WebPacketProtocol):
|
|
session_id: str = "" # 참여 성공한 세션 (채팅 진입용)
|
|
|
|
|
|
class Req_Reject(WebPacketProtocol):
|
|
reject_reason: str = "" # 거부 사유 (단종/품절 프리셋 라벨 또는 기타 직접 입력)
|
|
|
|
|
|
class Res_Reject(Res_WebPacketProtocol):
|
|
session_id: str = "" # 거부 처리된 세션
|