From 0bf1311bcf992e76d3e3b58f17c1ee0f30b1e2c1 Mon Sep 17 00:00:00 2001 From: Vasilica Olariu Date: Wed, 17 Dec 2025 17:09:55 +0200 Subject: [PATCH] PS-489 - when receiving SubmissionScanCompleteHandler, check if ai workflows have already been queued. if so, prevent further queueing --- .../global/submission-scan-complete.orchestrator.ts | 12 ++++++++++++ src/shared/modules/global/workflow-queue.handler.ts | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/shared/modules/global/submission-scan-complete.orchestrator.ts b/src/shared/modules/global/submission-scan-complete.orchestrator.ts index 9d0556e..3032e64 100644 --- a/src/shared/modules/global/submission-scan-complete.orchestrator.ts +++ b/src/shared/modules/global/submission-scan-complete.orchestrator.ts @@ -49,6 +49,18 @@ export class SubmissionScanCompleteOrchestrator { return; } + // check if workflow runs have already been queued for this submission + const alreadyQueued = await this.workflowQueueHandler.hasQueuedWorkflowRuns( + submissionId, + ); + + if (alreadyQueued) { + this.logger.log( + `AI workflow runs already queued for submission ${submissionId}. Skipping queueing.`, + ); + return; + } + await this.workflowQueueHandler.queueWorkflowRuns( challenge.workflows, challenge.id, diff --git a/src/shared/modules/global/workflow-queue.handler.ts b/src/shared/modules/global/workflow-queue.handler.ts index 1c230bd..e6caef1 100644 --- a/src/shared/modules/global/workflow-queue.handler.ts +++ b/src/shared/modules/global/workflow-queue.handler.ts @@ -79,6 +79,18 @@ export class WorkflowQueueHandler implements OnModuleInit { }); } + async hasQueuedWorkflowRuns(submissionId: string): Promise { + if (!submissionId) return false; + + const existing = await this.prisma.aiWorkflowRun.findFirst({ + where: { + submissionId, + }, + }); + + return !!existing; + } + async handleQueuedWorkflowRun([job]: [Job]) { this.logger.log(`Processing job ${job.id}`);