diff --git a/src/modules/ai-job/ai-job.module.ts b/src/modules/ai-job/ai-job.module.ts index 108f818..cb36490 100644 --- a/src/modules/ai-job/ai-job.module.ts +++ b/src/modules/ai-job/ai-job.module.ts @@ -30,7 +30,8 @@ import { SyntheticRegistrationService } from './synthetic-registration.service'; AiJobExecutionEngineImpl, ProjectionExecutor, SyntheticRegistrationService, - { provide: RESULT_PROJECTORS, useClass: SyntheticResultProjector, multi: true } as any, + SyntheticResultProjector, + { provide: RESULT_PROJECTORS, useFactory: (p: SyntheticResultProjector) => [p], inject: [SyntheticResultProjector] } as any, { provide: AI_JOB_EXECUTION_ENGINE, useExisting: AiJobExecutionEngineImpl }, ], exports: [ diff --git a/src/modules/ai-job/projection-executor.service.ts b/src/modules/ai-job/projection-executor.service.ts index 49e48a3..1c6c22d 100644 --- a/src/modules/ai-job/projection-executor.service.ts +++ b/src/modules/ai-job/projection-executor.service.ts @@ -28,13 +28,12 @@ export class ProjectionExecutor { @Inject(RESULT_PROJECTORS) projectors?: ResultProjector[], ) { - if (projectors) { - for (const p of projectors) { + const projectorList = Array.isArray(projectors) ? projectors : []; + for (const p of projectorList) { if (this.projectorMap.has(p.key)) { this.logger.warn(`Duplicate projector key "${p.key}" — overwriting`); } this.projectorMap.set(p.key, p); - } } this.logger.log( `ProjectionExecutor initialized with ${this.projectorMap.size} projector(s): ` +