Files
Aq-Accounting-Spring/src/main/resources/db/migration_add_chat.sql
T
2026-09-23 17:16:40 +08:00

31 lines
1.9 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 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消息表';