import uuid from datetime import datetime from typing import Optional from common.enums import AuthProvider, PlaceCategory, PlaceStatus, SiteStatus, UserRole, UserStatus from common.models.gmodel import Res_PageProtocol, WebPacketProtocol class OpsSiteData(WebPacketProtocol): """전 계정 사이트 목록의 한 줄 — 사업장(place) + 사이트(site) + 소유자.""" place_id: uuid.UUID name: str category: PlaceCategory place_status: PlaceStatus created_at: Optional[datetime] = None site_id: Optional[uuid.UUID] = None status: Optional[SiteStatus] = None domain: Optional[str] = None published_at: Optional[datetime] = None thumbnail_url: Optional[str] = None needs_rebuild: bool = False owner_login_id: str owner_email: Optional[str] = None owner_name: Optional[str] = None class Res_OpsSites(Res_PageProtocol): sites: list[OpsSiteData] = [] class OpsUserData(WebPacketProtocol): """전 계정 목록의 한 줄.""" user_id: uuid.UUID login_id: str name: Optional[str] = None email: Optional[str] = None contact_number: Optional[str] = None role: UserRole status: UserStatus provider: AuthProvider created_at: Optional[datetime] = None last_accessed_at: Optional[datetime] = None place_count: int = 0 class Res_OpsUsers(Res_PageProtocol): users: list[OpsUserData] = []