feat: upgrade AI prompt with professional FITT prescription, fix token truncation and configure auto deploy
This commit is contained in:
commit
b3fdbc7cbf
3 changed files with 1905 additions and 0 deletions
39
README.md
Normal file
39
README.md
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
# 國小學生跳繩運動紀錄與 BMI 智能建議系統 (Rope Helper)
|
||||||
|
|
||||||
|
專為台灣國小教師與體育教師量身打造的**純前端跳繩體能分析與 AI 運動處方建議系統**。結合**衛福部國健署兒童生長 BMI 對照常模**、**教育部體育署 SH150 普及化運動指引**與 **Google AI Studio (Gemini)** 免費模型。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌟 核心特色
|
||||||
|
|
||||||
|
1. **純前端綠色架構**:
|
||||||
|
- 單一獨立網頁檔 `index.html`,無需安裝 Node.js、Python 或架設後端資料庫。
|
||||||
|
- 所有學生資料均在老師本機瀏覽器內運算解析,確保學童個資安全。
|
||||||
|
2. **彈性 Excel 匯入與範本下載**:
|
||||||
|
- 支援「學生基本資料」與「跳繩打卡紀錄」雙工作表整合活頁簿或分開上傳。
|
||||||
|
- 內建標準 Excel 範本下載與智慧欄位名稱對應。
|
||||||
|
- 預設提供「載入 3 個月示範資料(三年二班 25 位學童連續 90 天打卡數據)」,開箱即用。
|
||||||
|
3. **衛福部兒童 BMI 常模智能判定**:
|
||||||
|
- 內建台灣 6~12 歲兒童生長標準,依性別與實足年齡精準判定「過輕、正常、過重、肥胖」。
|
||||||
|
4. **Google AI Studio 免費 API 串接**:
|
||||||
|
- 老師可直接輸入自己的 Google AI Studio 免費 API Key(安全儲存於本機 localStorage)。
|
||||||
|
- 支援 `gemini-2.5-flash`、`gemini-1.5-flash` 等模型。
|
||||||
|
- 支援「一鍵全班批量生成(內建 15 RPM 速率防護間隔與即時進度條)」與「個別學生生成/重新生成/文字自訂微調」。
|
||||||
|
5. **完整報表匯出與家長通知卡列印**:
|
||||||
|
- 支援匯出含原始紀錄、統計分析與 AI 建議之完整 Excel 報告。
|
||||||
|
- 支援一鍵列印或轉存 PDF 專用之「學生跳繩運動成長卡(A4 親職回饋聯版型)」。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 快速開始使用
|
||||||
|
|
||||||
|
1. **直接開啟**:
|
||||||
|
- 在電腦上直接雙擊打開 [index.html](file:///mnt/Project/Rope_hekper/index.html)(建議使用 Google Chrome、Edge 或 Safari 瀏覽器)。
|
||||||
|
2. **體驗功能**:
|
||||||
|
- 點擊右上角「**載入示範班級資料**」即可立即查看班級數據儀表板與圖表。
|
||||||
|
3. **設定 AI Studio API Key**:
|
||||||
|
- 點擊右上角「**設定 AI Studio Key**」。
|
||||||
|
- 前往 [Google AI Studio](https://aistudio.google.com/app/apikey) 免費取得 API Key 貼上並儲存。
|
||||||
|
- 點擊「**一鍵全班 AI 運動建議生成**」,系統將自動調用 Gemini 為每位學童產生量身打造的跳繩指引。
|
||||||
|
4. **匯出與列印**:
|
||||||
|
- 點擊「**匯出分析 Excel**」或「**列印運動成長卡**」發放給家長。
|
||||||
62
deploy.sh
Executable file
62
deploy.sh
Executable file
|
|
@ -0,0 +1,62 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# ==============================================================================
|
||||||
|
# Rope Helper 自動化部署腳本 (CI/CD Deploy Script)
|
||||||
|
# 目標:將本專案靜態檔案自動部署至本機 Docker (realm-view / Caddy)
|
||||||
|
# 服務網址:https://ridgerealm.com/rope_helper/
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# 定義顏色
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
SKY='\033[0;36m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
RED='\033[0;31m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
PROJECT_DIR="/mnt/Project/Rope_hekper"
|
||||||
|
TARGET_DIR="/mnt/focker/realm-view/public/rope_helper"
|
||||||
|
HEALTH_CHECK_URL="http://127.0.0.1:3333/rope_helper/"
|
||||||
|
|
||||||
|
echo -e "${SKY}======================================================${NC}"
|
||||||
|
echo -e "${SKY}🚀 開始執行 Rope Helper CI/CD 自動化部署流程...${NC}"
|
||||||
|
echo -e "${SKY}======================================================${NC}"
|
||||||
|
|
||||||
|
# 1. 檢查原始檔案
|
||||||
|
if [ ! -f "$PROJECT_DIR/index.html" ]; then
|
||||||
|
echo -e "${RED}❌ 錯誤:找不到來源檔案 $PROJECT_DIR/index.html${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2. 確保目標目錄存在
|
||||||
|
echo -e "${YELLOW}📁 [1/4] 檢查目標伺服器目錄...${NC}"
|
||||||
|
mkdir -p "$TARGET_DIR"
|
||||||
|
|
||||||
|
# 3. 部署同步檔案 (使用 rsync 保持檔案屬性與安全同步)
|
||||||
|
echo -e "${YELLOW}📦 [2/4] 同步靜態網頁檔案至 Docker Web 目錄...${NC}"
|
||||||
|
rsync -av --delete \
|
||||||
|
--exclude=".git" \
|
||||||
|
--exclude=".github" \
|
||||||
|
--exclude=".forgejo" \
|
||||||
|
--exclude="deploy.sh" \
|
||||||
|
--exclude="*.swp" \
|
||||||
|
"$PROJECT_DIR/" "$TARGET_DIR/"
|
||||||
|
|
||||||
|
# 4. 檔案權限設定
|
||||||
|
echo -e "${YELLOW}🔒 [3/4] 校正檔案存取權限...${NC}"
|
||||||
|
chmod -R 755 "$TARGET_DIR"
|
||||||
|
|
||||||
|
# 5. 健康檢查 (Health Check)
|
||||||
|
echo -e "${YELLOW}🩺 [4/4] 執行服務健康狀態檢查...${NC}"
|
||||||
|
HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$HEALTH_CHECK_URL" || echo "000")
|
||||||
|
|
||||||
|
if [ "$HTTP_STATUS" -eq 200 ] || [ "$HTTP_STATUS" -eq 304 ]; then
|
||||||
|
echo -e "${GREEN}✅ 健康檢查通過 (HTTP $HTTP_STATUS)${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠️ 內部測試回應碼為 $HTTP_STATUS,但檔案已成功同步。${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${GREEN}======================================================${NC}"
|
||||||
|
echo -e "${GREEN}🎉 部署完成!${NC}"
|
||||||
|
echo -e "${GREEN}🌐 網站正式網址:https://ridgerealm.com/rope_helper/${NC}"
|
||||||
|
echo -e "${GREEN}======================================================${NC}"
|
||||||
1804
index.html
Normal file
1804
index.html
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue