-- 模型供应器表 DROP TABLE IF EXISTS `ai_model_provider`; CREATE TABLE `ai_model_provider` ( `id` VARCHAR(32) NOT NULL COMMENT '主键', `model_type` VARCHAR(20) COMMENT '模型类型(Memory/ASR/VAD/LLM/TTS)', `provider_code` VARCHAR(50) COMMENT '供应器类型', `name` VARCHAR(50) COMMENT '供应器名称', `fields` JSON COMMENT '供应器字段列表(JSON格式)', `sort` INT UNSIGNED DEFAULT 0 COMMENT '排序', `creator` BIGINT COMMENT '创建者', `create_date` DATETIME COMMENT '创建时间', `updater` BIGINT COMMENT '更新者', `update_date` DATETIME COMMENT '更新时间', PRIMARY KEY (`id`), INDEX `idx_ai_model_provider_model_type` (`model_type`) COMMENT '创建模型类型的索引,用于快速查找特定类型下的所有供应器信息' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='模型配置表'; -- 模型配置表 DROP TABLE IF EXISTS `ai_model_config`; CREATE TABLE `ai_model_config` ( `id` VARCHAR(32) NOT NULL COMMENT '主键', `model_type` VARCHAR(20) COMMENT '模型类型(Memory/ASR/VAD/LLM/TTS)', `model_code` VARCHAR(50) COMMENT '模型编码(如AliLLM、DoubaoTTS)', `model_name` VARCHAR(50) COMMENT '模型名称', `is_default` TINYINT(1) DEFAULT 0 COMMENT '是否默认配置(0否 1是)', `is_enabled` TINYINT(1) DEFAULT 0 COMMENT '是否启用', `config_json` JSON COMMENT '模型配置(JSON格式)', `doc_link` VARCHAR(200) COMMENT '官方文档链接', `remark` VARCHAR(255) COMMENT '备注', `sort` INT UNSIGNED DEFAULT 0 COMMENT '排序', `creator` BIGINT COMMENT '创建者', `create_date` DATETIME COMMENT '创建时间', `updater` BIGINT COMMENT '更新者', `update_date` DATETIME COMMENT '更新时间', PRIMARY KEY (`id`), INDEX `idx_ai_model_config_model_type` (`model_type`) COMMENT '创建模型类型的索引,用于快速查找特定类型下的所有配置信息' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='模型配置表'; -- TTS 音色表 DROP TABLE IF EXISTS `ai_tts_voice`; CREATE TABLE `ai_tts_voice` ( `id` VARCHAR(32) NOT NULL COMMENT '主键', `tts_model_id` VARCHAR(32) COMMENT '对应 TTS 模型主键', `name` VARCHAR(20) COMMENT '音色名称', `tts_voice` VARCHAR(50) COMMENT '音色编码', `languages` VARCHAR(50) COMMENT '语言', `voice_demo` VARCHAR(500) DEFAULT NULL COMMENT '音色 Demo', `remark` VARCHAR(255) COMMENT '备注', `sort` INT UNSIGNED DEFAULT 0 COMMENT '排序', `creator` BIGINT COMMENT '创建者', `create_date` DATETIME COMMENT '创建时间', `updater` BIGINT COMMENT '更新者', `update_date` DATETIME COMMENT '更新时间', PRIMARY KEY (`id`), INDEX `idx_ai_tts_voice_tts_model_id` (`tts_model_id`) COMMENT '创建 TTS 模型主键的索引,用于快速查找对应模型的音色信息' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='TTS 音色表'; -- 智能体配置模板表 DROP TABLE IF EXISTS `ai_agent_template`; CREATE TABLE `ai_agent_template` ( `id` VARCHAR(32) NOT NULL COMMENT '智能体唯一标识', `agent_code` VARCHAR(36) COMMENT '智能体编码', `agent_name` VARCHAR(64) COMMENT '智能体名称', `asr_model_id` VARCHAR(32) COMMENT '语音识别模型标识', `vad_model_id` VARCHAR(64) COMMENT '语音活动检测标识', `llm_model_id` VARCHAR(32) COMMENT '大语言模型标识', `tts_model_id` VARCHAR(32) COMMENT '语音合成模型标识', `tts_voice_id` VARCHAR(32) COMMENT '音色标识', `mem_model_id` VARCHAR(32) COMMENT '记忆模型标识', `intent_model_id` VARCHAR(32) COMMENT '意图模型标识', `system_prompt` TEXT COMMENT '角色设定参数', `lang_code` VARCHAR(10) COMMENT '语言编码', `language` VARCHAR(10) COMMENT '交互语种', `sort` INT UNSIGNED DEFAULT 0 COMMENT '排序权重', `creator` BIGINT COMMENT '创建者 ID', `created_at` DATETIME COMMENT '创建时间', `updater` BIGINT COMMENT '更新者 ID', `updated_at` DATETIME COMMENT '更新时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='智能体配置模板表'; -- 智能体配置表 DROP TABLE IF EXISTS `ai_agent`; CREATE TABLE `ai_agent` ( `id` VARCHAR(32) NOT NULL COMMENT '智能体唯一标识', `user_id` BIGINT COMMENT '所属用户 ID', `agent_code` VARCHAR(36) COMMENT '智能体编码', `agent_name` VARCHAR(64) COMMENT '智能体名称', `asr_model_id` VARCHAR(32) COMMENT '语音识别模型标识', `vad_model_id` VARCHAR(64) COMMENT '语音活动检测标识', `llm_model_id` VARCHAR(32) COMMENT '大语言模型标识', `tts_model_id` VARCHAR(32) COMMENT '语音合成模型标识', `tts_voice_id` VARCHAR(32) COMMENT '音色标识', `mem_model_id` VARCHAR(32) COMMENT '记忆模型标识', `intent_model_id` VARCHAR(32) COMMENT '意图模型标识', `system_prompt` TEXT COMMENT '角色设定参数', `lang_code` VARCHAR(10) COMMENT '语言编码', `language` VARCHAR(10) COMMENT '交互语种', `sort` INT UNSIGNED DEFAULT 0 COMMENT '排序权重', `creator` BIGINT COMMENT '创建者 ID', `created_at` DATETIME COMMENT '创建时间', `updater` BIGINT COMMENT '更新者 ID', `updated_at` DATETIME COMMENT '更新时间', PRIMARY KEY (`id`), INDEX `idx_ai_agent_user_id` (`user_id`) COMMENT '创建用户的索引,用于快速查找用户下的智能体信息' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='智能体配置表'; -- 设备信息表 DROP TABLE IF EXISTS `ai_device`; CREATE TABLE `ai_device` ( `id` VARCHAR(32) NOT NULL COMMENT '设备唯一标识', `user_id` BIGINT COMMENT '关联用户 ID', `mac_address` VARCHAR(50) COMMENT 'MAC 地址', `last_connected_at` DATETIME COMMENT '最后连接时间', `auto_update` TINYINT UNSIGNED DEFAULT 0 COMMENT '自动更新开关(0 关闭/1 开启)', `board` VARCHAR(50) COMMENT '设备硬件型号', `alias` VARCHAR(64) DEFAULT NULL COMMENT '设备别名', `agent_id` VARCHAR(32) COMMENT '智能体 ID', `app_version` VARCHAR(20) COMMENT '固件版本号', `sort` INT UNSIGNED DEFAULT 0 COMMENT '排序', `creator` BIGINT COMMENT '创建者', `create_date` DATETIME COMMENT '创建时间', `updater` BIGINT COMMENT '更新者', `update_date` DATETIME COMMENT '更新时间', PRIMARY KEY (`id`), INDEX `idx_ai_device_created_at` (`mac_address`) COMMENT '创建mac的索引,用于快速查找设备信息' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备信息表'; -- 声纹识别表 DROP TABLE IF EXISTS `ai_voiceprint`; CREATE TABLE `ai_voiceprint` ( `id` VARCHAR(32) NOT NULL COMMENT '声纹唯一标识', `name` VARCHAR(64) COMMENT '声纹名称', `user_id` BIGINT COMMENT '用户 ID(关联用户表)', `agent_id` VARCHAR(32) COMMENT '关联智能体 ID', `agent_code` VARCHAR(36) COMMENT '关联智能体编码', `agent_name` VARCHAR(36) COMMENT '关联智能体名称', `description` VARCHAR(255) COMMENT '声纹描述', `embedding` LONGTEXT COMMENT '声纹特征向量(JSON 数组格式)', `memory` TEXT COMMENT '关联记忆数据', `sort` INT UNSIGNED DEFAULT 0 COMMENT '排序权重', `creator` BIGINT COMMENT '创建者 ID', `created_at` DATETIME COMMENT '创建时间', `updater` BIGINT COMMENT '更新者 ID', `updated_at` DATETIME COMMENT '更新时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='声纹识别表'; -- 对话历史表 DROP TABLE IF EXISTS `ai_chat_history`; CREATE TABLE `ai_chat_history` ( `id` VARCHAR(32) NOT NULL COMMENT '对话编号', `user_id` BIGINT COMMENT '用户编号', `agent_id` VARCHAR(32) DEFAULT NULL COMMENT '聊天角色', `device_id` VARCHAR(32) DEFAULT NULL COMMENT '设备编号', `message_count` INT COMMENT '信息汇总', `creator` BIGINT COMMENT '创建者', `create_date` DATETIME COMMENT '创建时间', `updater` BIGINT COMMENT '更新者', `update_date` DATETIME COMMENT '更新时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='对话历史表'; -- 对话信息表 DROP TABLE IF EXISTS `ai_chat_message`; CREATE TABLE `ai_chat_message` ( `id` VARCHAR(32) NOT NULL COMMENT '对话记录唯一标识', `user_id` BIGINT COMMENT '用户唯一标识', `chat_id` VARCHAR(64) COMMENT '对话历史 ID', `role` ENUM('user', 'assistant') COMMENT '角色(用户或助理)', `content` TEXT COMMENT '对话内容', `prompt_tokens` INT UNSIGNED DEFAULT 0 COMMENT '提示令牌数', `total_tokens` INT UNSIGNED DEFAULT 0 COMMENT '总令牌数', `completion_tokens` INT UNSIGNED DEFAULT 0 COMMENT '完成令牌数', `prompt_ms` INT UNSIGNED DEFAULT 0 COMMENT '提示耗时(毫秒)', `total_ms` INT UNSIGNED DEFAULT 0 COMMENT '总耗时(毫秒)', `completion_ms` INT UNSIGNED DEFAULT 0 COMMENT '完成耗时(毫秒)', `creator` BIGINT COMMENT '创建者', `create_date` DATETIME COMMENT '创建时间', `updater` BIGINT COMMENT '更新者', `update_date` DATETIME COMMENT '更新时间', PRIMARY KEY (`id`), INDEX `idx_ai_chat_message_user_id_chat_id_role` (`user_id`, `chat_id`) COMMENT '用户 ID、聊天会话 ID 和角色的联合索引,用于快速检索对话记录', INDEX `idx_ai_chat_message_created_at` (`create_date`) COMMENT '创建时间的索引,用于按时间排序或检索对话记录' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='对话信息表';