feat: add batched recipe import queue

This commit is contained in:
2026-08-28 11:09:36 +09:00
parent 4491c91455
commit f65e660184
19 changed files with 1080 additions and 262 deletions
+33
View File
@@ -75,3 +75,36 @@ test('MiniMax 사고 과정 분리와 충분한 출력 한도를 요청한다',
assert.match(request.messages[0].content, /수량, 온도, 시간 값은 변환하지 않습니다/);
assert.equal(result.ingredientGroups[0].name, '재료');
});
test('여러 본문과 jobId를 MiniMax 단일 요청으로 보내고 각각 검증한다', async () => {
const requests = [];
const client = {
chat: {
completions: {
async create(parameters) {
requests.push(parameters);
const sources = JSON.parse(parameters.messages[1].content).sources;
return {
choices: [{
message: {
content: JSON.stringify({
results: sources.map(({ jobId }) => ({ jobId, recipe: recipeDraft })),
}),
},
}],
};
},
},
},
};
const service = new RecipeParserService({ client, model: 'MiniMax-M2.7' });
const results = await service.parseMany([
{ jobId: 'job-1', source: { platform: 'instagram', title: null, rawText: '본문 1' } },
{ jobId: 'job-2', source: { platform: 'youtube', title: '제목', rawText: '본문 2' } },
]);
assert.equal(requests.length, 1);
assert.equal(requests[0].max_completion_tokens, 16384);
assert.deepEqual(results.map(({ jobId }) => jobId), ['job-1', 'job-2']);
assert.deepEqual(results.map(({ recipe }) => recipe), [recipeDraft, recipeDraft]);
});