feat: 啟用 staging 真實轉檔 + 修 ref_images/promote OAuth bug #1

Merged
jim800121 merged 2 commits from feat/real-conversion-worker into main 2026-06-24 20:47:36 +00:00

2 Commits

Author SHA1 Message Date
f3f0cf1c40 fix(auth): promote 換 token 改用 client_secret_post(修 MC 401 invalid_client)
promote 流程的 OAuth client 去 Member Center(OpenIddict)換 service token 時
用 HTTP Basic Auth 送 client 憑證,但 MC 只接受 client_secret_post(憑證放 form
body),導致 MC 回 401 invalid_client → promote 拿不到 token 去 FAA PUT → 對
visionA 回 500。根因由 visionA 端實測定位(交接檔 converter-promote-oauth-handoff.md)。

改 apps/task-scheduler/src/auth/oauthClient.js:
- client_id/client_secret 從 Authorization Basic header 移進 form body(既有 body
  上新增、保留 grant_type/scope/audience)
- 移除 Authorization header 與 buildBasicAuthHeader() + _internals export
- 檔頭 design 註解更新為 client_secret_post,避免被改回 Basic

安全約束維持:client_secret 僅進必要 body、絕不進任何 log(既有 "secret never in
log" 測試跑全路徑 grep 驗證、現變成 body 帶 secret 情境的鎖)。

test:oauthClient.test.js 改斷言鎖「headers 無 Authorization + body 含 client_id/
client_secret」防回退。scheduler 全套件 666 pass。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 23:07:10 +08:00
0cae1b1130 feat(worker): 啟用 staging 真實轉檔(取代 stub)+ 修 ref_images S3 path
staging worker 原本跑 WORKER_MODE=stub(假轉檔、產佔位 NEF),visionA 因此反映拿到的是 stub。本次讓真實轉檔上線並打通 onnx→bie→nef 完整鏈路。

新增:
- services/workers/Dockerfile.real:真實版 worker image,COPY repo 自帶 ktc/ + toolchain/prebuild(2GB),設 USE_PREBUILD/LD_LIBRARY_PATH/PYTHONPATH/KTC_DISABLE_MP/WORKER_MODE=real;排除 libs/dynasty+libs/compiler 省 3.2G
- .dockerignore:控制 build context(排除被 USE_PREBUILD 取代的舊系統 binaries)
- docker-compose.real.yml:override 三 worker 改用 registry image,保留 base stub build 供一鍵 rollback

修正(e2e 抓到的兩個問題):
- jobService.js: ref_images S3 key 由 jobs/{id}/ref_images/ 改為 jobs/{id}/input/ref_images/,對齊系統主約定(local.js/legacy.js/bie worker consumer.py),修好 bie 量化抓不到 dataset 的 blocker。加 contract guard test 鎖死寫入 prefix == worker 讀取 prefix
- security.md: 同步 ref_images S3 key 路徑描述

驗證(staging e2e):
- platform 530(與模型相符)下 onnx→bie→nef 全綠,產真 NEF 636KB(合法 FlatBuffer、非 STUB),/result 可拉、結果上 MinIO
- 已知約定:呼叫端 platform 必須與模型量化 platform 一致(配錯會在 bie 量化階段失敗)

scheduler 全套件 667 tests pass。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 12:43:24 +08:00