🎯 目標
強化 API 可用性(分頁 / 篩選 / 錯誤碼一致化)
加上簡單 健康檢查 (healthcheck) 與 版本資訊 端點
撰寫基本 單元測試 + 整合測試,確保 API 穩定
預備部署前的驗收腳本
🛠 工作項目
1) API 增強
/api/effects
支援 ?category=皮膚抗老 篩選
/api/recommendations
支援分頁:?effectId=E002&page=1&size=10
回傳結構新增 total、items:
2) 錯誤處理一致化
延續 Day 12 的 @ControllerAdvice
新增 自訂 Exception:
EffectNotFoundException → 回 404
DataIntegrityException → 回 409
統一 JSON 格式:
3) 健康檢查與版本資訊
/actuator/health → 回應 DB 狀態 OK/FAIL
/actuator/info → 回應 app=MySpringbootmall, version=0.0.1, model.version(若有 ML)
4) 測試計畫
單元測試 (JUnit 5 + Spring Boot Test):
EffectDaoTest.findAll() → 驗證最小資料集有 E001/E002
EvidenceDaoTest.findByEffect() → 驗證 E002 回至少一筆
整合測試 (MockMvc):
GET /api/effects 回 200 且 JSON 包含 "effectId":"E001"
GET /api/recommendations?effectId=E002 回 200 且 items 非空
5) 部署前驗收腳本
新增 scripts/verify_day14.sh,檢查:
✅ 驗收標準
/api/effects 支援篩選分類
/api/recommendations 支援分頁並帶 total
所有錯誤 → JSON 格式一致
mvn test 全部通過
scripts/verify_day13.sh 執行後輸出包含 E001/E002 與 health=UP
📦 交付物
controller/EffectController.java 增加 category 篩選
controller/RecommendationController.java 支援分頁回傳格式
exception/EffectNotFoundException.java、DataIntegrityException.java
src/test/java/.../EffectDaoTest.java
src/test/java/.../EvidenceDaoTest.java
scripts/verify_day13.sh