/**
 * Zulip账号关联模块常量定义
 *
 * 功能描述：
 * - 定义模块中使用的所有常量和配置值
 * - 提供统一的常量管理和维护
 * - 避免魔法数字和硬编码值
 * - 便于配置调整和环境适配
 *
 * 职责分离：
 * - 常量定义：集中管理所有模块常量
 * - 配置管理：提供可配置的默认值
 * - 类型安全：确保常量的类型正确性
 *
 * 最近修改：
 * - 2026-01-07: 代码规范优化 - 提取魔法数字为常量，提高代码质量 (修改者: moyin)
 * - 2026-01-07: 代码规范优化 - 注释规范检查和修正 (修改者: moyin)
 * - 2026-01-07: 代码规范优化 - 使用统一的常量文件，提高代码质量
 * - 2026-01-07: 功能新增 - 添加状态枚举和类型定义
 * - 2026-01-07: 初始创建 - 提取模块中的常量定义，统一管理
 *
 * @author angjustinl
 * @version 1.0.1
 * @since 2026-01-07
 * @lastModified 2026-01-07
 */

// 时间相关常量
export const MILLISECONDS_PER_HOUR = 60 * 60 * 1000;
export const MILLISECONDS_PER_DAY = 24 * MILLISECONDS_PER_HOUR;

// 验证相关常量
export const DEFAULT_VERIFICATION_MAX_AGE = 24 * MILLISECONDS_PER_HOUR; // 24小时验证间隔
export const DEFAULT_VERIFICATION_HOURS = 24;
export const DEFAULT_VERIFICATION_INTERVAL = DEFAULT_VERIFICATION_MAX_AGE;

// 重试相关常量
export const DEFAULT_MAX_RETRY_COUNT = 3; // 默认最大重试次数
export const HIGH_RETRY_THRESHOLD = 5; // 高重试次数阈值

// 查询限制常量
export const VERIFICATION_QUERY_LIMIT = 100; // 验证查询限制
export const ERROR_ACCOUNTS_QUERY_LIMIT = 50; // 错误账号查询限制
export const DEFAULT_ERROR_ACCOUNTS_LIMIT = 50; // 默认错误账号限制

// 业务规则常量
export const DEFAULT_MAX_AGE_DAYS = 7; // 默认最大年龄天数

// 长度限制常量
export const MAX_FULL_NAME_LENGTH = 100; // 用户全名最大长度
export const MAX_SHORT_NAME_LENGTH = 50; // 用户短名称最大长度
export const MIN_FULL_NAME_LENGTH = 2; // 用户全名最小长度

// 数据库配置常量
export const REQUIRED_DB_ENV_VARS = ['DB_HOST', 'DB_PORT', 'DB_USERNAME', 'DB_PASSWORD', 'DB_NAME'];

// 状态枚举
export const ACCOUNT_STATUS = {
  ACTIVE: 'active' as const,
  INACTIVE: 'inactive' as const,
  SUSPENDED: 'suspended' as const,
  ERROR: 'error' as const,
} as const;

export type AccountStatus = typeof ACCOUNT_STATUS[keyof typeof ACCOUNT_STATUS];