package dto // RequestOTPRequest بدنه‌ی درخواست ارسال کد تایید type RequestOTPRequest struct { Phone string `json:"phone" binding:"required"` } // VerifyOTPRequest بدنه‌ی درخواست تایید کد type VerifyOTPRequest struct { Phone string `json:"phone" binding:"required"` OTP string `json:"otp" binding:"required"` } // RefreshTokenRequest بدنه‌ی درخواست رفرش توکن type RefreshTokenRequest struct { RefreshToken string `json:"refresh_token" binding:"required"` } // TokenPair جفت توکن access/refresh type TokenPair struct { AccessToken string `json:"access_token"` RefreshToken string `json:"refresh_token"` } // AuthResponse پاسخ استاندارد بعد از ورود موفق type AuthResponse struct { Tokens TokenPair `json:"tokens"` User UserProfile `json:"user"` IsNewUser bool `json:"is_new_user"` OnboardingDone bool `json:"onboarding_done"` } // UserProfile نمایش خلاصه‌ی پروفایل کاربر (بدون داده‌های حساس) type UserProfile struct { ID uint `json:"id"` Phone string `json:"phone"` FirstName string `json:"first_name,omitempty"` Gender *string `json:"gender,omitempty"` BirthDate *string `json:"birth_date,omitempty"` HeightCM *int `json:"height_cm,omitempty"` WeightKG *int `json:"weight_kg,omitempty"` CurrentStep int `json:"current_step"` IsOnboarded bool `json:"is_onboarded"` ApprovalStatus string `json:"approval_status"` RejectionReason *string `json:"rejection_reason,omitempty"` IsAdmin bool `json:"is_admin"` }