-- 迁移:引入车系/车型/检测任务/分析结果层级结构 -- 旧表保留不动(数据兼容),新表全部创建 -- 车系 CREATE TABLE IF NOT EXISTS `vehicle_series` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(100) NOT NULL, `description` TEXT, `createdAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `updatedAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); -- 车型 CREATE TABLE IF NOT EXISTS `vehicle_models` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `seriesId` INT NOT NULL, `name` VARCHAR(100) NOT NULL, `description` TEXT, `createdAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `updatedAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); -- 车型 CAD 文件(低频变更,一对多) CREATE TABLE IF NOT EXISTS `model_cad_files` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `modelId` INT NOT NULL, `name` VARCHAR(255) NOT NULL, `format` VARCHAR(32) NOT NULL, `fileSize` BIGINT NOT NULL, `filePath` VARCHAR(512) NOT NULL, `createdAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); -- 检测任务(每次上车检测 = 一条记录) CREATE TABLE IF NOT EXISTS `inspection_tasks` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `modelId` INT NOT NULL, `name` VARCHAR(255) NOT NULL, `inspector` VARCHAR(100), `notes` TEXT, `status` ENUM('pending','processing','completed','error') NOT NULL DEFAULT 'pending', `createdAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `updatedAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `completedAt` TIMESTAMP NULL ); -- 任务点云文件(每次检测可有多个点云文件) CREATE TABLE IF NOT EXISTS `task_pointcloud_files` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `taskId` INT NOT NULL, `name` VARCHAR(255) NOT NULL, `fileSize` BIGINT NOT NULL, `filePath` VARCHAR(512) NOT NULL, `createdAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); -- 任务分析结果(可多次运行,支持回放) CREATE TABLE IF NOT EXISTS `task_analysis_results` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `taskId` INT NOT NULL, `type` ENUM('error_analysis','measurement','compression') NOT NULL, `status` ENUM('pending','processing','completed','error') NOT NULL DEFAULT 'pending', `errorStats` JSON, `measurements` JSON, `resultData` JSON, `createdAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `updatedAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );