from pydantic import Field from common.models.gmodel import Res_WebPacketProtocol, WebPacketProtocol # 라우터 폴더마다 protocol.py 를 두고 Req_/Res_ 를 정의한다 (protocol 규약). class AuthProtocol(WebPacketProtocol): pass class Req_Login(AuthProtocol): id: str = Field("", description="로그인 ID") pw: str = Field("", description="비밀번호(평문, 서버에서 bcrypt 해시·검증)") class Res_Login(Res_WebPacketProtocol): su_id: str = Field("", description="유저 식별자(uuid)") name: str = Field("", description="유저 개인 이름") supplier_id: str = Field("", description="소속 공급사 uuid(partner.suppliers)") supplier_name: str = Field("", description="공급사명") role: int = Field(0, description="권한 코드 1=user, 2=manager (UserRole)") access_token: str = Field("", description="액세스 토큰(JWT)") refresh_token: str = Field("", description="리프레시 토큰(JWT)") class Req_CreateAccount(AuthProtocol): supplier_id: str = Field("", max_length=36, description="소속 공급사 uuid(partner.suppliers.supplier_id)") id: str = Field("", max_length=20, description="로그인 ID") pw: str = Field("", description="비밀번호(평문, 서버에서 bcrypt 해시)") name: str = Field("", max_length=50, description="이름") email: str = Field("", max_length=255, description="이메일") contact_number: str = Field("", max_length=20, description="연락처") role: int = Field(1, description="권한 코드 1=user, 2=manager (UserRole)") class Res_CreateAccount(Res_WebPacketProtocol): su_id: str = Field("", description="생성된 유저 식별자(uuid)") class Res_RefreshToken(Res_WebPacketProtocol): access_token: str = Field("", description="재발급된 액세스 토큰(JWT)") class Res_Me(Res_WebPacketProtocol): su_id: str = Field("", description="유저 식별자(uuid)") id: str = Field("", description="로그인 ID") name: str = Field("", description="유저 개인 이름") supplier_id: str = Field("", description="소속 공급사 uuid") supplier_name: str = Field("", description="공급사명") role: int = Field(0, description="권한 코드 1=user, 2=manager (UserRole)") class Res_Logout(Res_WebPacketProtocol): pass class Res_PopupStatus(Res_WebPacketProtocol): service_info: bool = Field(False, description="협상 유의사항(서비스 안내) 팝업 '안내 보지 않기' 여부") class Req_HidePopup(AuthProtocol): popup_type: str = Field("", description="숨길 팝업 종류: service_info") class Res_HidePopup(Res_WebPacketProtocol): pass