first commit

This commit is contained in:
dev
2026-02-22 12:12:02 +08:00
commit b236048a24
1467 changed files with 160403 additions and 0 deletions
+257
View File
@@ -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"]}', '内部知识库');