use school_news; -- 智能体配置表 DROP TABLE IF EXISTS `tb_ai_agent_config`; CREATE TABLE `tb_ai_agent_config` ( `id` VARCHAR(50) NOT NULL COMMENT '配置ID', `name` VARCHAR(100) NOT NULL COMMENT '智能体名称', `avatar` VARCHAR(255) DEFAULT NULL COMMENT '智能体头像', `system_prompt` TEXT COMMENT '系统提示词', `model_name` VARCHAR(100) DEFAULT NULL COMMENT '模型名称', `model_provider` VARCHAR(50) DEFAULT NULL COMMENT '模型提供商', `temperature` DECIMAL(3,2) DEFAULT 0.70 COMMENT '温度值', `max_tokens` INT(11) DEFAULT 2000 COMMENT '最大tokens', `top_p` DECIMAL(3,2) DEFAULT 1.00 COMMENT 'Top P值', `status` INT(4) DEFAULT 1 COMMENT '状态(0禁用 1启用)', `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间', `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='智能体配置表'; -- 知识库表 DROP TABLE IF EXISTS `tb_ai_knowledge`; CREATE TABLE `tb_ai_knowledge` ( `id` VARCHAR(50) NOT NULL COMMENT '知识ID', `title` VARCHAR(255) NOT NULL COMMENT '知识标题', `content` LONGTEXT NOT NULL COMMENT '知识内容', `source_type` INT(4) DEFAULT 1 COMMENT '来源类型(1手动添加 2文件导入 3资源同步)', `source_id` VARCHAR(50) DEFAULT NULL COMMENT '来源ID', `file_name` VARCHAR(255) DEFAULT NULL COMMENT '文件名', `file_path` VARCHAR(500) DEFAULT NULL COMMENT '文件路径', `category` VARCHAR(100) DEFAULT NULL COMMENT '分类', `tags` VARCHAR(500) DEFAULT NULL COMMENT '标签(JSON数组)', `vector_id` VARCHAR(100) DEFAULT NULL COMMENT '向量ID(用于向量检索)', `status` INT(4) DEFAULT 1 COMMENT '状态(0禁用 1启用)', `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间', `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), KEY `idx_source` (`source_type`, `source_id`), KEY `idx_category` (`category`), KEY `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='知识库表'; -- 对话会话表 DROP TABLE IF EXISTS `tb_ai_conversation`; CREATE TABLE `tb_ai_conversation` ( `id` VARCHAR(50) NOT NULL COMMENT '会话ID', `user_id` VARCHAR(50) NOT NULL COMMENT '用户ID', `title` VARCHAR(255) DEFAULT NULL COMMENT '会话标题', `status` INT(4) DEFAULT 1 COMMENT '状态(0已结束 1进行中)', `message_count` INT(11) DEFAULT 0 COMMENT '消息数量', `last_message_time` TIMESTAMP NULL DEFAULT NULL COMMENT '最后消息时间', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_user` (`user_id`), KEY `idx_last_message_time` (`last_message_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='对话会话表'; -- 对话记录表 DROP TABLE IF EXISTS `tb_ai_message`; CREATE TABLE `tb_ai_message` ( `id` VARCHAR(50) NOT NULL COMMENT '消息ID', `conversation_id` VARCHAR(50) NOT NULL COMMENT '会话ID', `user_id` VARCHAR(50) NOT NULL COMMENT '用户ID', `role` VARCHAR(20) NOT NULL COMMENT '角色(user用户 assistant助手 system系统)', `content` LONGTEXT NOT NULL COMMENT '消息内容', `file_ids` VARCHAR(500) DEFAULT NULL COMMENT '关联文件ID(JSON数组)', `knowledge_ids` VARCHAR(500) DEFAULT NULL COMMENT '引用知识ID(JSON数组)', `token_count` INT(11) DEFAULT 0 COMMENT 'Token数量', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_conversation` (`conversation_id`), KEY `idx_user` (`user_id`), KEY `idx_create_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='对话消息表'; -- 上传文件表 DROP TABLE IF EXISTS `tb_ai_upload_file`; CREATE TABLE `tb_ai_upload_file` ( `id` VARCHAR(50) NOT NULL COMMENT '文件ID', `user_id` VARCHAR(50) NOT NULL COMMENT '用户ID', `conversation_id` VARCHAR(50) DEFAULT NULL COMMENT '会话ID', `file_name` VARCHAR(255) NOT NULL COMMENT '文件名', `file_path` VARCHAR(500) NOT NULL COMMENT '文件路径', `file_size` BIGINT(20) DEFAULT 0 COMMENT '文件大小(字节)', `file_type` VARCHAR(50) DEFAULT NULL COMMENT '文件类型', `mime_type` VARCHAR(100) DEFAULT NULL COMMENT 'MIME类型', `extracted_text` LONGTEXT COMMENT '提取的文本内容', `status` INT(4) DEFAULT 1 COMMENT '状态(0处理中 1已完成 2失败)', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_user` (`user_id`), KEY `idx_conversation` (`conversation_id`), KEY `idx_create_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='上传文件表'; -- AI使用统计表 DROP TABLE IF EXISTS `tb_ai_usage_statistics`; CREATE TABLE `tb_ai_usage_statistics` ( `id` VARCHAR(50) NOT NULL COMMENT '统计ID', `user_id` VARCHAR(50) NOT NULL COMMENT '用户ID', `stat_date` DATE NOT NULL COMMENT '统计日期', `conversation_count` INT(11) DEFAULT 0 COMMENT '会话数量', `message_count` INT(11) DEFAULT 0 COMMENT '消息数量', `total_tokens` INT(11) DEFAULT 0 COMMENT '总Token数', `file_count` INT(11) DEFAULT 0 COMMENT '上传文件数', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_user_date` (`user_id`, `stat_date`), KEY `idx_user` (`user_id`), KEY `idx_date` (`stat_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='AI使用统计表';