導覽 AI:教學流程與頁面對齊
建立班級的導覽依實際精靈排列:班級與課表 → 學生名單 → 教學環境 → 每週任務 → 確認建立。 「建立課程/課堂/班級」預設進入建立班級,只有明確要求建立環境才進入環境流程;新需求優先於既有對話。 所有流程卡片只保留一句短提示(28 字以內),頁面說明與一般回答預設簡短,追問才展開。 已有已發布、提供正式課程的教學環境可直接重用;沒有時從第 3 步建立環境,發布後返回原班級。 機器範本保存單台機器的軟體與設定,是環境的可選來源;環境也可使用映像,不要求每次開班重做範本。
獨立建立教學環境依實際編輯頁引導:基本資料 → 機器配置 → 在機器配置分頁確認發布並鎖定。 導覽按鈕會切換對應分頁,保留既有環境 ID 與返回班級網址,不重複新增說明訊息。 發布後依套用方式提供正式課程、快速練習或兩者;只有從班級進入才返回班級,獨立建立不要求另外開班。 詢問下一步時會依名稱、分頁、機器數量及發布狀態回答,不反覆重列整套流程。
/ai/navigation/resolve 回傳單流程欄位(flow_id、flow_title、steps),同時附上 flows 與 answer。 模型可同時回傳多個流程及問題回答;流程步驟仍由伺服器目錄產生,會去重並過濾權限。 單純插問使用 action=answer,不取代進行中的流程。
前端在同一次對話內保存各流程的需求、配置問卷、已保存班級網址,並提供流程切換。 問卷只接收相關輪次,插問不會被保存成用途或使用期限。 清除對話或重新載入頁面會清除這些對話記憶;正式班級資料仍由既有 API 保存。
建立班級與環境編輯頁透過 useAiScreen 提供明確選取的非敏感狀態。 後端只接受目前路徑、帳號權限與畫面定義一致的欄位;敏感值不進入導覽提示。 等待回答時若頁面或狀態改變,會提示重新提問,不套用過期回答。 瀏覽頁面不代表送出或建立完成,導覽不自動執行班級、範本或環境的寫入。
回歸情境(由 backend/tests/test_ai_navigation_service.py 與 frontend/src/components/AiFloatingChat/ 內的測試涵蓋):
- 「先建立範本,再建立教學環境,最後開班」保留三個可切換流程。
- 「教學環境和班級有什麼差別」回覆關係,不開啟機器配置問卷。
- 配置中詢問「什麼是 DNS」後,原本的期限問題仍可接續作答。
- 從
/class-setup?classId=42&step=3暫離再回到導覽,保留原班級網址。 - 學生無法取得教師或管理員流程;未知路徑、流程或欄位不作為操作來源。