first commit
This commit is contained in:
@@ -0,0 +1,257 @@
|
||||
-- ----------------------------
|
||||
-- AI模块数据库表结构
|
||||
-- ----------------------------
|
||||
|
||||
-- ----------------------------
|
||||
-- AI Provider配置表
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `ai_provider_config`;
|
||||
CREATE TABLE `ai_provider_config` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`provider_name` varchar(100) NOT NULL COMMENT 'Provider名称',
|
||||
`provider_type` varchar(50) NOT NULL COMMENT 'Provider类型',
|
||||
`enabled` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用(0=禁用 1=启用)',
|
||||
`priority` int(11) NOT NULL DEFAULT '0' COMMENT '优先级(数字越小优先级越高)',
|
||||
`weight` int(11) NOT NULL DEFAULT '1' COMMENT '权重(用于负载均衡)',
|
||||
`max_concurrency` int(11) NOT NULL DEFAULT '10' COMMENT '最大并发数',
|
||||
`timeout_seconds` int(11) NOT NULL DEFAULT '30' COMMENT '超时时间(秒)',
|
||||
`max_retries` int(11) NOT NULL DEFAULT '3' COMMENT '最大重试次数',
|
||||
`circuit_breaker_config` json DEFAULT NULL COMMENT '熔断器配置',
|
||||
`rate_limit_config` json DEFAULT NULL COMMENT '限流配置',
|
||||
`api_config` json DEFAULT NULL COMMENT 'API配置',
|
||||
`model_config` json DEFAULT NULL COMMENT '模型配置',
|
||||
`extension_config` json DEFAULT NULL COMMENT '扩展配置',
|
||||
`health_check_url` varchar(500) DEFAULT NULL COMMENT '健康检查URL',
|
||||
`health_check_interval` int(11) NOT NULL DEFAULT '60' COMMENT '健康检查间隔(秒)',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
|
||||
`update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_provider_name` (`provider_name`),
|
||||
KEY `idx_provider_type` (`provider_type`),
|
||||
KEY `idx_enabled` (`enabled`),
|
||||
KEY `idx_priority` (`priority`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI Provider配置表';
|
||||
|
||||
-- ----------------------------
|
||||
-- AI Provider配置历史表
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `ai_provider_config_history`;
|
||||
CREATE TABLE `ai_provider_config_history` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`config_id` bigint(20) NOT NULL COMMENT '配置ID',
|
||||
`provider_name` varchar(100) NOT NULL COMMENT 'Provider名称',
|
||||
`config_data` json NOT NULL COMMENT '配置数据',
|
||||
`operation_type` varchar(20) NOT NULL COMMENT '操作类型(CREATE/UPDATE/DELETE)',
|
||||
`operation_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
|
||||
`operation_by` varchar(64) DEFAULT NULL COMMENT '操作者',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_config_id` (`config_id`),
|
||||
KEY `idx_provider_name` (`provider_name`),
|
||||
KEY `idx_operation_time` (`operation_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI Provider配置历史表';
|
||||
|
||||
-- ----------------------------
|
||||
-- AI聊天记录表
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `ai_chat_record`;
|
||||
CREATE TABLE `ai_chat_record` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`session_id` varchar(100) NOT NULL COMMENT '会话ID',
|
||||
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
||||
`provider_name` varchar(100) NOT NULL COMMENT 'Provider名称',
|
||||
`model_name` varchar(100) DEFAULT NULL COMMENT '模型名称',
|
||||
`message_type` varchar(20) NOT NULL COMMENT '消息类型(USER/ASSISTANT)',
|
||||
`content` text NOT NULL COMMENT '消息内容',
|
||||
`tokens_used` int(11) DEFAULT NULL COMMENT '使用的Token数',
|
||||
`cost` decimal(10,6) DEFAULT NULL COMMENT '成本',
|
||||
`response_time` int(11) DEFAULT NULL COMMENT '响应时间(毫秒)',
|
||||
`is_stream` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否流式响应',
|
||||
`error_message` text DEFAULT NULL COMMENT '错误信息',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_session_id` (`session_id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_provider_name` (`provider_name`),
|
||||
KEY `idx_create_time` (`create_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI聊天记录表';
|
||||
|
||||
-- ----------------------------
|
||||
-- AI使用统计表
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `ai_usage_stats`;
|
||||
CREATE TABLE `ai_usage_stats` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
||||
`provider_name` varchar(100) NOT NULL COMMENT 'Provider名称',
|
||||
`model_name` varchar(100) DEFAULT NULL COMMENT '模型名称',
|
||||
`stat_date` date NOT NULL COMMENT '统计日期',
|
||||
`request_count` int(11) NOT NULL DEFAULT '0' COMMENT '请求次数',
|
||||
`success_count` int(11) NOT NULL DEFAULT '0' COMMENT '成功次数',
|
||||
`error_count` int(11) NOT NULL DEFAULT '0' COMMENT '错误次数',
|
||||
`total_tokens` bigint(20) NOT NULL DEFAULT '0' COMMENT '总Token数',
|
||||
`total_cost` decimal(10,6) NOT NULL DEFAULT '0.000000' COMMENT '总成本',
|
||||
`avg_response_time` int(11) NOT NULL DEFAULT '0' COMMENT '平均响应时间(毫秒)',
|
||||
`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`),
|
||||
UNIQUE KEY `uk_user_provider_date` (`user_id`,`provider_name`,`stat_date`),
|
||||
KEY `idx_provider_name` (`provider_name`),
|
||||
KEY `idx_stat_date` (`stat_date`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI使用统计表';
|
||||
|
||||
-- ----------------------------
|
||||
-- AI评价记录表
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `ai_rating_record`;
|
||||
CREATE TABLE `ai_rating_record` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`message_id` varchar(100) NOT NULL COMMENT '消息ID',
|
||||
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
||||
`provider_name` varchar(100) NOT NULL COMMENT 'Provider名称',
|
||||
`rating` int(11) NOT NULL COMMENT '评分(1-5)',
|
||||
`feedback` text DEFAULT NULL COMMENT '反馈内容',
|
||||
`dimension` varchar(50) DEFAULT NULL COMMENT '评价维度',
|
||||
`anonymous` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否匿名',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_message_user` (`message_id`,`user_id`),
|
||||
KEY `idx_provider_name` (`provider_name`),
|
||||
KEY `idx_rating` (`rating`),
|
||||
KEY `idx_create_time` (`create_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI评价记录表';
|
||||
|
||||
-- ----------------------------
|
||||
-- AI敏感词库表
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `ai_sensitive_word`;
|
||||
CREATE TABLE `ai_sensitive_word` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`word` varchar(100) NOT NULL COMMENT '敏感词',
|
||||
`word_type` varchar(50) NOT NULL COMMENT '词类型(PROFANITY/HATE_SPEECH/VIOLENCE/SEXUAL_CONTENT/ILLEGAL_ACTIVITY/PERSONAL_INFO/SPAM/MALICIOUS_CODE/POLITICAL_SENSITIVE/COMMERCIAL_AD)',
|
||||
`enabled` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用(0=禁用 1=启用)',
|
||||
`priority` int(11) NOT NULL DEFAULT '0' COMMENT '优先级(数字越大优先级越高)',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
|
||||
`update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_word` (`word`),
|
||||
KEY `idx_word_type` (`word_type`),
|
||||
KEY `idx_enabled` (`enabled`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI敏感词库表';
|
||||
|
||||
-- ----------------------------
|
||||
-- AI绘画历史记录表
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `ai_painting_record`;
|
||||
CREATE TABLE `ai_painting_record` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`task_id` varchar(100) NOT NULL COMMENT '任务ID',
|
||||
`user_id` bigint(20) DEFAULT NULL COMMENT '用户ID',
|
||||
`engine_type` varchar(50) NOT NULL COMMENT '绘画引擎类型(DALL_E_3/MIDJOURNEY/STABLE_DIFFUSION)',
|
||||
`prompt` text NOT NULL COMMENT '提示词',
|
||||
`params` json DEFAULT NULL COMMENT '绘画参数(JSON)',
|
||||
`status` varchar(50) NOT NULL COMMENT '状态(PENDING/RUNNING/SUCCESS/FAILED)',
|
||||
`progress` int(11) NOT NULL DEFAULT '0' COMMENT '进度(0-100)',
|
||||
`images` json DEFAULT NULL COMMENT '生成的图片URL列表(JSON数组)',
|
||||
`message` text DEFAULT NULL COMMENT '错误消息',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`share_code` varchar(64) DEFAULT NULL COMMENT '分享码(用于分享作品)',
|
||||
`is_public` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否公开分享(0=私有 1=公开)',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_task_id` (`task_id`),
|
||||
UNIQUE KEY `uk_share_code` (`share_code`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_engine_type` (`engine_type`),
|
||||
KEY `idx_status` (`status`),
|
||||
KEY `idx_create_time` (`create_time`),
|
||||
KEY `idx_is_public` (`is_public`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI绘画历史记录表';
|
||||
|
||||
-- ----------------------------
|
||||
-- AI绘画参数模板表
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `ai_painting_template`;
|
||||
CREATE TABLE `ai_painting_template` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`template_name` varchar(100) NOT NULL COMMENT '模板名称',
|
||||
`user_id` bigint(20) DEFAULT NULL COMMENT '用户ID(为空表示系统模板)',
|
||||
`engine_type` varchar(50) NOT NULL COMMENT '绘画引擎类型(DALL_E_3/MIDJOURNEY/STABLE_DIFFUSION)',
|
||||
`params` json NOT NULL COMMENT '绘画参数(JSON)',
|
||||
`description` varchar(500) DEFAULT NULL COMMENT '模板描述',
|
||||
`is_public` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否公开(0=私有 1=公开)',
|
||||
`sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
|
||||
`update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_engine_type` (`engine_type`),
|
||||
KEY `idx_is_public` (`is_public`),
|
||||
KEY `idx_create_time` (`create_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI绘画参数模板表';
|
||||
|
||||
-- ----------------------------
|
||||
-- AI用户配额管理表
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `ai_user_quota`;
|
||||
CREATE TABLE `ai_user_quota` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
||||
`permission_level` varchar(50) NOT NULL DEFAULT 'BASIC' COMMENT '权限级别(GUEST/BASIC/PREMIUM/VIP/ADMIN)',
|
||||
`daily_quota` bigint(20) NOT NULL DEFAULT '0' COMMENT '每日配额限制(0表示无限制)',
|
||||
`monthly_quota` bigint(20) NOT NULL DEFAULT '0' COMMENT '每月配额限制(0表示无限制)',
|
||||
`daily_used` bigint(20) NOT NULL DEFAULT '0' COMMENT '每日已使用配额',
|
||||
`monthly_used` bigint(20) NOT NULL DEFAULT '0' COMMENT '每月已使用配额',
|
||||
`last_reset_daily` datetime DEFAULT NULL COMMENT '上次重置日配额时间',
|
||||
`last_reset_monthly` datetime DEFAULT NULL COMMENT '上次重置月配额时间',
|
||||
`custom_limits` json DEFAULT NULL COMMENT '自定义限制(JSON)',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
|
||||
`update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_user_id` (`user_id`),
|
||||
KEY `idx_permission_level` (`permission_level`),
|
||||
KEY `idx_create_time` (`create_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI用户配额管理表';
|
||||
|
||||
-- ----------------------------
|
||||
-- AI绘画作品收藏表
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `ai_painting_favorite`;
|
||||
CREATE TABLE `ai_painting_favorite` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
|
||||
`painting_record_id` bigint(20) NOT NULL COMMENT '绘画记录ID',
|
||||
`task_id` varchar(100) DEFAULT NULL COMMENT '任务ID',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '收藏时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_user_painting` (`user_id`, `painting_record_id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_painting_record_id` (`painting_record_id`),
|
||||
KEY `idx_create_time` (`create_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI绘画作品收藏表';
|
||||
|
||||
-- ----------------------------
|
||||
-- 初始化AI Provider配置数据
|
||||
-- ----------------------------
|
||||
INSERT INTO `ai_provider_config` (`provider_name`, `provider_type`, `enabled`, `priority`, `weight`, `max_concurrency`, `timeout_seconds`, `max_retries`, `api_config`, `model_config`, `remark`) VALUES
|
||||
('openai', 'OPENAI', 0, 1, 10, 10, 30, 3, '{"apiKey":"","baseUrl":"https://api.openai.com/v1","organization":""}', '{"defaultModel":"gpt-3.5-turbo","supportedModels":["gpt-3.5-turbo","gpt-4","gpt-4-turbo"]}', 'OpenAI官方API'),
|
||||
('azure-openai', 'AZURE_OPENAI', 0, 2, 8, 8, 30, 3, '{"apiKey":"","endpoint":"","apiVersion":"2023-12-01-preview"}', '{"defaultModel":"gpt-35-turbo","supportedModels":["gpt-35-turbo","gpt-4"]}', 'Azure OpenAI服务'),
|
||||
('chatglm', 'CHATGLM', 0, 3, 6, 6, 30, 3, '{"apiKey":"","baseUrl":"https://open.bigmodel.cn/api/paas/v4"}', '{"defaultModel":"glm-4","supportedModels":["glm-4","glm-3-turbo"]}', '智谱AI ChatGLM'),
|
||||
('qwen', 'QWEN', 0, 4, 6, 6, 30, 3, '{"apiKey":"","baseUrl":"https://dashscope.aliyuncs.com/api/v1"}', '{"defaultModel":"qwen-turbo","supportedModels":["qwen-turbo","qwen-plus","qwen-max"]}', '阿里云通义千问'),
|
||||
('zhipu', 'ZHIPU', 0, 5, 5, 5, 30, 3, '{"apiKey":"","baseUrl":"https://open.bigmodel.cn/api/paas/v4"}', '{"defaultModel":"glm-4","supportedModels":["glm-4","glm-3-turbo"]}', '智谱AI'),
|
||||
('fastgpt', 'FASTGPT', 0, 6, 4, 4, 30, 3, '{"apiKey":"","baseUrl":"","chatId":""}', '{"defaultModel":"fastgpt","supportedModels":["fastgpt"]}', 'FastGPT平台'),
|
||||
('coze', 'COZE', 0, 7, 3, 3, 30, 3, '{"apiKey":"","baseUrl":"https://www.coze.cn/api","botId":""}', '{"defaultModel":"coze","supportedModels":["coze"]}', 'Coze平台'),
|
||||
('dify', 'DIFY', 0, 8, 3, 3, 30, 3, '{"apiKey":"","baseUrl":"","appId":""}', '{"defaultModel":"dify","supportedModels":["dify"]}', 'Dify平台'),
|
||||
('knowledge', 'KNOWLEDGE', 1, 9, 2, 2, 30, 3, '{"enabled":true}', '{"defaultModel":"knowledge","supportedModels":["knowledge"]}', '内部知识库');
|
||||
Reference in New Issue
Block a user