feat: add model file library links
This commit is contained in:
22
drizzle/0010_model_library_task_links.sql
Normal file
22
drizzle/0010_model_library_task_links.sql
Normal file
@@ -0,0 +1,22 @@
|
||||
-- 车型点云库,以及任务输入对车型库文件的轻量关联
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `model_pointcloud_files` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`modelId` INT NOT NULL,
|
||||
`name` VARCHAR(255) NOT NULL,
|
||||
`fileSize` BIGINT NOT NULL,
|
||||
`filePath` VARCHAR(512) NOT NULL,
|
||||
`createdAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `idx_model_pointcloud_files_modelId` (`modelId`)
|
||||
);
|
||||
|
||||
ALTER TABLE `task_pointcloud_files`
|
||||
ADD COLUMN `sourceModelPointcloudId` INT NULL
|
||||
AFTER `sourceResultId`;
|
||||
|
||||
ALTER TABLE `task_cad_files`
|
||||
ADD COLUMN `source` VARCHAR(32) NOT NULL DEFAULT 'uploaded'
|
||||
AFTER `filePath`,
|
||||
ADD COLUMN `sourceModelCadFileId` INT NULL
|
||||
AFTER `source`;
|
||||
5
drizzle/0011_registration_source_pointcloud.sql
Normal file
5
drizzle/0011_registration_source_pointcloud.sql
Normal file
@@ -0,0 +1,5 @@
|
||||
-- 记录配准产物来自哪个任务点云文件,用于阻止链式配准并检测重复配准
|
||||
|
||||
ALTER TABLE `task_pointcloud_files`
|
||||
ADD COLUMN `sourcePointcloudFileId` INT NULL
|
||||
AFTER `sourceResultId`;
|
||||
@@ -62,6 +62,21 @@ export const modelCadFiles = mysqlTable("model_cad_files", {
|
||||
export type ModelCadFile = typeof modelCadFiles.$inferSelect;
|
||||
export type InsertModelCadFile = typeof modelCadFiles.$inferInsert;
|
||||
|
||||
// ─── 车型点云文件 ─────────────────────────────────────────────────────────────
|
||||
// 一个车型可维护多个通用点云文件,供任务按需关联复用
|
||||
|
||||
export const modelPointcloudFiles = mysqlTable("model_pointcloud_files", {
|
||||
id: int("id").autoincrement().primaryKey(),
|
||||
modelId: int("modelId").notNull(),
|
||||
name: varchar("name", { length: 255 }).notNull(),
|
||||
fileSize: bigint("fileSize", { mode: "number" }).notNull(),
|
||||
filePath: varchar("filePath", { length: 512 }).notNull(),
|
||||
createdAt: timestamp("createdAt").defaultNow().notNull(),
|
||||
});
|
||||
|
||||
export type ModelPointcloudFile = typeof modelPointcloudFiles.$inferSelect;
|
||||
export type InsertModelPointcloudFile = typeof modelPointcloudFiles.$inferInsert;
|
||||
|
||||
// ─── 任务 CAD 文件 ─────────────────────────────────────────────────────────────
|
||||
// 每个任务可关联任意个 CAD 文件(与车型级 CAD 独立,用于本次检测的实测参考)
|
||||
|
||||
@@ -72,6 +87,10 @@ export const taskCadFiles = mysqlTable("task_cad_files", {
|
||||
format: varchar("format", { length: 32 }).notNull(),
|
||||
fileSize: bigint("fileSize", { mode: "number" }).notNull(),
|
||||
filePath: varchar("filePath", { length: 512 }).notNull(),
|
||||
/** 来源:uploaded = 用户上传;model_library = 车型 CAD 库关联 */
|
||||
source: varchar("source", { length: 32 }).default("uploaded").notNull(),
|
||||
/** 来源车型 CAD 文件 ID(仅 model_library 时有值) */
|
||||
sourceModelCadFileId: int("sourceModelCadFileId"),
|
||||
createdAt: timestamp("createdAt").defaultNow().notNull(),
|
||||
});
|
||||
|
||||
@@ -105,10 +124,14 @@ export const taskPointcloudFiles = mysqlTable("task_pointcloud_files", {
|
||||
name: varchar("name", { length: 255 }).notNull(),
|
||||
fileSize: bigint("fileSize", { mode: "number" }).notNull(),
|
||||
filePath: varchar("filePath", { length: 512 }).notNull(),
|
||||
/** 来源:uploaded = 用户上传;registered = 配准算法产出 */
|
||||
/** 来源:uploaded = 用户上传;registered = 配准算法产出;model_library = 车型点云库关联 */
|
||||
source: varchar("source", { length: 32 }).default("uploaded").notNull(),
|
||||
/** 产出该点云的分析结果 ID(仅 registered 时有值) */
|
||||
sourceResultId: int("sourceResultId"),
|
||||
/** 生成该配准产物的原始任务点云 ID(仅 registered 时有值) */
|
||||
sourcePointcloudFileId: int("sourcePointcloudFileId"),
|
||||
/** 来源车型点云文件 ID(仅 model_library 时有值) */
|
||||
sourceModelPointcloudId: int("sourceModelPointcloudId"),
|
||||
createdAt: timestamp("createdAt").defaultNow().notNull(),
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user