-- 消息通知表
CREATE TABLE `notification` (
  `id` bigint(20) NOT NULL COMMENT '主键ID',
  `receiver_id` bigint(20) NOT NULL COMMENT '接收者用户ID',
  `receiver_name` varchar(100) DEFAULT NULL COMMENT '接收者用户名',
  `message_type` varchar(20) NOT NULL COMMENT '消息类型：SYSTEM-系统通知，TASK-任务通知，REPORT-报告通知，MESSAGE-消息通知，REMINDER-提醒通知，WARNING-警告通知',
  `title` varchar(200) NOT NULL COMMENT '消息标题',
  `content` text COMMENT '消息内容',
  `priority` varchar(10) NOT NULL DEFAULT 'NORMAL' COMMENT '消息优先级：LOW-低，NORMAL-普通，HIGH-高，URGENT-紧急',
  `status` varchar(10) NOT NULL DEFAULT 'UNREAD' COMMENT '消息状态：UNREAD-未读，READ-已读，ARCHIVED-已归档',
  `pushed` tinyint(1) DEFAULT '0' COMMENT '是否已推送到前端：0-未推送，1-已推送',
  `business_id` varchar(50) DEFAULT NULL COMMENT '关联的业务ID（可选）',
  `business_type` varchar(50) DEFAULT NULL COMMENT '关联的业务类型（可选）',
  `sender_id` bigint(20) DEFAULT NULL COMMENT '发送者用户ID（系统通知可为空）',
  `sender_name` varchar(100) DEFAULT NULL COMMENT '发送者用户名（系统通知可为空）',
  `send_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '发送时间',
  `read_time` datetime DEFAULT NULL COMMENT '阅读时间',
  `expire_time` datetime DEFAULT NULL COMMENT '过期时间',
  `extra_params` text COMMENT '扩展参数（JSON格式）',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` tinyint(1) DEFAULT '0' COMMENT '删除标记：0-未删除，1-已删除',
  PRIMARY KEY (`id`),
  KEY `idx_receiver_id` (`receiver_id`),
  KEY `idx_message_type` (`message_type`),
  KEY `idx_status` (`status`),
  KEY `idx_send_time` (`send_time`),
  KEY `idx_receiver_status` (`receiver_id`, `status`),
  KEY `idx_expire_time` (`expire_time`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='消息通知表';

-- 用户在线状态表（可选，用于记录用户WebSocket连接状态）
CREATE TABLE `user_online_status` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `user_id` bigint(20) NOT NULL COMMENT '用户ID',
  `username` varchar(100) DEFAULT NULL COMMENT '用户名',
  `session_id` varchar(100) NOT NULL COMMENT 'WebSocket会话ID',
  `server_ip` varchar(50) DEFAULT NULL COMMENT '服务器IP',
  `client_ip` varchar(50) DEFAULT NULL COMMENT '客户端IP',
  `browser` varchar(100) DEFAULT NULL COMMENT '浏览器信息',
  `os` varchar(100) DEFAULT NULL COMMENT '操作系统信息',
  `status` varchar(20) DEFAULT 'ONLINE' COMMENT '状态：ONLINE-在线，OFFLINE-离线',
  `connect_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '连接时间',
  `last_heartbeat` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '最后心跳时间',
  `disconnect_time` datetime DEFAULT NULL COMMENT '断开时间',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_session_id` (`session_id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_status` (`status`),
  KEY `idx_last_heartbeat` (`last_heartbeat`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户在线状态表';