from pydantic import BaseModel from typing import Optional, Dict, Any, List # ================ Google ================ class GoogleUserInfo(BaseModel): """Google 사용자 정보""" provider: str = "google" provider_id: str email: Optional[str] = None name: Optional[str] = None picture: Optional[str] = None raw_data: Dict[str, Any] = {} class GoogleTokenResponse(BaseModel): """Google OAuth 토큰 응답""" access_token: str refresh_token: Optional[str] = None expires_at: Optional[str] = None token_type: str user_info: GoogleUserInfo scopes: Optional[List[str]] = None class GoogleCallbackResponse(BaseModel): """Google OAuth 콜백 응답""" message: str temp_token_id: str return_url: Optional[str] = None user_info: GoogleUserInfo class GoogleLoginRequest(BaseModel): """Google 로그인 요청""" return_url: Optional[str] = None class GoogleHealthResponse(BaseModel): """Google OAuth 헬스체크 응답""" status: str provider: str = "google" message: str redis_health: Optional[Dict[str, Any]] = None