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使用统计表';

