import Foundation // ===== 请求 ===== struct SmsSendRequest: Codable { let phone: String } struct SmsLoginRequest: Codable { let phone: String let code: String } struct RefreshRequest: Codable { let refreshToken: String // → refresh_token } struct ProfileUpdateRequest: Codable { let nickname: String } // ===== 响应 ===== struct UserDTO: Codable, Identifiable, Hashable { let id: Int let phone: String var nickname: String? var avatarUrl: String? let registerChannel: String let status: String let createdAt: String let lastLoginAt: String } struct TokenPairDTO: Codable { let accessToken: String let refreshToken: String let tokenType: String let expiresIn: Int let refreshExpiresIn: Int } struct TokenWithUserDTO: Codable { let accessToken: String let refreshToken: String let tokenType: String let expiresIn: Int let refreshExpiresIn: Int let user: UserDTO } struct SmsSendResponse: Codable { let sent: Bool let mock: Bool let cooldownSec: Int } struct LogoutResponse: Codable { let ok: Bool } struct FeedbackResultDTO: Codable { let id: Int let status: String let createdAt: String? }