- 虚拟用户管理(昵称/头像/性别/简介/邮箱同步到目标平台) - AI互动调度(点赞/收藏/评论/转发) - 日志时间改为北京时间 - 评论达上限后继续执行点赞收藏转发 - 一键登出全部功能 - 浅色主题UI
168 lines
9.0 KiB
SQL
168 lines
9.0 KiB
SQL
-- AI虚拟用户新闻互动系统 数据库初始化脚本
|
||
SET NAMES utf8mb4;
|
||
SET FOREIGN_KEY_CHECKS = 0;
|
||
|
||
-- 虚拟用户表
|
||
CREATE TABLE IF NOT EXISTS `virtual_users` (
|
||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||
`nickname` varchar(64) NOT NULL COMMENT '昵称',
|
||
`account` varchar(128) NOT NULL COMMENT '新闻平台账号',
|
||
`password_enc` varchar(512) NOT NULL COMMENT 'AES加密密码',
|
||
`avatar_url` varchar(512) DEFAULT NULL COMMENT '头像URL',
|
||
`status` tinyint NOT NULL DEFAULT 0 COMMENT '0未登录 1登录中 2已登录 3登录失效 4封禁',
|
||
`activity_level` tinyint NOT NULL DEFAULT 1 COMMENT '0低 1中 2高',
|
||
`daily_comment_limit` int NOT NULL DEFAULT 10 COMMENT '每日最大评论次数',
|
||
`daily_like_limit` int NOT NULL DEFAULT 30 COMMENT '每日最大点赞次数',
|
||
`today_comment_count` int NOT NULL DEFAULT 0 COMMENT '今日已评论次数',
|
||
`today_like_count` int NOT NULL DEFAULT 0 COMMENT '今日已点赞次数',
|
||
`total_interactions` int NOT NULL DEFAULT 0 COMMENT '累计互动次数',
|
||
`session_token` text DEFAULT NULL COMMENT '当前会话Token',
|
||
`session_expires_at` datetime DEFAULT NULL COMMENT '会话过期时间',
|
||
`last_login_at` datetime DEFAULT NULL COMMENT '最后登录时间',
|
||
`last_interact_at` datetime DEFAULT NULL COMMENT '最后互动时间',
|
||
`real_name` varchar(64) DEFAULT NULL COMMENT '真实姓名(平台同步)',
|
||
`sex` tinyint(1) NOT NULL DEFAULT 0 COMMENT '性别 0未知 1男 2女',
|
||
`platform_uid` varchar(64) DEFAULT NULL COMMENT '平台用户ID',
|
||
`remark` varchar(256) DEFAULT NULL COMMENT '备注',
|
||
`is_enabled` tinyint NOT NULL DEFAULT 1 COMMENT '1启用 0禁用',
|
||
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_account` (`account`),
|
||
UNIQUE KEY `uk_nickname` (`nickname`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='虚拟用户表';
|
||
|
||
-- 用户人格表
|
||
CREATE TABLE IF NOT EXISTS `user_personalities` (
|
||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||
`user_id` bigint NOT NULL COMMENT '用户ID',
|
||
`character_type` varchar(32) DEFAULT NULL COMMENT '性格类型:开朗/内敛/毒舌/温和',
|
||
`language_style` varchar(32) DEFAULT NULL COMMENT '语言风格:严肃/幽默/文艺/吐槽',
|
||
`interest_tags` json DEFAULT NULL COMMENT '兴趣偏好JSON数组',
|
||
`interact_tendency` varchar(32) DEFAULT NULL COMMENT '互动倾向:爱评论/爱点赞/潜水',
|
||
`word_count_min` int DEFAULT 20 COMMENT '最少字数',
|
||
`word_count_max` int DEFAULT 100 COMMENT '最多字数',
|
||
`personality_desc` text DEFAULT NULL COMMENT 'AI生成的人格描述',
|
||
`comment_style_prompt` text DEFAULT NULL COMMENT '评论风格提示词',
|
||
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_user_id` (`user_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户人格表';
|
||
|
||
-- 互动记录表
|
||
CREATE TABLE IF NOT EXISTS `interaction_records` (
|
||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||
`user_id` bigint NOT NULL COMMENT '虚拟用户ID',
|
||
`user_nickname` varchar(64) DEFAULT NULL COMMENT '用户昵称',
|
||
`user_account` varchar(128) DEFAULT NULL COMMENT '用户账号',
|
||
`article_id` varchar(64) DEFAULT NULL COMMENT '文章ID',
|
||
`article_title` varchar(256) DEFAULT NULL COMMENT '文章标题',
|
||
`interact_type` varchar(16) NOT NULL COMMENT 'comment/reply/like/collect/forward',
|
||
`content` text DEFAULT NULL COMMENT '评论/回复内容',
|
||
`parent_comment_id` varchar(64) DEFAULT NULL COMMENT '父评论ID(回复时用)',
|
||
`session_id` varchar(128) DEFAULT NULL COMMENT '登录会话ID',
|
||
`token_consumed` int DEFAULT 0 COMMENT '消耗Token数',
|
||
`status` tinyint NOT NULL DEFAULT 0 COMMENT '0执行中 1成功 2失败',
|
||
`error_msg` varchar(512) DEFAULT NULL COMMENT '失败原因',
|
||
`retry_count` tinyint DEFAULT 0 COMMENT '重试次数',
|
||
`executed_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_executed_at` (`executed_at`),
|
||
KEY `idx_interact_type` (`interact_type`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='互动记录表';
|
||
|
||
-- Token消耗统计表
|
||
CREATE TABLE IF NOT EXISTS `token_stats` (
|
||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||
`stat_date` date NOT NULL COMMENT '统计日期',
|
||
`model_name` varchar(64) DEFAULT NULL COMMENT '模型名称',
|
||
`total_tokens` int NOT NULL DEFAULT 0 COMMENT '当日消耗总Token',
|
||
`prompt_tokens` int NOT NULL DEFAULT 0 COMMENT 'Prompt Token',
|
||
`completion_tokens` int NOT NULL DEFAULT 0 COMMENT 'Completion Token',
|
||
`call_count` int NOT NULL DEFAULT 0 COMMENT '调用次数',
|
||
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_stat_date` (`stat_date`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Token消耗统计表';
|
||
|
||
-- AI模型配置表
|
||
CREATE TABLE IF NOT EXISTS `ai_model_configs` (
|
||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||
`model_name` varchar(64) NOT NULL COMMENT '模型名称',
|
||
`provider` varchar(32) NOT NULL COMMENT 'openai/zhipu/wenxin/qianwen/local',
|
||
`api_base_url` varchar(256) DEFAULT NULL COMMENT 'API地址',
|
||
`api_key_enc` varchar(512) DEFAULT NULL COMMENT '加密API Key',
|
||
`model_version` varchar(64) DEFAULT NULL COMMENT '模型版本',
|
||
`temperature` float DEFAULT 0.7 COMMENT '温度',
|
||
`max_tokens` int DEFAULT 1000 COMMENT '最大Token',
|
||
`timeout_seconds` int DEFAULT 30 COMMENT '超时秒数',
|
||
`is_default` tinyint NOT NULL DEFAULT 0 COMMENT '是否默认模型',
|
||
`is_enabled` tinyint NOT NULL DEFAULT 1 COMMENT '是否启用',
|
||
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI模型配置表';
|
||
|
||
-- 系统配置表
|
||
CREATE TABLE IF NOT EXISTS `system_configs` (
|
||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||
`config_key` varchar(64) NOT NULL COMMENT '配置键',
|
||
`config_value` text DEFAULT NULL COMMENT '配置值',
|
||
`config_type` varchar(16) DEFAULT 'string' COMMENT '类型:string/int/json/bool',
|
||
`description` varchar(256) DEFAULT NULL COMMENT '说明',
|
||
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_config_key` (`config_key`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表';
|
||
|
||
-- 登录日志表
|
||
CREATE TABLE IF NOT EXISTS `login_logs` (
|
||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||
`user_id` bigint NOT NULL,
|
||
`user_account` varchar(128) DEFAULT NULL,
|
||
`action` varchar(16) NOT NULL COMMENT 'login/logout/refresh/fail',
|
||
`session_id` varchar(128) DEFAULT NULL,
|
||
`ip_address` varchar(64) DEFAULT NULL,
|
||
`error_msg` varchar(512) DEFAULT NULL,
|
||
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_created_at` (`created_at`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='登录日志表';
|
||
|
||
-- 初始系统配置
|
||
INSERT INTO `system_configs` (`config_key`, `config_value`, `config_type`, `description`) VALUES
|
||
('interact_time_start', '08:00', 'string', '互动开始时间'),
|
||
('interact_time_end', '22:00', 'string', '互动结束时间'),
|
||
('interact_interval_min', '300', 'int', '互动最小间隔(秒)'),
|
||
('interact_interval_max', '1800', 'int', '互动最大间隔(秒)'),
|
||
('max_concurrent_users', '5', 'int', '并发登录用户数上限'),
|
||
('daily_token_limit', '100000', 'int', '每日全局Token上限'),
|
||
('today_token_used', '0', 'int', '今日已使用Token'),
|
||
('token_limit_reached', 'false', 'bool', 'Token限额是否已达上限'),
|
||
-- 目标平台接口配置
|
||
('news_platform_base_url', 'http://192.168.1.200:63120', 'string', '新闻业务平台接口地址'),
|
||
('auth_base_url', 'http://192.168.1.200:60040', 'string', '认证服务接口地址'),
|
||
-- 目标平台客户端参数(需根据实际情况配置)
|
||
('platform_app_id', '', 'string', '平台appId(客户端标识)'),
|
||
('platform_access_id', '', 'string', '平台accessId(客户端accessId)'),
|
||
('platform_access_secret', '', 'string', '平台accessSecret(签名密钥,可为空)'),
|
||
('platform_client_code', '', 'string', '平台clientCode(登录用)'),
|
||
('platform_org_id', '', 'string', '平台组织Id(orgId,新闻列表必填)'),
|
||
-- 互动概率
|
||
('comment_probability', '0.4', 'string', '评论触发概率'),
|
||
('reply_probability', '0.2', 'string', '回复触发概率'),
|
||
('like_probability', '0.6', 'string', '点赞触发概率'),
|
||
('collect_probability', '0.3', 'string', '收藏触发概率'),
|
||
('forward_probability', '0.15', 'string', '转发触发概率'),
|
||
('system_start_time', NULL, 'string', '系统启动时间'),
|
||
('scheduler_enabled', 'true', 'bool', '调度器是否启用')
|
||
ON DUPLICATE KEY UPDATE config_value = VALUES(config_value);
|
||
|
||
SET FOREIGN_KEY_CHECKS = 1;
|