🎯 目標
建立一個最小可用(MVP)的 ETL 工作流:抓→清→驗→載入(MySQL)
一鍵執行與排程:CLI 觸發、可觀察(UI/日誌/重試)
🧰 環境與版本建議(與前面相容)
Python:3.11.x(沿用你前面規劃)
套件:flytekit==1.13+、pydantic<2(或用 flytekitplugins-pydantic 對應 v2)
容器:Docker Desktop(Apple Silicon OK)
DB:MySQL 8.4(你已裝好)
本機目錄(建議):
專案骨架(Flyte)
在 ~/mywork/ml_antiaging_flyte/ 建立:
🚀 安裝 & 啟動(Sandbox/Local 二選一)
A) Flyte Sandbox(建議先用)
B) Local Execution(不啟控制面,純本機)
直接用 pyflyte run 在你電腦上執行任務(適合快速開發)
後面上傳/排程再切 sandbox
🔗 與 Spring Boot 的銜接
你的 API /api/effects、/api/recommendations 不用改。
ETL 跑完後,MySQL 的 evidence 會更新;API 讀的就是最新資料。
若要自動化:可以在 Flyte 的最後一個 task 加一行 cache bust(打 Spring 的管理端點,如 /admin/recache?effectId=E001),等 Day12 的管理介面就緒再接。
✅ 驗收(Day17)
pyflyte run wf_etl_day3 --effect-id E001 回傳新增筆數(整數)
curl "http://localhost:8080/api/recommendations?effectId=E001" 能看到剛載入的資料
Sandbox 模式下,能在 UI 看到 workflow/任務日誌與狀態