-- 通用操作日志表（记录所有用户在所有模块的操作）
CREATE TABLE `sys_operation_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志ID',
  `tenant_id` int(11) NOT NULL DEFAULT 0 COMMENT '租户ID（0表示平台操作，>0表示租户操作）',
  `user_id` int(11) NOT NULL COMMENT '操作用户ID',
  `username` varchar(50) NOT NULL COMMENT '操作用户名',
  `module` varchar(100) NOT NULL COMMENT '操作模块（user/tenant/dict/role等）',
  `resource_type` varchar(50) NOT NULL COMMENT '资源类型（如User/Tenant/Dict等）',
  `resource_id` int(11) NULL COMMENT '资源ID（如被操作的用户ID、租户ID等）',
  `operation` varchar(20) NOT NULL COMMENT '操作类型（CREATE/UPDATE/DELETE/LOGIN/LOGOUT/VIEW等）',
  `description` varchar(500) NULL COMMENT '操作描述',
  `old_value` longtext NULL COMMENT '修改前的值（JSON格式，用于UPDATE操作）',
  `new_value` longtext NULL COMMENT '修改后的值（JSON格式，用于UPDATE操作）',
  `ip_address` varchar(50) NULL COMMENT 'IP地址',
  `user_agent` varchar(500) NULL COMMENT '用户代理信息',
  `request_method` varchar(10) NULL COMMENT '请求方法（GET/POST/PUT/DELETE等）',
  `request_url` varchar(500) NULL COMMENT '请求URL',
  `status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '1-成功，0-失败',
  `error_message` text NULL COMMENT '错误信息',
  `duration` int(11) NULL COMMENT '执行时长（毫秒）',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
  PRIMARY KEY (`id`),
  KEY `idx_tenant_id` (`tenant_id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_module` (`module`),
  KEY `idx_resource_type` (`resource_type`),
  KEY `idx_resource_id` (`resource_id`),
  KEY `idx_operation` (`operation`),
  KEY `idx_create_time` (`create_time`),
  KEY `idx_tenant_user_time` (`tenant_id`, `user_id`, `create_time`),
  KEY `idx_tenant_module_time` (`tenant_id`, `module`, `create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统操作日志表';
