瀏覽器問答工作流程
操作使用者的現有瀏覽器工作階段,並端到端完成授權的問答工作流程。
此工作流程主要為 U校園 / Unipus 開發與驗證。將所有其他網站視為未經驗證的改編版本:檢查每個互動,且絕不假設提交或完成偵測是正確的。
規則
- 使用使用者提供的答案、使用者指定的答案檔案,或頁面明確揭露的答案。
- 不要替評分評量推斷答案。詢問缺少的答案來源,或將這些問題留空。
- 保留已登入的工作階段。偏好使用 Chrome 控制權來管理現有的 Chrome 狀態。
- 將點擊「提交」視為需要明確或已給出的使用者授權的行為。
- 跳過使用者排除的題型,例如口語或錄音任務。
- 永遠不要將「已瀏覽」、「已作答」或「已提交一頁」等同於「章節已完成」。
- 在 U校園 / Unipus 之外,使用簡短的步驟,並在繼續之前驗證每個寫入、導覽、提交和完成訊號。
工作流程
-
盤點任務
- 識別目標單元、章節、排除項目、答案來源,以及提交是否已獲授權。
- 將答案轉換為一個以章節和題號為鍵的結構化對照表。
- 對於隨機化的選項,儲存確切的選項文字,而不只是字母。
-
檢查即時狀態
- 讀取網址、可見按鈕、分頁、題數、輸入欄位數、對話框、iframe 和完成圖示。
- 記錄哪些章節已完成、進行中或尚未觸及。
- 從第一個未完成的允許章節開始。
-
判斷頁面結構
- 將頁面分類為:一題一頁、所有題目在同一頁、文字填空、混合表單或跨來源 iframe。
- 檢查選項順序是否在重試之間改變。
- 閱讀 references/browser-patterns.md 以獲得穩健的互動模式。
-
保守填答
- 盡可能透過精確的正規化選項文字來匹配單選題答案。
- 僅在確認當前選項順序後才使用字母或索引。
- 對於穩定的所有題目在同一頁,偏好使用批次表單填寫。
- 對於反應式文字欄位,觸發真實的
input和change事件。 - 在「一題一頁」流程中,作答、點擊「下一題」、等待導覽,然後重新查詢 DOM。
-
提交並驗證每個章節
- 僅在檢查已答題數與預期題數相符後才提交。
- 等待結果、「繼續學習」、分數、審閱狀態或完成標記出現。
- 移動到下一個章節後,驗證上一個章節的目錄圖示已變更為「已完成」。
- 如果某個項目仍處於「進行中」,在假設原因前先檢查其子頁面。
-
處理測試與 iframe
- 點擊進入確認、開始測試,然後等待資源載入完畢。
- 在填答前,確認並關閉任何「資源已載入」的覆蓋層。
- 對跨來源 iframe 內容,使用無障礙快照和表單填寫工具。
- 提交、驗證分數/已答題數,然後使用測試系統的返回或課程連結,以便父課程接收結果。
-
從中斷中恢復
- 重新檢查完成圖示和當前問題狀態。
- 僅重新進入未完成的章節。
- 當頁面顯示答案但沒有完成標記時,重新填寫該章節。
- 維護一份簡潔的進度記錄:已完成、依指示跳過、待處理以及被封鎖的項目。
-
最終稽核
- 在導覽或重新整理後,重新讀取所有目標完成圖示。
- 報告已完成的章節、跳過的題型、分數,以及任何剩餘的進行中原因。
效率
- 使用一次檢查調用來收集網址、可見按鈕、連結、輸入欄位數量和完成標記。
- 批次處理獨立的 DOM 讀取;批次處理穩定的表單寫入。
- 僅在確認直接章節連結或已知路由屬於當前課程後才使用它們。
- 在導覽和提交後等待;不要在頁面轉換期間執行長腳本。
- 偏好簡短、可重新啟動的操作,避免一個涵蓋多個頁面的脆弱腳本。
完成標準
僅在至少有一個持久性訊號確認時,才將章節標記為完成:
- 目錄標記顯示「已完成」;
- 結果頁面顯示預期的已答題數或及格分數;
- 頁面顯示已提交/審閱狀態,且課程記錄了該狀態。
對於包含排除的口語/錄音任務的章節,將非排除的部分報告為已提交,並說明父章節為何仍處於進行中。