-- Admin模块 - 管理员日志表
-- 用于记录管理员的所有操作行为

CREATE TABLE `kku_admin_logs` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `admin_id` int(11) DEFAULT NULL COMMENT '管理员ID',
  `admin_name` varchar(100) NOT NULL DEFAULT '' COMMENT '管理员名称',
  `action_type` varchar(50) NOT NULL DEFAULT '' COMMENT '操作类型',
  `description` varchar(500) NOT NULL DEFAULT '' COMMENT '操作描述',
  `data` text COMMENT '操作数据(JSON格式)',
  `ip_address` varchar(45) NOT NULL DEFAULT '' COMMENT 'IP地址',
  `user_agent` text COMMENT '用户代理',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  KEY `idx_admin_id` (`admin_id`),
  KEY `idx_action_type` (`action_type`),
  KEY `idx_ip_address` (`ip_address`),
  KEY `idx_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='管理员操作日志表';

-- Admin模块 - 管理员设置表
-- 用于存储管理员的个人设置和系统配置

CREATE TABLE `kku_admin_settings` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `admin_id` int(11) DEFAULT NULL COMMENT '管理员ID，NULL表示系统全局设置',
  `setting_key` varchar(100) NOT NULL DEFAULT '' COMMENT '设置键名',
  `setting_value` text COMMENT '设置值',
  `setting_type` varchar(20) NOT NULL DEFAULT 'string' COMMENT '设置类型(string,int,bool,json)',
  `description` varchar(255) NOT NULL DEFAULT '' COMMENT '设置描述',
  `is_system` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否为系统设置(1:是 0:否)',
  `is_encrypted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否加密存储(1:是 0:否)',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_admin_key` (`admin_id`, `setting_key`),
  KEY `idx_setting_key` (`setting_key`),
  KEY `idx_is_system` (`is_system`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='管理员设置表';

-- 插入一些默认的系统设置
INSERT INTO `kku_admin_settings` (`admin_id`, `setting_key`, `setting_value`, `setting_type`, `description`, `is_system`) VALUES
(NULL, 'dashboard_refresh_interval', '30', 'int', '仪表板刷新间隔(秒)', 1),
(NULL, 'log_retention_days', '30', 'int', '日志保留天数', 1),
(NULL, 'cache_default_ttl', '3600', 'int', '缓存默认TTL(秒)', 1),
(NULL, 'maintenance_mode', '0', 'bool', '维护模式开关', 1),
(NULL, 'backup_retention_days', '7', 'int', '备份保留天数', 1),
(NULL, 'session_timeout', '7200', 'int', '会话超时时间(秒)', 1),
(NULL, 'max_login_attempts', '5', 'int', '最大登录尝试次数', 1),
(NULL, 'lockout_duration', '900', 'int', '锁定持续时间(秒)', 1);

-- Admin模块 - 系统监控指标表
-- 用于存储系统性能监控数据

CREATE TABLE `kku_admin_metrics` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `metric_type` varchar(50) NOT NULL DEFAULT '' COMMENT '指标类型(cpu,memory,disk,database等)',
  `metric_name` varchar(100) NOT NULL DEFAULT '' COMMENT '指标名称',
  `metric_value` decimal(10,4) NOT NULL DEFAULT 0.0000 COMMENT '指标值',
  `metric_unit` varchar(20) NOT NULL DEFAULT '' COMMENT '指标单位',
  `server_name` varchar(100) NOT NULL DEFAULT '' COMMENT '服务器名称',
  `collected_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '采集时间',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`),
  KEY `idx_metric_type` (`metric_type`),
  KEY `idx_metric_name` (`metric_name`),
  KEY `idx_collected_at` (`collected_at`),
  KEY `idx_server_name` (`server_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统监控指标表';

-- Admin模块 - 系统备份记录表
-- 用于记录系统备份操作

CREATE TABLE `kku_admin_backups` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `backup_name` varchar(255) NOT NULL DEFAULT '' COMMENT '备份名称',
  `backup_type` varchar(50) NOT NULL DEFAULT '' COMMENT '备份类型(full,database,files,config)',
  `backup_path` varchar(500) NOT NULL DEFAULT '' COMMENT '备份文件路径',
  `backup_size` bigint(20) NOT NULL DEFAULT 0 COMMENT '备份文件大小(字节)',
  `backup_status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT '备份状态(pending,running,completed,failed)',
  `admin_id` int(11) DEFAULT NULL COMMENT '操作管理员ID',
  `admin_name` varchar(100) NOT NULL DEFAULT '' COMMENT '操作管理员名称',
  `started_at` timestamp NULL DEFAULT NULL COMMENT '开始时间',
  `completed_at` timestamp NULL DEFAULT NULL COMMENT '完成时间',
  `error_message` text COMMENT '错误信息',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  KEY `idx_backup_type` (`backup_type`),
  KEY `idx_backup_status` (`backup_status`),
  KEY `idx_admin_id` (`admin_id`),
  KEY `idx_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统备份记录表';

-- Admin模块 - 系统通知表
-- 用于存储系统通知和警报

CREATE TABLE `kku_admin_notifications` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `notification_type` varchar(50) NOT NULL DEFAULT '' COMMENT '通知类型(alert,warning,info,success)',
  `title` varchar(255) NOT NULL DEFAULT '' COMMENT '通知标题',
  `message` text NOT NULL COMMENT '通知内容',
  `data` text COMMENT '附加数据(JSON格式)',
  `admin_id` int(11) DEFAULT NULL COMMENT '目标管理员ID，NULL表示全体管理员',
  `is_read` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否已读(1:是 0:否)',
  `is_system` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否为系统通知(1:是 0:否)',
  `priority` tinyint(4) NOT NULL DEFAULT 1 COMMENT '优先级(1:低 2:中 3:高 4:紧急)',
  `expires_at` timestamp NULL DEFAULT NULL COMMENT '过期时间',
  `read_at` timestamp NULL DEFAULT NULL COMMENT '阅读时间',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  KEY `idx_notification_type` (`notification_type`),
  KEY `idx_admin_id` (`admin_id`),
  KEY `idx_is_read` (`is_read`),
  KEY `idx_is_system` (`is_system`),
  KEY `idx_priority` (`priority`),
  KEY `idx_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统通知表';
