o2o-negosium-original/backend/router/v1/negotiation/protocol.py
민헌 0ac37625fc Merge branch 'main' into refactor/backend
main의 negodata 기능 개발분(대시보드·회원관리/OWNER·알림함·목표가/앵커링·
견적 UX·백엔드 테스트 스위트 등 21커밋)을 backend 리팩토링 브랜치로 통합.

- 충돌: backend/router/v1/negotiation/protocol.py 1건 해결.
  refactor의 Field(description=...) 형식 유지 + main의 qt_type enum 설명
  (3=신규협상, 4=신규견적) 반영.
- 나머지(models.py, enums.py 등)는 자동 병합.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 09:01:48 +09:00

36 lines
1.3 KiB
Python

from pydantic import Field
from common.models.gmodel import Res_WebPacketProtocol, WebPacketProtocol
# 협상 세션 목록 행. status/qt_type 은 정수 코드로 내려가고 라벨 매핑은 프론트가 한다.
class ListItem(WebPacketProtocol):
session_id: str = ""
session_status: int = Field(0, description="세션 상태 코드 (SessionStatus: 1=생성 2=진행중 3=완료 4=미참여 5=거부)")
qt_type: int = Field(0, description="견적 종류 코드 (1=재협상, 2=재견적, 3=신규협상, 4=신규견적)")
qt_number: str = ""
qt_end_time: str = Field("", description="견적 마감 시각 (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 = Field("", description="참여 성공한 세션 uuid (채팅 진입용)")
class Req_Reject(WebPacketProtocol):
reject_reason: str = Field("", max_length=255, description="거부 사유 (단종/품절 프리셋 라벨 또는 직접 입력)")
class Res_Reject(Res_WebPacketProtocol):
session_id: str = Field("", description="거부 처리된 세션 uuid")