== 1. 建立計畫(用固定 G1 窗,繞過日期依賴)== ok create 回傳 plan_id ok 狀態=pending ok 版本=1 ok G1 節數自動=1 ok 18 週已初始化 == 2. 一窗一計畫(重複新增應擋)== ok 重複新增被拒 == 3. 學生填 18 週後儲存(pending 內編輯)== ok 第3週 schedule 存入 ok pending 儲存不升版 == 4. 教師批「修正」== ok 狀態→revise == 5. 學生修改儲存 → 升版 + 原版備份 == ok 版本→2 ok 狀態回 pending ok 原 v1 進 plan_history ok versionHistory 回 2 筆(v1備份+當前v2) == 6. 教師批「通過」→ 缺簽名 == ok 狀態→approved_unsigned == 7. 雙簽 → 通過 + 寫執行結束日 == ok 單簽後仍缺簽名 ok 雙簽後→approved ok exec_end_date 已寫入 ok G1 執行結束=06-30 ok 簽名狀態雙方齊 == 8. 執行進度撰寫 == ok 已填 6/18 週 ok 心得已填 == 9. listByStudent 含此計畫 == ok 列表含測試計畫 == 10. 通過計畫不可刪 == ok approved 計畫刪除被拒 == 清理測試資料 == ok 主表已刪 ok FK CASCADE 清 plan_weeks ok FK CASCADE 清 plan_history == 結果:26 通過 / 0 失敗 ==