-- AI 会话与消息表(2026-09-23 阶段 B:AI 基建) -- 设计说明: -- * 与项目其他表一致:utf8mb4_unicode_ci、逻辑删除、指向 user 表的外键 -- * 消息不可变(没有 update_time)——工具调用的中间过程不入库, -- 历史里只有 user / assistant 文本,这样 App 端不用理解 tool 消息格式 -- * 会话的 update_time 由 DB 的 ON UPDATE 维护,列表按「最近活跃」排序 CREATE TABLE IF NOT EXISTS `chat_session` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '会话ID', `user_id` BIGINT NOT NULL COMMENT '用户ID', `title` VARCHAR(100) NOT NULL DEFAULT '新对话' COMMENT '标题(首条消息自动生成)', `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0正常 1已删除', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最近活跃时间', PRIMARY KEY (`id`), INDEX `idx_user_updated` (`user_id`, `deleted`, `update_time`), FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='AI会话表'; CREATE TABLE IF NOT EXISTS `chat_message` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '消息ID', `session_id` BIGINT NOT NULL COMMENT '会话ID', `role` VARCHAR(16) NOT NULL COMMENT '角色:user / assistant', `content` TEXT NOT NULL COMMENT '消息文本', `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0正常 1已删除', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), INDEX `idx_session_created` (`session_id`, `deleted`, `create_time`), FOREIGN KEY (`session_id`) REFERENCES `chat_session` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='AI消息表';