690608:1520 ADR-035-135 #09
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
// File: src/modules/ai/processors/ai-batch.processor.spec.ts
|
// File: src/modules/ai/processors/ai-batch.processor.spec.ts
|
||||||
// Change Log
|
// Change Log
|
||||||
|
// - 2026-06-08: เพิ่มการทดสอบการส่งตัวเลือก generate (format: json, num_ctx: 16384) สำหรับ migrate-document
|
||||||
// - 2026-05-21: สร้าง Unit Test สำหรับ AiBatchProcessor ครอบคลุม embed-document และ sandbox-rag (T032).
|
// - 2026-05-21: สร้าง Unit Test สำหรับ AiBatchProcessor ครอบคลุม embed-document และ sandbox-rag (T032).
|
||||||
// - 2026-05-21: เพิ่มการทดสอบ sandbox-extract พร้อม mock OcrService, OllamaService และ Redis (T039).
|
// - 2026-05-21: เพิ่มการทดสอบ sandbox-extract พร้อม mock OcrService, OllamaService และ Redis (T039).
|
||||||
// - 2026-05-21: แก้ไข ESLint unexpected any และ unsafe member access โดยกำหนด type ให้ redis เป็น Record<string, jest.Mock>
|
// - 2026-05-21: แก้ไข ESLint unexpected any และ unsafe member access โดยกำหนด type ให้ redis เป็น Record<string, jest.Mock>
|
||||||
@@ -520,7 +521,14 @@ describe('AiBatchProcessor', () => {
|
|||||||
expect(ocrService.detectAndExtract).toHaveBeenCalledWith({
|
expect(ocrService.detectAndExtract).toHaveBeenCalledWith({
|
||||||
pdfPath: '/files/test.pdf',
|
pdfPath: '/files/test.pdf',
|
||||||
});
|
});
|
||||||
expect(ollamaService.generate).toHaveBeenCalledTimes(1);
|
expect(ollamaService.generate).toHaveBeenCalledWith(
|
||||||
|
expect.any(String),
|
||||||
|
expect.objectContaining({
|
||||||
|
format: 'json',
|
||||||
|
timeoutMs: 120000,
|
||||||
|
options: { num_ctx: 16384, num_predict: 4096 },
|
||||||
|
})
|
||||||
|
);
|
||||||
expect(mockTagsService.findOrSuggestTags).toHaveBeenCalledTimes(1);
|
expect(mockTagsService.findOrSuggestTags).toHaveBeenCalledTimes(1);
|
||||||
expect(mockMigrationService.enqueueRecord).toHaveBeenCalledWith(
|
expect(mockMigrationService.enqueueRecord).toHaveBeenCalledWith(
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
// File: src/modules/ai/processors/ai-batch.processor.ts
|
// File: src/modules/ai/processors/ai-batch.processor.ts
|
||||||
// Change Log
|
// Change Log
|
||||||
|
// - 2026-06-08: แก้ไขปัญหา LLM JSON response truncated โดยการเพิ่ม num_ctx เป็น 16384 ใน sandbox-extract, sandbox-ai-extract และ migrate-document
|
||||||
// - 2026-05-15: เพิ่ม processor สำหรับ ai-batch queue ตาม ADR-023A.
|
// - 2026-05-15: เพิ่ม processor สำหรับ ai-batch queue ตาม ADR-023A.
|
||||||
// - 2026-05-15: เพิ่ม EmbeddingService สำหรับ embed-document logic (T022).
|
// - 2026-05-15: เพิ่ม EmbeddingService สำหรับ embed-document logic (T022).
|
||||||
// - 2026-05-21: เพิ่มการรองรับ sandbox-rag และ sandbox-extract สำหรับ Superadmin sandbox.
|
// - 2026-05-21: เพิ่มการรองรับ sandbox-rag และ sandbox-extract สำหรับ Superadmin sandbox.
|
||||||
@@ -533,7 +534,7 @@ export class AiBatchProcessor extends WorkerHost {
|
|||||||
{
|
{
|
||||||
format: 'json',
|
format: 'json',
|
||||||
timeoutMs: 120000,
|
timeoutMs: 120000,
|
||||||
ollamaOptions: { num_ctx: 8192, num_predict: 4096 }, // num_predict ป้องกัน output ถูก truncate
|
ollamaOptions: { num_ctx: 16384, num_predict: 4096 }, // num_predict ป้องกัน output ถูก truncate
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
await this.aiPromptsService.saveTestResult(
|
await this.aiPromptsService.saveTestResult(
|
||||||
@@ -737,7 +738,7 @@ export class AiBatchProcessor extends WorkerHost {
|
|||||||
{
|
{
|
||||||
format: 'json',
|
format: 'json',
|
||||||
timeoutMs: 120000,
|
timeoutMs: 120000,
|
||||||
ollamaOptions: { num_ctx: 8192, num_predict: 4096 }, // num_predict ป้องกัน output ถูก truncate
|
ollamaOptions: { num_ctx: 16384, num_predict: 4096 }, // num_predict ป้องกัน output ถูก truncate
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -930,7 +931,9 @@ export class AiBatchProcessor extends WorkerHost {
|
|||||||
let aiResponse: string;
|
let aiResponse: string;
|
||||||
try {
|
try {
|
||||||
aiResponse = await this.ollamaService.generate(resolvedPrompt, {
|
aiResponse = await this.ollamaService.generate(resolvedPrompt, {
|
||||||
|
format: 'json',
|
||||||
timeoutMs: 120000,
|
timeoutMs: 120000,
|
||||||
|
options: { num_ctx: 16384, num_predict: 4096 },
|
||||||
});
|
});
|
||||||
} catch (err: unknown) {
|
} catch (err: unknown) {
|
||||||
const errMsg = err instanceof Error ? err.message : String(err);
|
const errMsg = err instanceof Error ? err.message : String(err);
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user