From 8776f1e7ca1e09f3b1a8cc59456cb70d954c87aa Mon Sep 17 00:00:00 2001 From: wangdl Date: Mon, 22 Jun 2026 21:07:20 +0800 Subject: [PATCH] fix: circular dependency AiRuntimeModule <-> AiJobModule M-AI-07-05 added AiJobModule import to AiRuntimeModule, but AiJobModule already imports AiRuntimeModule (for SnapshotBuilderService). Use forwardRef(() => AiJobModule) to break the cycle. Root cause of deploy crash-loop: NestJS UndefinedModuleException at AiJobModule imports index [1] (AiRuntimeModule was undefined). Co-Authored-By: Claude --- src/modules/ai-runtime/ai-runtime.module.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/ai-runtime/ai-runtime.module.ts b/src/modules/ai-runtime/ai-runtime.module.ts index 4e60707..cf903d0 100644 --- a/src/modules/ai-runtime/ai-runtime.module.ts +++ b/src/modules/ai-runtime/ai-runtime.module.ts @@ -1,4 +1,4 @@ -import { Module } from '@nestjs/common'; +import { Module, forwardRef } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; import { PrismaModule } from '../../infrastructure/database/prisma.module'; import { AiJobModule } from '../ai-job/ai-job.module'; @@ -16,7 +16,7 @@ import { JobReaperService } from './job-reaper.service'; import { QuizExecutionRouter } from './quiz-execution-router'; @Module({ - imports: [ConfigModule, PrismaModule, AiJobModule], + imports: [ConfigModule, PrismaModule, forwardRef(() => AiJobModule)], controllers: [UserAiController, RuntimeInternalController], providers: [UserAiService, CredentialEncryptionService, RuntimeInternalService, UserAiQuotaService, PlatformBudgetService, SnapshotBuilderService, PriorityRulesService, SnapshotCleanupService, JobReaperService, QuizExecutionRouter], exports: [UserAiService, CredentialEncryptionService, RuntimeInternalService, UserAiQuotaService, PlatformBudgetService, SnapshotBuilderService, PriorityRulesService, SnapshotCleanupService, JobReaperService],