-- 初始化数据库表 -- 创建device_configs表 CREATE TABLE IF NOT EXISTS `device_configs` ( `id` INT NOT NULL AUTO_INCREMENT, `device_id` VARCHAR(64) NOT NULL, `selected_role_key` VARCHAR(64) NOT NULL, `preferred_language` VARCHAR(10) NULL, `volume` INT NULL, `last_update_time` FLOAT NOT NULL, `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE INDEX `device_id_UNIQUE` (`device_id` ASC) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 创建conversation_histories表 CREATE TABLE IF NOT EXISTS `conversation_histories` ( `id` INT NOT NULL AUTO_INCREMENT, `device_id` VARCHAR(64) NOT NULL, `role_key` VARCHAR(64) NOT NULL, `last_interaction_time` FLOAT NOT NULL, `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), INDEX `idx_device_id` (`device_id` ASC), INDEX `idx_role_key` (`role_key` ASC) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 创建conversation_messages表 CREATE TABLE IF NOT EXISTS `conversation_messages` ( `id` INT NOT NULL AUTO_INCREMENT, `conversation_id` INT NOT NULL, `is_user` TINYINT(1) NOT NULL DEFAULT 0, `content` TEXT NOT NULL, `timestamp` FLOAT NOT NULL, `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), INDEX `idx_conversation_id` (`conversation_id` ASC), CONSTRAINT `fk_messages_conversation` FOREIGN KEY (`conversation_id`) REFERENCES `conversation_histories` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 创建roles表 CREATE TABLE IF NOT EXISTS `roles` ( `id` INT NOT NULL AUTO_INCREMENT, `role_key` VARCHAR(64) NOT NULL, `name` VARCHAR(128) NOT NULL, `description` TEXT NULL, `content` TEXT NOT NULL, `default_language` VARCHAR(10) NULL, `asr_provider` VARCHAR(64) NULL, `llm_provider` VARCHAR(64) NULL, `tts_provider` VARCHAR(64) NULL, `competitive_llm_mode` TINYINT(1) NULL, `volcano_model_id` VARCHAR(64) NULL, `volcano_voice_type` VARCHAR(64) NULL, `tencent_voice_type` VARCHAR(64) NULL, `aliyun_voice_name` VARCHAR(64) NULL, `minimax_voice_id` VARCHAR(64) NULL, `url` VARCHAR(255) NULL, `homophones` JSON NULL, `enabled` TINYINT(1) NOT NULL DEFAULT 1, `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE INDEX `role_key_UNIQUE` (`role_key` ASC) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 创建role_languages表 CREATE TABLE IF NOT EXISTS `role_languages` ( `id` INT NOT NULL AUTO_INCREMENT, `role_id` INT NOT NULL, `language_code` VARCHAR(10) NOT NULL, `name` VARCHAR(128) NULL, `content` TEXT NULL, `asr_provider` VARCHAR(64) NULL, `llm_provider` VARCHAR(64) NULL, `tts_provider` VARCHAR(64) NULL, `volcano_voice_type` VARCHAR(64) NULL, `tencent_voice_type` VARCHAR(64) NULL, `aliyun_voice_name` VARCHAR(64) NULL, `minimax_voice_id` VARCHAR(64) NULL, `url` VARCHAR(255) NULL, `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE INDEX `uix_role_language` (`role_id`, `language_code`), CONSTRAINT `fk_role_languages_role` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 创建device_auth表 CREATE TABLE IF NOT EXISTS `device_auth` ( `id` INT NOT NULL AUTO_INCREMENT, `device_id` VARCHAR(64) NOT NULL, `serial_number` VARCHAR(64) NOT NULL, `batch_id` VARCHAR(20) NULL, `is_active` TINYINT(1) NOT NULL DEFAULT 1, `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE INDEX `device_id_UNIQUE` (`device_id` ASC), INDEX `idx_batch_id` (`batch_id` ASC) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 创建device_imei_mapping表 CREATE TABLE IF NOT EXISTS `device_imei_mapping` ( `id` INT NOT NULL AUTO_INCREMENT, `imei` VARCHAR(64) NOT NULL, `device_id` VARCHAR(64) NOT NULL, `serial_number` VARCHAR(64) NOT NULL, `status` VARCHAR(32) NOT NULL DEFAULT 'pending', `activated_at` DATETIME NULL, `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE INDEX `imei_UNIQUE` (`imei` ASC), UNIQUE INDEX `device_id_UNIQUE` (`device_id` ASC), INDEX `idx_device_imei_mapping_status` (`status` ASC) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 创建device_firmware_update表 CREATE TABLE IF NOT EXISTS `device_firmware_update` ( `id` INT NOT NULL AUTO_INCREMENT, `device_id` VARCHAR(64) NOT NULL, `serial_number` VARCHAR(64) NOT NULL, `mac_address` VARCHAR(512) NULL, `firmware_version` VARCHAR(64) NOT NULL, `update_status` VARCHAR(32) NOT NULL DEFAULT 'success', `progress` FLOAT NULL DEFAULT 0.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 INDEX `device_id_UNIQUE` (`device_id` ASC) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 创建system_config表 CREATE TABLE IF NOT EXISTS `system_config` ( `id` INT NOT NULL AUTO_INCREMENT, `config_key` VARCHAR(128) NOT NULL, `config_value` TEXT NULL, `description` VARCHAR(255) NULL, `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE INDEX `config_key_UNIQUE` (`config_key` ASC) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 添加初始角色配置 INSERT INTO `device_configs` (`device_id`, `selected_role_key`, `preferred_language`, `last_update_time`) VALUES ('default', 'assistant', 'zh', UNIX_TIMESTAMP()) ON DUPLICATE KEY UPDATE `selected_role_key`=`selected_role_key`; -- 添加默认系统配置 INSERT INTO `system_config` (`config_key`, `config_value`, `description`) VALUES ('latest_firmware_version', '1.0.0', '最新固件版本'), ('update_firmware_url', 'https://example.com/firmware/latest.bin', '固件更新URL') ON DUPLICATE KEY UPDATE `config_value`=`config_value`; -- 添加默认角色 INSERT INTO `roles` (`role_key`, `name`, `description`, `content`, `default_language`, `enabled`) VALUES ( 'assistant', '智能助手', '默认智能助手角色', '你是一个友好的智能助手,乐于帮助用户解答问题。', 'zh', 1 ) ON DUPLICATE KEY UPDATE `role_key`=`role_key`;