🎯 目標
產出可重現建置:單一指令建置/啟動/驗收
提供兩種部署路徑(擇一或都做)
本機/內網 Docker Compose(App + MySQL)
Hugging Face Spaces(後端 API + README Demo,或前端頁作為 API Client)
交付最終文件(README、運維手冊、API 說明、資料表字典)
🛠 工作項目
1) 打包與版本
mvn -B -DskipTests clean package → 產出 fat jar
Dockerfile
版本標籤:v0.1.0(git tag、容器 image tag 一致)
2) 部署選項 A:本機/內網 Docker Compose
docker-compose.yml
db/init/ 放 schema.sql + Day4 data.sql(自動初始化)
驗收:
3) 部署選項 B:Hugging Face Spaces
方案 1:Gradio/Streamlit 前端 → 呼叫本機或雲端 API(最省事)
方案 2:純後端 Space (Docker)
README.md 描述 API、測試方法
space.yaml 指定 Docker Space
環境變數以 HF Secrets 設定(SPRING_DATASOURCE_*);若無外部 DB,可先上傳SQLite 或改為 H2 demo
Demo 頁(可選):提供簡單搜尋/推薦表單,展示 E001/E002
4) 可觀測與健康檢查(最小集合)
開啟 spring-boot-starter-actuator:/actuator/health、/actuator/info
info 顯示:appVersion、gitSha、(若有)model.version
簡易存活檢查:/actuator/health must be UP 才視為通過
5) 安全與設定
.env.sample:集中 SPRING_DATASOURCE_*、SERVER_PORT
產線預設把 logging.level 降為 WARN;移除 SQL 調試日誌
CORS(如要開前端 Demo):允許 OPTIONS, GET 來源 * 或限定域名
匯出 Postman/requests.http 以利外部驗收
📦 最終交付物
Dockerfile、docker-compose.yml、.env.sample
scripts/verify_final.sh、scripts/import_day4.sh(保留)
db/init/schema.sql、db/init/data.sql(或以 README 指示先執行)
docs/README_DEPLOY.md(本機/Space 兩種部署法、環境變數、測試指令)
docs/API.md(/api/effects、/api/recommendations、/api/search(若已做)、錯誤格式)
(可選)requests.http 或 Postman collection