Files
massive-cloud/docker/mysql/init.sql

167 lines
6.9 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 宏量点云处理软件 - 数据库初始化脚本
-- 该脚本在MySQL容器首次启动时自动执行
-- 后续增量迁移由 server/_core/index.ts runMigrations() 从 drizzle/*.sql 自动应用
-- 设置字符集
SET NAMES utf8mb4;
SET CHARACTER SET utf8mb4;
-- 确保数据库存在
CREATE DATABASE IF NOT EXISTS pointcloud_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
USE pointcloud_db;
-- 用户表
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
openId VARCHAR(64) NOT NULL UNIQUE,
name TEXT,
email VARCHAR(320),
loginMethod VARCHAR(64),
role ENUM('user', 'admin') NOT NULL DEFAULT 'user',
createdAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
lastSignedIn TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
INDEX idx_openId (openId),
INDEX idx_email (email(255))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 点云项目表(旧版,兼容保留)
CREATE TABLE IF NOT EXISTS point_cloud_projects (
id INT AUTO_INCREMENT PRIMARY KEY,
userId INT NOT NULL,
name VARCHAR(255) NOT NULL,
description TEXT,
cadModelUrl TEXT,
cadModelName VARCHAR(255),
totalChunks INT NOT NULL DEFAULT 0,
processedChunks INT NOT NULL DEFAULT 0,
totalPoints BIGINT NOT NULL DEFAULT 0,
status ENUM('pending', 'uploading', '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,
INDEX idx_userId (userId),
INDEX idx_status (status),
FOREIGN KEY (userId) REFERENCES users(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 点云数据块表(旧版,兼容保留)
CREATE TABLE IF NOT EXISTS point_cloud_chunks (
id INT AUTO_INCREMENT PRIMARY KEY,
projectId INT NOT NULL,
chunkIndex INT NOT NULL,
fileName VARCHAR(255) NOT NULL,
fileUrl TEXT NOT NULL,
fileSize BIGINT NOT NULL DEFAULT 0,
pointCount INT NOT NULL DEFAULT 0,
status ENUM('pending', 'uploading', 'processing', 'completed', 'error') NOT NULL DEFAULT 'pending',
lodLevel INT NOT NULL DEFAULT 0,
boundingBox JSON,
createdAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_projectId (projectId),
INDEX idx_status (status),
UNIQUE KEY uk_project_chunk (projectId, chunkIndex),
FOREIGN KEY (projectId) REFERENCES point_cloud_projects(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- CAD模型表(旧版,兼容保留)
CREATE TABLE IF NOT EXISTS cad_models (
id INT AUTO_INCREMENT PRIMARY KEY,
userId INT NOT NULL,
name VARCHAR(255) NOT NULL,
format VARCHAR(32) NOT NULL,
fileUrl TEXT NOT NULL,
fileSize BIGINT NOT NULL DEFAULT 0,
vertices INT NOT NULL DEFAULT 0,
faces INT NOT NULL DEFAULT 0,
boundingBox JSON,
createdAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
INDEX idx_userId (userId),
FOREIGN KEY (userId) REFERENCES users(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 分析结果表(旧版,兼容保留)
CREATE TABLE IF NOT EXISTS analysis_results (
id INT AUTO_INCREMENT PRIMARY KEY,
projectId INT NOT NULL,
analysisType ENUM('error', 'measurement', 'compression') NOT NULL,
resultData JSON NOT NULL,
createdAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
INDEX idx_projectId (projectId),
INDEX idx_type (analysisType),
FOREIGN KEY (projectId) REFERENCES point_cloud_projects(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ─── 车系/车型/检测任务/分析结果 层级结构 ──────────────────────────────────────
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
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
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
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
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
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
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
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
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
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `task_analysis_results` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`taskId` INT NOT NULL,
`type` ENUM('error_analysis','measurement','compression','smooth_heatmap','assembly_inspection','obj_deviation') 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
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 创建默认管理员用户 (内网部署使用)
INSERT INTO users (openId, name, email, role) VALUES
('admin-local', '系统管理员', 'admin@localhost', 'admin')
ON DUPLICATE KEY UPDATE name = VALUES(name);
-- 输出初始化完成信息
SELECT 'Database initialization completed successfully!' AS message;