From 4a58e66d9999e4dbc5cb66a27d99756017e03403 Mon Sep 17 00:00:00 2001 From: Iain Sproat <68657+iainsproat@users.noreply.github.com> Date: Mon, 23 Jun 2025 13:45:26 +0100 Subject: [PATCH] feat(file importer): send skp to rhino parser (#4973) --- package.json | 2 +- .../src/controller/filesApi.ts | 2 +- .../src/nextGen/jobProcessor.ts | 1 + .../fileimport-service/src/nextGen/main.ts | 28 +++++++++++-------- .../components/project/CardImportFileArea.vue | 5 +++- packages/frontend-2/composables/globals.ts | 7 +++++ .../lib/core/composables/fileImport.ts | 6 +++- packages/preview-service/src/main.ts | 4 +-- .../modules/fileuploads/queues/fileimports.ts | 2 +- tests/deployment/build-images.tiltfile | 6 ++-- 10 files changed, 41 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index b3ee798b6..e1717fb78 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "dev:docker:down": "docker compose -f ./docker-compose-deps.yml down", "dev:docker:down:volumes": "docker compose -f ./docker-compose-deps.yml down --volumes", "dev:docker:restart": "yarn dev:docker:down && yarn dev:docker:up", - "dev:kind:up": "ctlptl apply --filename ./.tests/deployment/helm/cluster-config.yaml", + "dev:kind:up": "ctlptl apply --filename ./tests/deployment/helm/cluster-config.yaml", "dev:kind:down": "ctlptl delete -f ./tests/deployment/helm/cluster-config.yaml", "dev:kind:helm:up": "yarn dev:kind:up && tilt up --file ./tests/deployment/helm/Tiltfile --context kind-speckle-server", "dev:kind:helm:down": "tilt down --file ./tests/deployment/helm/Tiltfile --context kind-speckle-server", diff --git a/packages/fileimport-service/src/controller/filesApi.ts b/packages/fileimport-service/src/controller/filesApi.ts index 4b3945453..0adf2174c 100644 --- a/packages/fileimport-service/src/controller/filesApi.ts +++ b/packages/fileimport-service/src/controller/filesApi.ts @@ -36,7 +36,7 @@ export async function downloadFile({ boundLogger.info( { destinationFile: destination, downloadUrl: downloadUrl.toString() }, - 'Downloading file {fileId} (project: {streamId}) from ${downloadUrl} to {destinationFile}' + 'Downloading file {fileId} (project: {streamId}) from {downloadUrl} to {destinationFile}' ) let response diff --git a/packages/fileimport-service/src/nextGen/jobProcessor.ts b/packages/fileimport-service/src/nextGen/jobProcessor.ts index 66d40d145..252d62eef 100644 --- a/packages/fileimport-service/src/nextGen/jobProcessor.ts +++ b/packages/fileimport-service/src/nextGen/jobProcessor.ts @@ -84,6 +84,7 @@ export const jobProcessor = async ({ break case 'stl': case 'obj': + case 'skp': await runProcessWithTimeout( taskLogger, RHINO_IMPORTER_PATH, diff --git a/packages/fileimport-service/src/nextGen/main.ts b/packages/fileimport-service/src/nextGen/main.ts index 2682d2c95..45759e901 100644 --- a/packages/fileimport-service/src/nextGen/main.ts +++ b/packages/fileimport-service/src/nextGen/main.ts @@ -76,9 +76,9 @@ export const main = async () => { } catch (err) { if (appState === AppState.SHUTTINGDOWN) { // likely that the job was cancelled due to the service shutting down - jobLogger.warn({ err }, 'Processing {jobId} failed') + jobLogger.warn({ err }, 'Processing job {jobId} failed') } else { - jobLogger.error({ err }, 'Processing {jobId} failed') + jobLogger.error({ err }, 'Processing job {jobId} failed') } if (err instanceof Error) { encounteredError = true @@ -121,19 +121,23 @@ const sendResult = async ({ token: string result: FileImportResultPayload }) => { - const response = await fetch( - `${serverUrl}/api/projects/${projectId}/fileimporter/jobs/${jobId}/results`, - { - method: 'POST', - headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' }, - - body: JSON.stringify(result) - } + const sendResultUrl = new URL( + `/api/projects/${projectId}/fileimporter/jobs/${jobId}/results`, + serverUrl ) + const response = await fetch(sendResultUrl.toString(), { + method: 'POST', + headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' }, + + body: JSON.stringify(result) + }) if (!response.ok) { const text = await response.text() - currentJob?.logger.error({ cause: text }, 'Failed to report job result') - throw new Error(`Failed to report job result: ${text}`) + currentJob?.logger.error( + { cause: text, sendResultUrl: sendResultUrl.toString() }, + 'Failed to report result for job {jobId} to {sendResultUrl}' + ) + throw new Error(`Failed to report result for job ${jobId}: ${text}`) } } diff --git a/packages/frontend-2/components/project/CardImportFileArea.vue b/packages/frontend-2/components/project/CardImportFileArea.vue index 9fc636d42..17c7ad51b 100644 --- a/packages/frontend-2/components/project/CardImportFileArea.vue +++ b/packages/frontend-2/components/project/CardImportFileArea.vue @@ -51,7 +51,7 @@ to publish a {{ modelName ? '' : 'new model' }} version to {{ modelName ? 'this model' : 'this project' }}, or drag and drop a - IFC/OBJ/STL file here. + IFC/OBJ/STL{{ isNextGenFileImporterEnabled ? '/SKP' : '' }} file here.