feat: initial commit - massive-cloud point cloud processing system
This commit is contained in:
166
docker/mysql/init.sql
Normal file
166
docker/mysql/init.sql
Normal file
@@ -0,0 +1,166 @@
|
||||
-- 宏量点云处理软件 - 数据库初始化脚本
|
||||
-- 该脚本在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;
|
||||
Reference in New Issue
Block a user