Coding Tutor 系統功能規格書

架構、權限與評測技術深度解析

1. 系統序言與技術願景

在當前程式教育轉型的浪潮中,教學端面臨的核心挑戰已從單純的教材開發,演變為如何透過技術手段達成「教學治理」的自動化與標準化。Coding Tutor 被定義為「一站式程式語言學習管理系統 (PLMS)」,其戰略意義在於整合開發環境、即時評測引擎與教學管理邏輯,建立一套可重複驗證的教學資產管理流程。

從教育治理的角度分析,該系統透過備課、出題、評量與追蹤的標準化流程,有效解決了個別教師因工具差異(如環境配置不一、批改邏輯落差)所導致的管理痛點。對學校教務主管而言,這不僅僅是一個教學工具,更是一個具備「行政干預價值」的數據平台。透過「全班進度矩陣」與「即時解題追蹤」,管理層能精準評估各學科單元的難度係數與學生的學習曲線,從而優化整體課程地圖。這種由底層技術支撐的教學一致性,正是確保校園數位化轉型成功的關鍵基礎。

--------------------------------------------------------------------------------

2. 技術選型與系統架構分析

為了在多變且資源受限的校園伺服器環境中維持長期穩定,Coding Tutor 捨棄了臃腫的當代框架,轉向更具透明度與可維護性的「低依賴設計」。

2.1 核心技術堆疊與低依賴架構

  • 低相依性開發模式: 系統採用 PHP 7+ 無框架 (No-Framework) 架構,每個 .php 檔案同時封裝路由、商業邏輯與 HTML 輸出。這種設計對教育機構而言具有極高的戰略價值:它降低了技術債,確保在人員異動頻繁的校園環境下,後續維護者能以極低的學習門檻理解系統狀態,且能透過 init.php 快速實現「零設定部署」。
  • 資料庫交互安全性: 使用 MySQL / MariaDB 搭配 PDO 連線與 Prepared Statement。此架構不僅強化了資料存取效率,更從底層杜絕 SQL 注入攻擊,確保師生個人資料與學習歷程的絕對完整。
  • 前端整合元件:
    • Bootstrap 5.3 (CDN): 建立具備高度一致性的響應式介面。
    • Ace Editor: 整合工業級程式碼編輯體驗。
    • TinyMCE: 提供富文本課程內容編輯,並針對 GIFT 格式匯入 進行了 <pre> 標籤換行解析的優化,確保程式碼範例在導入時不失真。

2.2 環境治理與遷移策略

系統遵循「配置環境化」原則,建議將硬編碼的資料庫連線參數與實體檔案上傳路徑抽離至環境變數中。這使得系統在進行伺服器遷移或 CI/CD 流程整合時,能維持極高的彈性與安全性。

--------------------------------------------------------------------------------

3. 三層式角色權限與功能邏輯

系統設計採用「角色導向設計 (Role-Based Design)」,精準對應學校的行政組織結構,實現資產隔離與權限管控。

3.1 管理員 (Admin) 與全域治理

管理員負責全站數據監控與帳號生命週期管理。特別針對校務行政需求,支援 CSV 批次匯入帳號,並強制採用 UTF-8 BOM 編碼解析。此設計的策略價值在於:確保行政人員使用 Excel 處理名單時,無須經過繁瑣的編碼轉換即可達成「零配置相容」,大幅降低新學期行政負擔。

3.2 教師端 (Teacher) 與教學洞察

教師端模組核心在於提升備課效率與即時輔導能力:

  • 即時教學實驗室 (Live Lab): 內建 Live Code Runner,教師能模擬 stdin 標準輸入進行互動式演算法示範,無需切換外部環境。
  • 課程 ID 隔離機制: 當進行「一鍵複製課程」時,系統會自動移動實體檔案並同步更新資料庫關聯路徑。這確保了附件在課程遷移後不會出現「斷鍊」現象,解決了 LMS 系統中最常見的教材失效問題。
  • 正式測驗 (Quiz) 安全鎖定: 教師可啟用「監控鎖定旗標 (Lock Flags)」。在測驗期間,系統會封鎖章節內容、牛刀小試執行與獨立挑戰頁面,強制學生進入隔離的受測狀態。

