-- 更新 sys_log 表结构以支持新的日志功能
-- 作者: 王志维
-- 创建时间: 2026-04-14

-- 备份旧数据（可选）
-- CREATE TABLE sys_log_backup AS SELECT * FROM sys_log;

-- 删除旧表（如果存在）
DROP TABLE IF EXISTS `sys_log`;

-- 创建新表
CREATE TABLE `sys_log` (
  `log_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `trace_id` varchar(255) DEFAULT NULL COMMENT '链路ID',
  `description` varchar(255) DEFAULT NULL COMMENT '日志描述',
  `module` varchar(50) DEFAULT NULL COMMENT '所属模块',
  `request_url` varchar(512) DEFAULT NULL COMMENT '请求URL',
  `request_method` varchar(10) DEFAULT NULL COMMENT '请求方式',
  `request_headers` text COMMENT '请求头',
  `request_body` text COMMENT '请求体',
  `status_code` int(11) DEFAULT NULL COMMENT '状态码',
  `response_headers` text COMMENT '响应头',
  `response_body` mediumtext COMMENT '响应体',
  `time_taken` bigint(20) DEFAULT NULL COMMENT '耗时（ms）',
  `ip` varchar(100) DEFAULT NULL COMMENT 'IP',
  `address` varchar(255) DEFAULT NULL COMMENT 'IP归属地',
  `browser` varchar(100) DEFAULT NULL COMMENT '浏览器',
  `os` varchar(100) DEFAULT NULL COMMENT '操作系统',
  `status` tinyint(1) DEFAULT '1' COMMENT '状态（1：成功；2：失败）',
  `error_msg` text COMMENT '错误信息',
  `create_user` bigint(20) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `delete_flag` tinyint(1) DEFAULT '0' COMMENT '是否删除 ：0 未删除，1已删除',
  `create_by` varchar(50) DEFAULT NULL COMMENT '创建人',
  `update_by` varchar(50) DEFAULT NULL COMMENT '更新人',
  PRIMARY KEY (`log_id`) USING BTREE,
  KEY `idx_module` (`module`) USING BTREE COMMENT '模块查询优化',
  KEY `idx_ip` (`ip`) USING BTREE COMMENT 'IP查询优化',
  KEY `idx_create_time` (`create_time`) USING BTREE COMMENT '时间范围查询优化',
  KEY `idx_status` (`status`) USING BTREE COMMENT '状态查询优化'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='系统操作日志表';

-- 插入测试数据（可选）
-- INSERT INTO `sys_log` (`description`, `module`, `request_url`, `request_method`, `status_code`, `time_taken`, `ip`, `status`, `create_time`) 
-- VALUES ('用户登录', '登录认证', '/api/login/accountLogin', 'POST', 200, 150, '127.0.0.1', 1, NOW());
