/**
 * 用户信息接口
 * 定义用户的基本信息和配置
 */
export interface IUserInfo {
  /** 访问令牌 */
  access_token: string;
  /** 用户头像，可选字段 */
  avatar?: any;
  /** 颜色主题方案 */
  color_schema: string;
  /** 创建日期（字符串格式） */
  create_date: string;
  /** 创建时间戳 */
  create_time: number;
  /** 用户邮箱 */
  email: string;
  /** 用户唯一标识符 */
  id: string;
  /** 是否激活状态 */
  is_active: string;
  /** 是否匿名用户 */
  is_anonymous: string;
  /** 是否已认证 */
  is_authenticated: string;
  /** 是否超级用户 */
  is_superuser: boolean;
  /** 用户语言设置 */
  language: string;
  /** 最后登录时间 */
  last_login_time: string;
  /** 登录渠道 */
  login_channel: string;
  /** 用户昵称 */
  nickname: string;
  /** 用户密码 */
  password: string;
  /** 用户状态 */
  status: string;
  /** 时区设置 */
  timezone: string;
  /** 更新日期（字符串格式） */
  update_date: string;
  /** 更新时间戳 */
  update_time: number;
}

/**
 * 任务执行器耗时统计类型
 * 记录各个任务执行器的耗时数据
 */
export type TaskExecutorElapsed = Record<string, number[]>;

/**
 * 任务执行器心跳项接口
 * 定义任务执行器的运行状态信息
 */
export interface TaskExecutorHeartbeatItem {
  /** 启动时间 */
  boot_at: string;
  /** 当前任务，通常为null */
  current: null;
  /** 已完成任务数 */
  done: number;
  /** 失败任务数 */
  failed: number;
  /** 延迟时间 */
  lag: number;
  /** 执行器名称 */
  name: string;
  /** 当前时间 */
  now: string;
  /** 待处理任务数 */
  pending: number;
}

/**
 * 系统状态接口
 * 定义系统各个组件的运行状态
 */
export interface ISystemStatus {
  /** Elasticsearch状态 */
  es: Es;
  /** 存储系统状态 */
  storage: Storage;
  /** 数据库状态 */
  database: Database;
  /** Redis状态 */
  redis: Redis;
  /** docker引擎状态 */
  doc_engine: DockerEngine;
  /** 任务执行器心跳信息 */
  task_executor_heartbeat: Record<string, TaskExecutorHeartbeatItem[]>;
}

/**
 * Redis状态接口
 * 定义Redis服务的状态信息
 */
interface Redis {
  /** 服务状态 */
  status: string;
  /** 响应耗时 */
  elapsed: number;
  /** 错误信息 */
  error: string;
  /** 待处理任务数 */
  pending: number;
}

/**
 * 存储系统状态接口
 * 定义存储服务的状态信息
 */
export interface Storage {
  /** 服务状态 */
  status: string;
  /** 响应耗时 */
  elapsed: number;
  /** 错误信息 */
  error: string;
  /** storage */
  storage: string;
}

/**
 * 数据库状态接口
 * 定义数据库服务的状态信息
 */
export interface Database {
  /** 服务状态 */
  status: string;
  /** 响应耗时 */
  elapsed: number;
  /** 错误信息 */
  error: string;
  /** 数据库名称 */
  database: string;
}

/**
 * Elasticsearch状态接口
 * 定义Elasticsearch服务的状态信息
 */
interface Es {
  /** 服务状态 */
  status: string;
  /** 响应耗时 */
  elapsed: number;
  /** 错误信息 */
  error: string;
  /** 节点数量 */
  number_of_nodes: number;
  /** 活跃分片数 */
  active_shards: number;
}

interface DockerEngine {
  /** 活跃主分片数 */
  active_primary_shards: number;
  /** 活跃分片数 */
  active_shards: number;
  /** 活跃分片数占比 */
  active_shards_percent_as_number: number;
  /** 集群名称 */
  cluster_name: string;
  /** 延迟未分配分片数 */
  delayed_unassigned_shards: number;
  /** 初始化分片数 */
  initializing_shards: number;
  /** 数据节点数量 */
  number_of_data_nodes: number;
  /** 正在处理的获取请求数 */
  number_of_in_flight_fetch: number;
  /** 节点数量 */
  number_of_nodes: number;
  /** 待处理任务数 */
  number_of_pending_tasks: number;
  /** 迁移分片数 */
  relocating_shards: number;
  /** 服务状态 */
  status: string;
  /** 任务最大等待时间（毫秒） */
  task_max_waiting_in_queue_millis: number;
  /** 是否超时 */
  timed_out: boolean;
  /** 类型 */
  type: string;
  /** 未分配分片数 */
  unassigned_shards: number;
    /** 响应耗时 */
  elapsed: number;
}

/**
 * 租户用户接口
 * 定义租户下用户的信息
 */
export interface ITenantUser {
  /** 用户ID */
  id: string;
  /** 用户头像 */
  avatar: string;
  /** 时间差（秒） */
  delta_seconds: number;
  /** 用户邮箱 */
  email: string;
  /** 是否激活状态 */
  is_active: string;
  /** 是否匿名用户 */
  is_anonymous: string;
  /** 是否已认证 */
  is_authenticated: string;
  /** 是否超级用户 */
  is_superuser: boolean;
  /** 用户昵称 */
  nickname: string;
  /** 用户角色 */
  role: string;
  /** 用户状态 */
  status: string;
  /** 更新日期 */
  update_date: string;
  /** 关联的用户ID */
  user_id: string;
}

/**
 * 租户接口
 * 定义租户的基本信息
 */
export interface ITenant {
  /** 租户头像 */
  avatar: string;
  /** 时间差（秒） */
  delta_seconds: number;
  /** 租户邮箱 */
  email: string;
  /** 租户昵称 */
  nickname: string;
  /** 租户角色 */
  role: string;
  /** 租户ID */
  tenant_id: string;
  /** 更新日期 */
  update_date: string;
}
