o2o-negosium-original/agent/common/models/gmodel.py

43 lines
1.3 KiB
Python

from typing import Optional
from pydantic import BaseModel, Field
from common.enums import ErrorType
class StructModel:
"""프로토콜/구조체 식별용 마커 클래스. (backend 와 동일 규약)"""
pass
class ErrorInfo(BaseModel, StructModel):
"""모든 응답에 공통으로 실리는 결과 정보. result.success / code / desc 로 내려간다."""
success: Optional[bool] = True
code: Optional[int] = ErrorType.SUCCESS.value
desc: Optional[str] = ErrorType.SUCCESS.name
def SetResult(self, enum: ErrorType):
if enum is not None:
self.success = ErrorType.SUCCESS.value == enum.value
self.code = enum.value
self.desc = enum.name
# ---- Protocol 규약 (backend/common/models/gmodel.py 와 동일) ----------------
# 모든 통신 패킷은 WebPacketProtocol 을 상속한다.
# 요청 : Req_xxx (WebPacketProtocol) / 응답 : Res_xxx (Res_WebPacketProtocol, 항상 result)
class WebPacketProtocol(BaseModel, StructModel):
pass
class Req_WebPacketProtocol(WebPacketProtocol):
pass
class Res_WebPacketProtocol(WebPacketProtocol):
# default_factory 로 인스턴스마다 새 ErrorInfo 를 생성한다 (mutable default 공유 방지).
result: ErrorInfo = Field(default_factory=ErrorInfo)
msg: Optional[str] = None