feat(xiaobao-ai): 后台化风险解读队列

This commit is contained in:
2026-07-08 17:30:50 +08:00
parent c131a0a133
commit 58c98a3a3d
13 changed files with 904 additions and 6 deletions

View File

@@ -0,0 +1,30 @@
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() };
}