這是一個專為國立政治大學學生設計的開源工具「NCCU Pro」,透過上傳從校務全人系統匯出的「課業學習」JSON 檔案,即可快速檢核學分學程或微學程的修習進度,並提供智慧推薦功能,挖掘您潛在的學程資格。
本專案已正式佈署,您可以直接訪問以下網址使用:
- 前端介面: https://nccupro.onrender.com
- 後端 API 服務:
https://program-checker-backend.onrender.com
- 🔮 智慧學程推薦: 系統自動分析您的修課紀錄,計算所有學程的完成度,並推薦匹配度最高的學程,讓您不錯過任何取得證書的機會。
- ✏️ 自選學程檢核: 支援學分學程、微學程及院級專長學程(如商學院)的進度檢核,清楚列出已修畢、修習中及缺漏的科目。
- 📊 視覺化報告: 清晰呈現各分類(如必修、選修、群組要求)的門數與學分達成率,並自動處理複雜的規則(如:通識限修一門、同性質課程擇一認列、平均成績門檻等)。
- 📱 PWA 支援: 支援漸進式網頁應用 (PWA),可直接安裝至手機或電腦桌面,享受原生 App 般的流暢體驗與離線瀏覽功能。
- 🎭 資料隱私優先: 採用「資料不落地」原則,檢核過程僅在伺服器記憶體中進行運算,絕不儲存您的成績單或個人資料。
- 🎨 現代化介面: 結合 Vue 3 與 Tailwind CSS,提供拖曳上傳、側邊欄清單管理與流暢的動畫效果。
| 類別 | 技術名稱 | 說明 |
|---|---|---|
| 後端 (Backend) | Go (Golang) | 使用 gorilla/mux 處理路由,實作高效的核心檢核邏輯與 RESTful API。 |
| 前端 (Frontend) | Vue 3 (Composition API) | 使用 Vite 建置,結合 Tailwind CSS 與 PWA 技術 (Service Worker) 打造現代化 UI。 |
| 資料交換 | JSON | 前後端透過 JSON 格式傳遞學程定義與檢核結果。 |
| 佈署 (Deployment) | Render | 雲端服務佈署。 |
program-checker/
├── backend/ # Go 後端核心
│ ├── main.go # API 服務與檢核邏輯
│ ├── special_handlers.go # 特殊學程規則與進階檢核邏輯
│ ├── data/ # 資料庫檔案
│ │ ├── credit_programs.json # 學分學程資料庫
│ │ ├── micro_programs.json # 微學程資料庫
│ │ ├── commerce_specialty_programs.json # 院級專長學程資料庫
│ │ └── departments_grouped.json # 系所歸屬定義
│ └── ...
├── frontend/ # Vue 3 前端介面
│ ├── public/ # 靜態資源 (Manifest, Icons)
│ ├── src/assets/ # 專案資源 (Logo)
│ ├── .env.example # 環境變數範例
│ └── ...
└── README.md # 說明文件
如果您想在本地環境運行或參與開發,請參考以下步驟:
- 進入後端目錄:
cd backend - 確保已備妥學程定義檔(位於
data/目錄下):data/micro_programs.jsondata/credit_programs.jsondata/commerce_specialty_programs.jsondata/departments_grouped.json
- 啟動服務 (預設 Port 8080):
go run .
- 進入前端目錄:
cd frontend - 安裝依賴:
npm install
- 設定環境變數:
複製
.env.example為.env.local並設定後端位址:VITE_API_BASE_URL=http://localhost:8080
- 啟動開發伺服器:
npm run dev
- 取得資料: 登入政大 iNCCU -> 全人系統 -> 資料格式化匯出 -> 下載「課業學習」JSON 檔。
- 上傳檔案: 在本工具上傳該 JSON 檔。
- 選擇模式:
- 智慧推薦: 點擊「啟動推薦分析」,查看系統計算出的高完成度學程排行。
- 學程檢核: 切換至「學程檢核」頁籤,手動勾選感興趣的學程(支援跨學院搜尋)。
- 查看結果: 閱讀詳細的檢核報告,包含學分統計、修習中課程提示及未達標原因。
- 安裝 App: 在支援的瀏覽器中,點擊網址列的安裝圖示或「加到主畫面」,即可將 NCCU Pro 安裝至您的裝置。
後端 backend/data 資料夾中的 JSON 檔案定義了各學程的規則:
data/credit_programs.json: 一般學分學程data/micro_programs.json: 微學程data/commerce_specialty_programs.json: 院級專長學程(目前僅商學院使用)data/departments_grouped.json: 系所歸屬定義(用於判斷學生學籍歸屬,檢查是否牴觸學程身分限制)
若您希望協助更新學程資料,請參考以下欄位定義:
"program_id": {
"name": "學程名稱",
"min_credits": 20.0, // 總學分門檻
"description": "學程通過條件描述",
"general_education_courses": ["通識A", "通識B"], // (選填) 指定通識課程清單
"requirements": [
{
"category": "必修課程", // (必填) 認列課程類別(如必修、基礎等)
"min_credits": 6.0, // (選填) 該類別學分門檻
"min_count": 2, // (選填) 該類別門數門檻
"max_count": 1, // (選填) 該類別採計上限門數
"courses": ["課程A", "課程B"]
}
]
}歡迎提交 Pull Request 來新增或修正學程資料!如果您發現某個學程的規則有誤,或是有新的學程想要加入,請直接修改上述的 JSON 檔案並提交變更。
本工具為學生開發之輔助系統,檢核邏輯雖力求準確,但仍可能因學校政策變動或特殊修課狀況而有誤差。最終修畢資格與學分認定,悉以國立政治大學教務處及各學程設置單位之正式審核結果為準。