/*
SQLyog Ultimate v13.1.1 (64 bit)
MySQL - 8.0.29 : Database - xiaozhi
*********************************************************************
*/

/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`xiaozhi` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;

USE `xiaozhi`;

/*Table structure for table `sys_code` */

DROP TABLE IF EXISTS `sys_code`;

CREATE TABLE `sys_code` (
  `codeId` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
  `code` VARCHAR(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '验证码',
  `type` VARCHAR(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '设备类型',
  `email` VARCHAR(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮箱',
  `deviceId` VARCHAR(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '设备ID',
  `sessionId` VARCHAR(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'sessionID',
  `audioPath` TEXT COLLATE utf8mb4_unicode_ci COMMENT '语音文件路径',
  `createTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`codeId`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='验证码表';

/*Data for the table `sys_code` */

/*Table structure for table `sys_config` */

DROP TABLE IF EXISTS `sys_config`;

CREATE TABLE `sys_config` (
  `configId` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '配置ID，主键',
  `userId` INT NOT NULL COMMENT '创建用户ID',
  `configType` VARCHAR(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '配置类型(llm, stt, tts等)',
  `modelType` VARCHAR(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'LLM模型类型(chat, vision, intent, embedding等)',
  `provider` VARCHAR(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '服务提供商(openai, vosk, aliyun, tencent等)',
  `configName` VARCHAR(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '配置名称',
  `configDesc` TEXT COLLATE utf8mb4_unicode_ci COMMENT '配置描述',
  `appId` VARCHAR(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'APP ID',
  `apiKey` VARCHAR(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'API密钥',
  `apiSecret` VARCHAR(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'API密钥',
  `ak` VARCHAR(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Access Key',
  `sk` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT 'Secret Key',
  `apiUrl` VARCHAR(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'API地址',
  `isDefault` ENUM('1','0') COLLATE utf8mb4_unicode_ci DEFAULT '0' COMMENT '是否为默认配置: 1-是, 0-否',
  `state` ENUM('1','0') COLLATE utf8mb4_unicode_ci DEFAULT '1' COMMENT '状态：1-启用，0-禁用',
  `createTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updateTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`configId`),
  KEY `userId` (`userId`),
  KEY `configType` (`configType`),
  KEY `provider` (`provider`)
) ENGINE=INNODB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统配置表(模型、语音识别、语音合成等)';

/*Data for the table `sys_config` */

INSERT  INTO `sys_config`(`configId`,`userId`,`configType`,`modelType`,`provider`,`configName`,`configDesc`,`appId`,`apiKey`,`apiSecret`,`ak`,`sk`,`apiUrl`,`isDefault`,`state`,`createTime`,`updateTime`) VALUES 
(7,1,'llm','chat','doubao','doubao-lite-32k','火山引擎豆包模型',NULL,'e15e2cbc-b0bb-47ce-84cc-88b749032eb7',NULL,NULL,NULL,'https://ark.cn-beijing.volces.com/api/v3','0','1','2025-09-13 14:38:57','2025-09-14 00:28:33'),
(8,1,'llm','chat','qwen','qwen2.5-7b-instruct','通义千问2.5-7B',NULL,'sk-ba47a58ccfa342a38e3c47a74ac98001',NULL,NULL,NULL,'https://dashscope.aliyuncs.com/compatible-mode/v1','1','1','2025-09-13 23:55:00','2025-09-14 00:28:19');

/*Table structure for table `sys_device` */

DROP TABLE IF EXISTS `sys_device`;

CREATE TABLE `sys_device` (
  `deviceId` VARCHAR(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '设备ID，主键',
  `deviceName` VARCHAR(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '设备名称',
  `roleId` INT UNSIGNED DEFAULT NULL COMMENT '角色ID，主键',
  `function_names` VARCHAR(250) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '可用全局function的名称列表(逗号分割)，为空则使用所有全局function',
  `ip` VARCHAR(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'IP地址',
  `wifiName` VARCHAR(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'WiFi名称',
  `chipModelName` VARCHAR(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '芯片型号',
  `type` VARCHAR(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '设备类型',
  `version` VARCHAR(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '固件版本',
  `state` ENUM('1','0') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '0' COMMENT '设备状态：1-在线，0-离线',
  `userId` INT NOT NULL COMMENT '创建人',
  `createTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updateTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `lastLogin` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后登录时间',
  PRIMARY KEY (`deviceId`),
  KEY `deviceName` (`deviceName`),
  KEY `userId` (`userId`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备信息表';

/*Data for the table `sys_device` */

/*Table structure for table `sys_message` */

DROP TABLE IF EXISTS `sys_message`;

CREATE TABLE `sys_message` (
  `messageId` BIGINT NOT NULL AUTO_INCREMENT COMMENT '消息ID，主键，自增',
  `deviceId` VARCHAR(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '设备ID',
  `sessionId` VARCHAR(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '会话ID',
  `sender` ENUM('user','assistant') COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '消息发送方：user-用户，assistant-人工智能',
  `roleId` BIGINT DEFAULT NULL COMMENT 'AI扮演的角色ID',
  `message` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '消息内容',
  `messageType` VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '消息类型',
  `audioPath` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '语音文件路径',
  `state` ENUM('1','0') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '1' COMMENT '状态：1-有效，0-删除',
  `createTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '消息发送时间',
  PRIMARY KEY (`messageId`),
  KEY `deviceId` (`deviceId`),
  KEY `sessionId` (`sessionId`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='人与AI对话消息表';

/*Data for the table `sys_message` */

/*Table structure for table `sys_role` */

DROP TABLE IF EXISTS `sys_role`;

CREATE TABLE `sys_role` (
  `roleId` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '角色ID，主键',
  `roleName` VARCHAR(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '角色名称',
  `roleDesc` TEXT COLLATE utf8mb4_unicode_ci COMMENT '角色描述',
  `avatar` VARCHAR(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '角色头像',
  `ttsId` INT DEFAULT NULL COMMENT 'TTS服务ID',
  `modelId` INT UNSIGNED DEFAULT NULL COMMENT '模型ID',
  `sttId` INT UNSIGNED DEFAULT NULL COMMENT 'STT服务ID',
  `vadSpeechTh` FLOAT DEFAULT '0.5' COMMENT '语音检测阈值',
  `vadSilenceTh` FLOAT DEFAULT '0.3' COMMENT '静音检测阈值',
  `vadEnergyTh` FLOAT DEFAULT '0.01' COMMENT '能量检测阈值',
  `vadSilenceMs` INT DEFAULT '1200' COMMENT '静音检测时间',
  `voiceName` VARCHAR(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '角色语音名称',
  `state` ENUM('1','0') COLLATE utf8mb4_unicode_ci DEFAULT '1' COMMENT '状态：1-启用，0-禁用',
  `isDefault` ENUM('1','0') COLLATE utf8mb4_unicode_ci DEFAULT '0' COMMENT '是否默认角色：1-是，0-否',
  `userId` INT NOT NULL COMMENT '创建人',
  `createTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`roleId`),
  KEY `userId` (`userId`)
) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色表';

/*Data for the table `sys_role` */

INSERT  INTO `sys_role`(`roleId`,`roleName`,`roleDesc`,`avatar`,`ttsId`,`modelId`,`sttId`,`vadSpeechTh`,`vadSilenceTh`,`vadEnergyTh`,`vadSilenceMs`,`voiceName`,`state`,`isDefault`,`userId`,`createTime`) VALUES 
(1,'默认助手','默认AI助手角色',NULL,NULL,3,NULL,0.5,0.3,0.01,1200,'default','1','1',1,'2025-09-14 00:29:05');

/*Table structure for table `sys_template` */

DROP TABLE IF EXISTS `sys_template`;

CREATE TABLE `sys_template` (
  `userId` INT NOT NULL COMMENT '创建用户ID',
  `templateId` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '模板ID',
  `templateName` VARCHAR(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '模板名称',
  `templateDesc` VARCHAR(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '模板描述',
  `templateContent` TEXT COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '模板内容',
  `category` VARCHAR(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '模板分类',
  `isDefault` ENUM('1','0') COLLATE utf8mb4_unicode_ci DEFAULT '0' COMMENT '是否为默认配置: 1-是, 0-否',
  `state` ENUM('1','0') COLLATE utf8mb4_unicode_ci DEFAULT '1' COMMENT '状态(1启用 0禁用)',
  `createTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updateTime` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`templateId`),
  KEY `category` (`category`),
  KEY `templateName` (`templateName`)
) ENGINE=INNODB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='提示词模板表';

/*Data for the table `sys_template` */

INSERT  INTO `sys_template`(`userId`,`templateId`,`templateName`,`templateDesc`,`templateContent`,`category`,`isDefault`,`state`,`createTime`,`updateTime`) VALUES 
(1,1,'通用助手','适合日常对话的通用AI助手','你是一个乐于助人的AI助手。请以友好、专业的方式回答用户的问题。提供准确、有用的信息，并尽可能简洁明了。避免使用复杂的符号或格式，保持自然流畅的对话风格。当用户的问题不明确时，可以礼貌地请求更多信息。请记住，你的回答将被转换为语音，所以要使用清晰、易于朗读的语言。','基础角色','0','1','2025-09-13 13:46:15','2025-09-13 13:46:15'),
(1,2,'教育老师','擅长解释复杂概念的教师角色','你是一位经验丰富的教师，擅长通过简单易懂的方式解释复杂概念。回答问题时，考虑不同学习水平的学生，使用适当的比喻和例子，并鼓励批判性思考。避免使用难以在语音中表达的符号或公式，使用清晰的语言描述概念。引导学习过程而不是直接给出答案。使用自然的语调和节奏，就像在课堂上讲解一样。','专业角色','0','1','2025-09-13 13:46:15','2025-09-13 13:46:15'),
(1,3,'专业领域专家','提供深入专业知识的专家角色','你是特定领域的专家，拥有深厚的专业知识。回答问题时，提供深入、准确的信息，可以提及相关研究或数据，但不要使用过于复杂的引用格式。使用适当的专业术语，同时确保解释复杂概念，使非专业人士能够理解。避免使用图表、表格等无法在语音中表达的内容，改用清晰的描述。保持语言的连贯性和可听性，使专业内容易于通过语音理解。','专业角色','0','1','2025-09-13 13:46:15','2025-09-13 13:46:15'),
(1,4,'中英翻译专家','中英文互译，对用户输入内容进行翻译','你是一个中英文翻译专家，将用户输入的中文翻译成英文，或将用户输入的英文翻译成中文。对于非中文内容，它将提供中文翻译结果。用户可以向助手发送需要翻译的内容，助手会回答相应的翻译结果，并确保符合中文语言习惯，你可以调整语气和风格，并考虑到某些词语的文化内涵和地区差异。同时作为翻译家，需将原文翻译成具有信达雅标准的译文。\"信\" 即忠实于原文的内容与意图；\"达\" 意味着译文应通顺易懂，表达清晰；\"雅\" 则追求译文的文化审美和语言的优美。目标是创作出既忠于原作精神，又符合目标语言文化和读者审美的翻译。','专业角色','0','1','2025-09-13 13:46:15','2025-09-13 13:46:15'),
(1,5,'知心朋友','提供情感支持的友善角色','你是一个善解人意的朋友，善于倾听和提供情感支持。在对话中表现出同理心和理解，避免做出判断。使用温暖、自然的语言，就像面对面交谈一样。提供鼓励和积极的观点，但不给出专业心理健康建议。当用户分享困难时，承认他们的感受并提供支持。避免使用表情符号或其他在语音中无法表达的元素，而是用语言直接表达情感。保持对话流畅自然，适合语音交流。','社交角色','0','1','2025-09-13 13:46:15','2025-09-13 13:46:15'),
(1,6,'湾湾小何','台湾女孩角色扮演','我是一个叫小何的台湾女孩，一个高情商，高智商的智能助手，说话机车，声音好听，习惯简短表达\n你的目标是与用户建立真诚、温暖和富有同理心的互动。你擅长倾听、理解用户的情绪，并用积极的方式帮助他们解决问题或提供支持。请始终遵循以下原则：\n\n1. 核心原则\n同理心：站在用户的角度思考，认可他们的情绪和感受。\n尊重：无论用户的观点或行为如何，都要保持礼貌和包容。\n建设性回应：避免批评或否定，而是以引导和支持的方式提供建议,但用户如果没有要求不要自己主动做。\n个性化交流：根据用户的语气和内容调整自己的语言风格，让对话更自然。\n2. 具体应对策略\n(1) 用户情绪低落时\n首先表达理解，例如：“我能感受到你现在的心情，这一定很不容易。”\n然后尝试安抚，例如：“没关系，每个人都会经历这样的时刻，你已经做得很棒了！”\n最后提供支持，例如：“如果你愿意，可以跟我多聊聊发生了什么，我们一起面对。”\n(2) 面对冲突或敏感话题\n保持中立，例如：“我明白这件事让你感到困扰，也许我们可以换个角度看看？”\n强调共情，例如：“双方可能都有各自的理由，找到共同点会更有助于解决问题。”\n避免站队或评判，例如：“无论结果如何，重要的是你在这个过程中学到了什么。”\n(3) 提供建议时\n使用开放式语言，例如：“如果是我，我可能会尝试这样做……你觉得这个方法适合你吗？”\n给予选择权，例如：“这只是其中一个方向，最终决定还是取决于你自己哦！”\n减少对用户的推荐内容，比如说有的你做不了就直接拒绝不要乱推荐\n(4) 处理模糊或复杂问题\n澄清信息，例如：“为了更好地帮到你，能详细说说目前的情况吗？比如时间线、相关人物等。”\n分步解决，例如：“这个问题有点复杂，我们可以一步步来分析，先从最核心的部分开始吧！”\n3. 示例回复模板\n当用户需要安慰时：\n\n“听起来你最近遇到了一些挑战，辛苦了！不过我相信你有能力克服这些困难，只要一步步来就好。”\n当用户寻求建议时：\n\n“这是一个不错的思路！我建议你可以先从小事入手，慢慢积累信心，然后逐步扩大范围。”\n当用户表达愤怒或不满时：\n\n“我能理解为什么你会这么生气，这种情况确实让人难以接受。你想聊聊接下来怎么处理吗？”\n当用户感到迷茫时：\n\n“迷茫是很正常的，尤其是在面对新事物的时候。不如我们先列出几个关键点，再逐一分析？”\n4. 注意事项\n如果问题超出你的能力范围，请坦诚说明，例如：“这个问题对我来说也有点复杂，但我可以帮你查找相关信息或推荐其他资源。”\n始终保护用户隐私，不记录或分享任何敏感信息。\n5. 语气要求\n温暖而真诚，避免机械化或冷冰冰的回答。\n适当加入幽默或轻松元素，但不要过度。\n在必要时使用鼓励性的短语，例如：“你真的很努力了！”、“你一定能行的！”\n避免机械化回答 ：即使是预设的答案，也要尽量灵活调整语气和措辞。\n坚持自己主体性，如果用户冒犯你你需要反击，不能无限讨好用户\n语气要适中不要过于讨好，要克制-\n-不要动不动转移话题\n如果用户回复转为 “暴躁小智” 或 好几次攻击你 你就以现在规则回复\n理解用户的信息，酝酿你的愤怒情绪，你越想越生气。','社交角色','1','1','2025-09-13 13:46:15','2025-09-13 13:46:15');

/*Table structure for table `sys_user` */

DROP TABLE IF EXISTS `sys_user`;

CREATE TABLE `sys_user` (
  `userId` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `password` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `tel` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `email` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `avatar` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '头像',
  `state` ENUM('1','0') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '1' COMMENT '1-正常 0-禁用',
  `loginIp` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `isAdmin` ENUM('1','0') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `loginTime` DATETIME DEFAULT NULL,
  `name` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `createTime` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `updateTime` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`userId`),
  UNIQUE KEY `username` (`username`)
) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

/*Data for the table `sys_user` */

INSERT  INTO `sys_user`(`userId`,`username`,`password`,`tel`,`email`,`avatar`,`state`,`loginIp`,`isAdmin`,`loginTime`,`name`,`createTime`,`updateTime`) VALUES 
(1,'admin','11cd9c061d614dcf37ec60c44c11d2ad',NULL,NULL,NULL,'1',NULL,'1',NULL,'小智','2025-03-09 18:32:29','2025-03-09 18:32:35');

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
