From 3b7aa4c79ac73bad08d1913495bef4ed17d206ab Mon Sep 17 00:00:00 2001 From: jim800121chen Date: Mon, 18 May 2026 12:12:55 +0800 Subject: [PATCH] =?UTF-8?q?fix(task-scheduler):=20server.js=20=E6=BC=8F?= =?UTF-8?q?=E5=82=B3=20minio=20dep=20=E7=B5=A6=20jobService=EF=BC=88vision?= =?UTF-8?q?A=20e2e=20=E6=92=9E=E5=88=B0=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit visionA 跑 Phase 0.8b e2e 時 POST /api/v1/jobs 回 502 storage_unavailable。 根因:server.js 建立 jobService 時沒把 minio facade 傳進去、 jobService.js 走 `deps.minio || null` fallback、writeInputToMinIO() 因為 minio=null throw「minio dep is required」、API 回 502。 修法:傳 minio facade 進 createJobService deps。 legacy CRUD 介面(不依賴 minio)行為不變—minio 是 optional dep。 Tests: 666/666 pass(無回歸) Reviewer: ✅ 通過、correctness 軸無 Critical/Major Co-Authored-By: Claude Opus 4.7 (1M context) --- apps/task-scheduler/server.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/task-scheduler/server.js b/apps/task-scheduler/server.js index b1651d8..ff4df68 100644 --- a/apps/task-scheduler/server.js +++ b/apps/task-scheduler/server.js @@ -63,7 +63,11 @@ if (minio.client) { console.log(`[Scheduler] MinIO storage enabled: ${minio.endpoint}/${minio.bucket}`); } const sseService = createSseService(); -const jobService = createJobService({ redis, sseService, jobDataDir: JOB_DATA_DIR }); +// 2026-05-18 e2e bug fix:v1 API `POST /api/v1/jobs` → jobService.writeInputToMinIO 需要 minio facade。 +// 原本 server.js 漏傳 minio dep、jobService.js:68 `deps.minio || null` fallback 成 null、 +// writeInputToMinIO line 358 throw 「minio dep is required」、API 回 502 storage_unavailable。 +// 修法:傳 minio facade 進來。legacy CRUD 介面(沒 minio dep)行為不變—minio 是 optional dep。 +const jobService = createJobService({ redis, sseService, jobDataDir: JOB_DATA_DIR, minio }); // T10:multer uploader 從 config 取上限(修 D5) // - maxFileSize = MULTIPART_MODEL_MAX_BYTES(預設 500MB)