-- 系统审计日志表(双轨之审计轨,与业务日志表 operation_log 物理隔离) CREATE TABLE `sys_operation_log` ( `id` BIGINT NOT NULL AUTO_INCREMENT, `log_level` TINYINT NOT NULL COMMENT '1-重要(删除) 2-次要(新增/编辑) 3-一般(查询)', `operation_type` VARCHAR(16) NOT NULL COMMENT 'DELETE/CREATE/UPDATE/QUERY', `user_id` INT DEFAULT NULL COMMENT '操作人ID(来自UserContext)', `user_name` VARCHAR(64) DEFAULT NULL COMMENT '操作人姓名(来自UserContext)', `sch_id` INT DEFAULT NULL COMMENT '学校ID(多校隔离)', `request_ip` VARCHAR(64) NOT NULL COMMENT '客户端IP', `request_uri` VARCHAR(512) NOT NULL COMMENT '请求URI', `request_method` VARCHAR(16) NOT NULL COMMENT 'HTTP方法', `class_method` VARCHAR(512) NOT NULL COMMENT '类名.方法名', `request_params` TEXT COMMENT '请求参数(脱敏后)', `response_data` MEDIUMBLOB COMMENT 'GZIP压缩后的响应JSON', `status_code` INT NOT NULL COMMENT '业务状态码 0成功 非0失败', `cost_time` BIGINT NOT NULL COMMENT '耗时ms', `user_agent` VARCHAR(512) DEFAULT NULL, `error_msg` TEXT COMMENT '异常信息(截断2000)', `retry_count` INT DEFAULT 0 COMMENT '重试次数', `last_retry_status` TINYINT DEFAULT NULL COMMENT '上次重试状态: 1 成功 / 0 失败', `last_retry_time` DATETIME(3) DEFAULT NULL COMMENT '上次重试时间', `create_time` DATETIME(3) NOT NULL COMMENT '记录时间', PRIMARY KEY (`id`), KEY `idx_sol_create_time` (`create_time`), KEY `idx_sol_user_time` (`user_id`, `create_time`), KEY `idx_sol_sch_time` (`sch_id`, `create_time`), KEY `idx_sol_uri_time` (`request_uri`, `create_time`), KEY `idx_sol_level_time` (`log_level`, `create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统审计日志(HTTP接口级,全量记录)';