/**
 * 认证相关类型定义
 */

// 登录请求（对齐 backend-single：手机号 + 短信验证码）
export interface LoginRequest {
  /** 手机号 */
  phone: string
  /** 短信验证码（开发期为固定 123456） */
  smsCode: string
  /** 记住我（前端本地使用，可选） */
  rememberMe?: boolean
}

// 注册请求
export interface RegisterRequest {
  /** 账号 */
  account: string
  /** 密码 */
  password: string
  /** 确认密码 */
  confirmPassword: string
  /** 用户名 */
  username: string
  /** 昵称 */
  nickname: string
  /** 邮箱 */
  email: string
  /** 手机号 */
  phone?: string
  /** 验证码 */
  captcha: string
  /** 验证码key */
  captchaKey: string
}

// 用户信息
export interface UserInfo {
  /** 用户ID */
  id: string
  /** 账号 */
  account: string
  /** 用户名 */
  username: string
  /** 昵称 */
  nickname: string
  /** 头像 */
  avatar?: string
  /** 邮箱 */
  email?: string
  /** 手机号 */
  phone?: string
  /** 生日 */
  birthDate?: string
  /** 所在地 */
  location?: string
  /** 个人简介 */
  bio?: string
  /** 会员等级 */
  memberLevel?: string
  /** 使用天数 */
  totalDays?: number
  /** 成长数据 */
  growthStats?: GrowthStats
  /** 状态 */
  status: number
  /** 是否已验证 */
  isVerified?: number
  /** 创建时间 */
  createTime: string
  /** 最后活跃时间 */
  lastActiveTime?: string
}

// 成长数据
export interface GrowthStats {
  /** 自我感知 */
  selfAwareness: number
  /** 情绪韧性 */
  emotionalResilience: number
  /** 行动力 */
  actionPower: number
  /** 共情力 */
  empathy: number
  /** 生活热度 */
  lifeEnthusiasm: number
}

// 认证响应
export interface AuthResponse {
  /** 访问令牌 */
  accessToken: string
  /** 刷新令牌 */
  refreshToken: string
  /** 用户信息 */
  userInfo: UserInfo
  /** 过期时间（秒） */
  expiresIn: number
  /** 登录时间 */
  loginTime: string
}

// 用户信息响应
export interface UserInfoResponse {
  /** 用户信息 */
  userInfo: UserInfo
}

// 验证码响应
export interface CaptchaResponse {
  /** 验证码key */
  captchaKey: string
  /** 验证码图片（base64） */
  captchaImage: string
  /** 过期时间（秒） */
  expiresIn: number
}

// 刷新Token请求
export interface RefreshTokenRequest {
  /** 刷新令牌 */
  refreshToken: string
}

// 修改密码请求
export interface ChangePasswordRequest {
  /** 旧密码 */
  oldPassword: string
  /** 新密码 */
  newPassword: string
  /** 确认新密码 */
  confirmPassword: string
}

// 重置密码请求
export interface ResetPasswordRequest {
  /** 手机号 */
  phone: string
  /** 新密码 */
  newPassword: string
  /** 验证码（固定 123456） */
  captcha: string
}

// 发送验证码请求
export interface SendCodeRequest {
  /** 手机号或邮箱 */
  target: string
  /** 验证码类型 */
  type: 'sms' | 'email'
  /** 场景 */
  scene: 'register' | 'login' | 'reset_password' | 'change_phone' | 'change_email'
}

// 验证验证码请求
export interface VerifyCodeRequest {
  /** 手机号或邮箱 */
  target: string
  /** 验证码 */
  code: string
  /** 场景 */
  scene: string
}

// 第三方登录请求
export interface OAuthLoginRequest {
  /** 平台类型 */
  platform: 'wechat' | 'qq' | 'weibo' | 'github'
  /** 授权码 */
  code: string
  /** 状态码 */
  state?: string
}

// 绑定第三方账号请求
export interface BindOAuthRequest {
  /** 平台类型 */
  platform: 'wechat' | 'qq' | 'weibo' | 'github'
  /** 授权码 */
  code: string
  /** 状态码 */
  state?: string
}

// 解绑第三方账号请求
export interface UnbindOAuthRequest {
  /** 平台类型 */
  platform: 'wechat' | 'qq' | 'weibo' | 'github'
}

// 第三方账号信息
export interface OAuthInfo {
  /** 平台类型 */
  platform: 'wechat' | 'qq' | 'weibo' | 'github'
  /** 平台用户ID */
  openId: string
  /** 平台昵称 */
  nickname: string
  /** 平台头像 */
  avatar: string
  /** 绑定时间 */
  bindTime: string
}

// 用户权限信息
export interface UserPermission {
  /** 角色列表 */
  roles: string[]
  /** 权限列表 */
  permissions: string[]
  /** 菜单列表 */
  menus: string[]
}

// 登录历史
export interface LoginHistory {
  /** ID */
  id: string
  /** 登录时间 */
  loginTime: string
  /** 登录IP */
  loginIp: string
  /** 登录地址 */
  loginAddress: string
  /** 设备信息 */
  deviceInfo: string
  /** 浏览器信息 */
  browserInfo: string
  /** 登录状态 */
  status: number
}

// 在线用户信息
export interface OnlineUser {
  /** 用户ID */
  userId: string
  /** 用户名 */
  username: string
  /** 昵称 */
  nickname: string
  /** 头像 */
  avatar?: string
  /** 登录时间 */
  loginTime: string
  /** 最后活动时间 */
  lastActiveTime: string
  /** 登录IP */
  loginIp: string
  /** 设备信息 */
  deviceInfo: string
  /** 浏览器信息 */
  browserInfo: string
}
