31 lines
1.9 KiB
SQL
31 lines
1.9 KiB
SQL
-- 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消息表';
|