專案範疇與核心功能
- 角色體系: 系統管理員、教師、學生 (RBAC 權限模型)
- 核心模組: 使用者管理、課程/選課管理、成績管理、教務公告、資源庫、個人中心
- 非功能需求: 響應式介面、資料匯入匯出、操作審計日誌、高併發選課鎖機制
技術棧推薦 (Java 生態為例)
| 層級 | 推薦方案 | 備註 |
| 建構工具 | Maven / Gradle | 多模組專案管理 |
| Web 框架 | Spring Boot 3.x | 自動配置、內嵌容器、生產級監控 |
| 安全框架 | Spring Security + JWT | 無狀態認證、角色授權 |
| ORM | MyBatis-Plus / JPA | 代碼生成器加速開發 |
| 資料庫 | MySQL 8.0 / PostgreSQL | 支援 JSON、CTE、窗口函數 |
| 快取 | Redis (Redisson 分散式鎖) | 選課搶課、熱點資料 |
| 前端 | Vue 3 + Element Plus / React + Ant Design | 組件化、TypeScript 加持 |
| 部署 | Docker + Kubernetes / Nginx 反向代理 | 容器化、藍綠部署 |
開發階段規劃
- 初始化 (Week 1): 建立多模組專案 (common, admin-api, teacher-api, student-api, web-admin, web-teacher, web-student),整合 Swagger、MyBatis-Plus Generator、統一異常處理、日誌追蹤。
- 核心域建模 (Week 2): 設計 ER 圖 (User, Role, Course, Class, Enrollment, Grade, Announcement...),生成 Entity/Mapper/Service 基礎代碼。
- 認證授權體系 (Week 3): 實作登入/登出、JWT 簽發驗證、@PreAuthorize 註解式權限控制、動態選單渲染。
- 業務模組迭代 (Week 4-8): 採用雙週 Sprint,優先實作「選課引擎」(樂觀鎖/Redis Lua 腳本防超賣)、「成績導入導出」(EasyExcel 流式處理)、「公告發布」(富文本編輯器)。
- 前端整合與測試 (Week 9-10): 元件庫二次封裝、路由守衛、E2E 測試、壓力測試 (JMeter 模擬選課高併發)。
- 上線與運維 (Week 11+): CI/CD 流水線、監控告警 (Prometheus+Grafana)、日誌聚合 (ELK)、備份恢復演練。
關鍵技術難點攻關
- 選課併發: Redis 分散式鎖 + Lua 原子腳本扣減名額 + 資料庫唯一索引兜底 + 異步 MQ 削峰。
- 大量資料匯出: EasyExcel / Apache POI SXSSF 流式寫入,避免 OOM。
- 多租戶/分校區隔離: 共享資料庫 +
tenant_id 欄位 + MyBatis-Plus 租戶插件自動注入。
學習資源與參考專案
給新手的建議
不要試圖一次建構完美系統。先跑通最小可行性產品 (MVP):登入 → 看課表 → 選一門課 → 看成績,再逐步擴充模組、重構架構。善用代碼生成器 (MyBatis-Plus, JHipster) 解放重複勞動,專注於業務邏輯與非功能品質。