Files
ftb-project-management/apps/server/src/modules/xiaobao-ai/xiaobao-ai.worker.ts

31 lines
1.3 KiB
TypeScript

import { Injectable, OnModuleInit } from '@nestjs/common';
import { BackgroundJobWorker } from '../jobs/background-job.worker';
import { XIAOBAO_AI_INTERPRET_JOB, XiaobaoAiInterpretPayload } from './xiaobao-ai.types';
import { XiaobaoAiService } from './xiaobao-ai.service';
@Injectable()
export class XiaobaoAiWorker implements OnModuleInit {
constructor(
private readonly worker: BackgroundJobWorker,
private readonly xiaobaoAi: XiaobaoAiService,
) {}
onModuleInit() {
this.worker.registerHandler(XIAOBAO_AI_INTERPRET_JOB, async (payload) => {
await this.xiaobaoAi.runInterpretation(readPayload(payload));
});
}
}
function readPayload(payload: unknown): XiaobaoAiInterpretPayload {
if (!payload || typeof payload !== 'object') {
throw new Error('xiaobao.ai.interpret requires payload.versionId and payload.riskSignature');
}
const versionId = (payload as { versionId?: unknown }).versionId;
const riskSignature = (payload as { riskSignature?: unknown }).riskSignature;
if (typeof versionId !== 'string' || !versionId.trim() || typeof riskSignature !== 'string' || !riskSignature.trim()) {
throw new Error('xiaobao.ai.interpret requires payload.versionId and payload.riskSignature');
}
return { versionId: versionId.trim(), riskSignature: riskSignature.trim() };
}