🎯 目標
在 mySpringbootmall 專案中,整合 ONNX Runtime,支援 小型模型推論
提供 API /api/recommendations/ai,回傳模型排序結果
保持相容性:若無模型,仍可 fallback 到規則評分
🛠 工作項目
1) 環境與依賴
pom.xml 加入 ONNX Runtime Java 依賴:
模型檔:resources/models/recommender.onnx
(Day 14 先用 mock/tiny 模型,E001/E002 測試即可)
2) Service 層整合
建立 AiRecommendationService:
載入 ONNX 模型
將 food/evidence 特徵轉換為向量
呼叫 OrtSession.run(inputs)
回傳排序後的清單
3) Controller API
/api/recommendations/ai?effectId=E001
流程:
先用 EvidenceDao 抓出 raw 列表
丟給 AiRecommendationService.rerank()
回傳排序後的結果
4) 測試計畫
單元測試
確認 AiRecommendationService 可以載入模型(mock 模型返回固定分數)
整合測試
GET /api/recommendations/ai?effectId=E001 → JSON 包含 score 欄位
GET /api/recommendations/ai?effectId=E002 → 順序應和規則版不同(模擬模型排序效果)
✅ 驗收標準
pom.xml 可成功編譯 ONNX Runtime
/api/recommendations/ai 可回傳分數 (score)
無模型或發生錯誤時 → fallback 到規則版
測試 API:
📦 交付物
src/main/java/com/grace/mySpringbootmall/service/AiRecommendationService.java
src/main/java/com/grace/mySpringbootmall/controller/AiRecommendationController.java
src/main/resources/models/recommender.onnx(假模型,可用隨機分數代替)
更新後的 pom.xml