9 / 14 系統更新公告

2026/9/13 23:20:41

這次更新主要改善提交與判題穩定性、討論區載入速度,以及帳號登入與部署流程。

帳號與登入

  • 新註冊帳號一律為一般使用者;初始管理員必須透過受信任的伺服器端指令建立,避免第一個註冊者自動取得管理員權限。
  • 調整 Google、Discord 與 Android App 的 OAuth 登入驗證流程,降低登入 callback 驗證異常的情況。
  • 登入與註冊加入 Cloudflare Turnstile 驗證,並補強驗證失敗時的錯誤處理與紀錄。
  • 在帳號設定填寫 Email 後,可透過「忘記密碼」流程重設密碼;重設連結限時、限用一次,完成後會使既有登入階段失效。

提交與判題

  • 一般提交、離線批次上傳與自訂執行新增流量限制與佇列保護,避免大量請求塞滿服務。
  • 判題工作新增 claim ID 與續租機制。worker 重啟或逾時後,舊工作者不會再覆寫新的判題結果。
  • sandbox-runner 與 Piston 執行請求加入逾時控制。
  • 提交詳情在判題期間只輪詢輕量狀態;完成後才載入完整結果,減少資料庫與網路負擔。
  • 本機開發模式會啟動判題 worker,不再讓提交永久停在「等待評測」。

討論區、題解與排行榜

  • 留言改為 cursor 分頁載入,每次顯示一批主留言及其回覆。
  • 題解會在切換到「題解」分頁後才載入,並支援分頁讀取。
  • 留言、題解與訊息查詢新增複合索引,改善資料量增加後的讀取速度。
  • 首頁與全站排行榜改由 SQLite 直接聚合解題數、提交數與識讀答對數,不再把所有歷史 AC 紀錄載入 Next.js 記憶體後統計。
  • 課程與競賽的題目檢查改為精準讀取所需欄位,不再意外讀取大型 PDF 資料。
  • 題目建立與投稿核准加入並發保護,避免同時操作時重複建立題目或取得相同題號排序。

題目管理與使用者功能

  • 管理員可在題目管理頁批次調整公開狀態、難度與出題者,並可直接查看各題作者。
  • 題目列表新增分頁與排序功能。
  • 使用者個人頁新增連續解題/連勝紀錄。

網站與部署

  • 新增關於頁面、網站 metadata、結構化資料與 sitemap,改善搜尋結果與社群分享資訊。
  • 更新網站背景、邊框與陰影等視覺細節。
  • CI 與部署流程會自動執行 prisma generate,部署前也會套用新的資料庫 migration。
  • 本次 migration 包含判題 claim ID、排行榜,以及討論區、題解與訊息的查詢索引。

https://github.com/itousouta15/itouOJ

更多