3.3 學生端 (Student) 與學習路徑

學生端強調「低摩擦」體驗。支援 Google OAuth 2.0 一鍵登入,並具備 網域限制功能 (如限定 @school.edu.tw)。這不僅解決了密碼遺失的行政困擾,更符合校園資安政策對內部資料存取的範疇限定。

--------------------------------------------------------------------------------

4. Online Judge (OJ) 即時評測引擎與沙箱安全機制

評測引擎是系統的技術核心,旨在提供高度隔離且即時的自動化回饋,其穩定性直接關係到教學現場的流暢度。

4.1 評測工作流與狀態監控

系統接收提交後,會經歷以下標準化路徑:

  1. 環境隔離:/tmp 目錄建立隨機命名的暫存檔案,確保多執行緒執行下的狀態隔離 (State Isolation)。
  2. 輸入重定向:stdin 測資餵入,並捕獲 stdout
  3. 邏輯比對: 進行逐筆輸出比對,並產出五種核心狀態:Accepted (通過)、Wrong Answer (誤判)、Runtime Error (執行錯誤)、Time Limit Exceeded (超時) 以及 Security Violation (安全違規)

4.2 多層次安全沙箱

  • Python 隔離: 採用 python3 -I (Isolated mode) 搭配 sandbox_runner.py,徹底切換使用者自訂路徑,防止非法套件調用。
  • PHP 深度限制: 透過 disable_functions 嚴格禁用 exec, shell_exec, system, passthru, popen, file_get_contents, fopen 等高風險函式。
  • 資源配額 (Resource Capping): 利用 Linux 核心層級的 ulimittimeout 進行硬性資源限制,防止 Fork Bomb 或資源耗盡攻擊。

4.3 資源限制參數規格表

項目

Python

PHP

C / C++ / Java

執行超時 (Time Limit)

5s (標準) / 8s (延伸)

5s (標準) / 8s (延伸)

5s (標準) / 8s (延伸)

記憶體限制 (Memory)

128 MB

256 MB

系統預設 (ulimit 監控)

最大輸出 (Output Limit)

1 MB (安全防禦)

1 MB (安全防禦)

1 MB (安全防禦)

--------------------------------------------------------------------------------

5. 智慧型 Regex 中文錯誤診斷系統規格

為了解決初學者面對原生編譯錯誤訊息的恐懼感,系統建構了具備差異化優勢的診斷模組。

5.1 運作機制與教學效益

管理員可透過 Regex 正規表示式,針對不同語言(Python, PHP, C, C++, Java)的回傳錯誤進行過濾。例如當偵測到 NameError、Segmentation Fault 或 NullPointerException 時,系統會自動對應至預設的中文標題、描述與多步驟修正建議。

5.2 Python 特化引導

針對 Python 3.10+ 環境,系統整合了「拼字建議 (Did you mean?)」功能。透過綠色高亮顯示,系統能精準指引學生修復因打錯變數名稱導致的崩潰。這種「引導式排查」大幅降低了教師在基礎語法糾錯上的工作負荷,讓教學資源能集中於演算法邏輯的探討。

--------------------------------------------------------------------------------

6. 系統穩定性維護與擴充性建議

從技術治理的角度來看,確保系統長期演進與資產安全性是架構師的首要任務。

6.1 資料庫一致性與 Migration 管理

由於 schema.mdinit.php 存在潛在的版本落差,系統必須建立嚴格的 Migration 管理流程。這包括對題庫分類、附件關聯表等新增欄位的標準化版本控制,確保在不同伺服器環境部署時的一致性。

6.2 課程資產的永續性

系統現已實現「一鍵 ZIP 打包」功能。此機制不僅包含章節與題目的數據關聯,更封裝了所有實體圖片與教材附件。這確保了校方的數位資產在系統升級、轉移授課教師或跨校遷移時,能維持 100% 的數據完整性。

6.3 未來擴充方向:容器化演進

目前的應用層沙箱(如 python3 -I)已足以應對常規教學需求。然而,隨著題型複雜度增加(如網路連線或系統調用題型),建議未來逐步轉向 Docker 容器化評測環境,以提供更徹底的核心層隔離與更精細的資源配額控制,確保系統在高負載下的健壯性。