-- =========================================
-- 错误日志模块 (error-log.sql)
-- 用于收集、查看和解决系统错误
-- =========================================

-- 错误日志表
DROP TABLE IF EXISTS sys_error_log;
CREATE TABLE sys_error_log (
  error_id        BIGINT(20)    NOT NULL AUTO_INCREMENT  COMMENT '错误ID',
  error_code      VARCHAR(50)   DEFAULT NULL             COMMENT '错误代码',
  error_type      VARCHAR(50)   DEFAULT 'SYSTEM'         COMMENT '错误类型: SYSTEM/BUSINESS/API/SQL/AUTH',
  error_level     VARCHAR(20)   DEFAULT 'ERROR'          COMMENT '错误级别: ERROR/WARN/FATAL',
  error_message   TEXT          DEFAULT NULL             COMMENT '错误消息',
  error_detail    TEXT          DEFAULT NULL             COMMENT '错误详情(堆栈信息)',
  
  -- 请求信息
  request_url     VARCHAR(500)  DEFAULT NULL             COMMENT '请求URL',
  request_method  VARCHAR(20)   DEFAULT NULL             COMMENT '请求方法',
  request_params  TEXT          DEFAULT NULL             COMMENT '请求参数',
  request_ip      VARCHAR(50)   DEFAULT NULL             COMMENT '请求IP',
  user_agent      VARCHAR(500)  DEFAULT NULL             COMMENT '用户代理',
  
  -- 用户信息
  user_id         BIGINT(20)    DEFAULT NULL             COMMENT '用户ID',
  user_name       VARCHAR(50)   DEFAULT NULL             COMMENT '用户名',
  
  -- 来源信息
  source_class    VARCHAR(200)  DEFAULT NULL             COMMENT '来源类',
  source_method   VARCHAR(100)  DEFAULT NULL             COMMENT '来源方法',
  source_line     INT(11)       DEFAULT NULL             COMMENT '来源行号',
  
  -- 状态管理
  status          CHAR(1)       DEFAULT '0'              COMMENT '状态: 0=未处理 1=已处理 2=忽略',
  resolve_by      VARCHAR(50)   DEFAULT NULL             COMMENT '处理人',
  resolve_time    DATETIME      DEFAULT NULL             COMMENT '处理时间',
  resolve_remark  VARCHAR(500)  DEFAULT NULL             COMMENT '处理备注',
  
  -- 统计字段
  occur_count     INT(11)       DEFAULT 1                COMMENT '发生次数',
  first_time      DATETIME      DEFAULT NULL             COMMENT '首次发生时间',
  last_time       DATETIME      DEFAULT NULL             COMMENT '最近发生时间',
  
  create_time     DATETIME      DEFAULT NULL             COMMENT '创建时间',
  
  PRIMARY KEY (error_id),
  KEY idx_error_type (error_type),
  KEY idx_error_level (error_level),
  KEY idx_status (status),
  KEY idx_create_time (create_time)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='错误日志表';

-- =========================================
-- 菜单配置
-- =========================================
-- 在日志管理(108)下添加错误日志菜单
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) VALUES
(503, '错误日志', 108, 3, 'errorLog', 'monitor/errorLog/index', NULL, NULL, 1, 0, 'C', '0', '0', 'monitor:errorLog:list', 'bug', 'admin', NOW(), '错误日志管理');

-- 错误日志权限按钮
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) VALUES
(50301, '错误查询', 503, 1, '', NULL, NULL, NULL, 1, 0, 'F', '0', '0', 'monitor:errorLog:query',   '', 'admin', NOW(), ''),
(50302, '错误处理', 503, 2, '', NULL, NULL, NULL, 1, 0, 'F', '0', '0', 'monitor:errorLog:resolve', '', 'admin', NOW(), ''),
(50303, '错误删除', 503, 3, '', NULL, NULL, NULL, 1, 0, 'F', '0', '0', 'monitor:errorLog:remove',  '', 'admin', NOW(), ''),
(50304, '错误清空', 503, 4, '', NULL, NULL, NULL, 1, 0, 'F', '0', '0', 'monitor:errorLog:clean',   '', 'admin', NOW(), '');

-- 错误测试页面（开发调试用）
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) VALUES
(504, '错误测试', 108, 4, 'errorTest', 'monitor/errorLog/test', NULL, NULL, 1, 0, 'C', '0', '0', 'monitor:errorLog:query', 'warning', 'admin', NOW(), '错误日志测试页面');
