iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0
AI & Data

ML/DL實作-「營養抗老」專題製作系列 第 10

Day 10_食物成分對應 + 推薦結果整合交互警示

  • 分享至 

  • xImage
  •  
🎯 目標

建立 food_compounds 對照表,打通「食物 ↔ 成分」

/api/recommendations 回傳時,能附帶「此食物涉及的成分可能與哪些藥物有交互作用」

讓 API 在建議清單中直接帶簡單的警示資訊(例如:某食物與抗凝血藥交互 → 顯示「⚠ 可能影響抗凝血」)

🛠 工作項目
1. 資料庫設計

新表:food_compounds
意義:

foods:番茄

compounds:番茄紅素

food_compounds:番茄含有番茄紅素(來源:PubMed/USDA/DrugBank cross-ref)

2. ETL 任務

準備 etl/food_compounds_min.csv(少量資料即可跑通:黑芝麻→銅、番茄→番茄紅素、鮭魚→Omega-3 等)

腳本 import_food_compounds.sh:

INSERT IGNORE compounds(name)

JOIN food name → 插入 food_compounds

3. DAO / RowMapper

FoodCompoundDao.findCompoundsByFoodId(foodId) → 回 List<CompoundDto>

InteractionDao.findByCompoundId(compoundId) → 已有(Day 9)

4. RecommendationService 整合

Day 6 已有:RuleScoringStrategy 算分

Day 10 加強:

查 food_id → 找 food_compounds → 找 interactions

將「是否有交互」附加到 RecommendationItem,例如:
5. RecommendationResponse DTO 改造

RecommendationItem 新增欄位:

List<InteractionSummary> interactions

InteractionSummary(輕量版 DTO):
6. 驗收 API

/api/recommendations?effectId=E002 →
回傳食物清單,部分食物帶 interactions(至少 1 筆)

/api/interactions?food=番茄 → 能查出對應藥物交互

/api/effects → 不受影響,仍正常
✅ 驗收清單

food_compounds 成功建表 & 匯入

curl "http://localhost:8081/api/recommendations?effectId=E002"

番茄項目下方應出現 interactions 陣列

curl "http://localhost:8081/api/interactions?food=番茄"

能查出同樣的交互資料(和 Day 9 一致)

📦 交付物

db/schema_day10.sql:新增 food_compounds

etl/food_compounds_min.csv、etl/import_food_compounds.sh

dto/InteractionSummary.java

dao/FoodCompoundDao.java + impl + FoodCompoundRowMapper.java

service/RecommendationService.java 改造 → 整合交互

README_DAY10.md:說明如何導入、測試、範例輸出


上一篇
Day 9_DrugBank 交互查詢 MVP(只讀、可查、可擴充)
下一篇
Day 11_搜尋 / QA 強化(全文檢索起手式)
系列文
ML/DL實作-「營養抗老」專題製作14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言