30 lines
1.8 KiB
SQL
30 lines
1.8 KiB
SQL
-- 系统审计日志表(双轨之审计轨,与业务日志表 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 '200成功 500异常',
|
||
`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接口级,全量记录)';
|