定義「A1 課程頁 → StudentMode」的轉換規則:什麼內容會被注入、什麼維持不動。 每個課程綁一份 B6,跟著 course-registry 的 key 走。
B1–B5 是全域共享的資源區塊(素材、案例、資料處理、IDE 規則、Skill 庫)。 B6 不一樣:每個課程一份,跟著 course-registry 的 key 走 (如 aicode100、website、supabase)。
B6 存在的理由:課程頁要切換到 StudentMode 時,不是直接把整頁丟過去,而是需要一份明確的 對應表,說清楚哪些內容會進 StudentMode、哪些不會。
StudentMode 是一個「模擬教室」,畫面由三個水平區塊組成:
這是 B6 設計的核心。
這兩區的內容屬於該堂課的現場產物,不是課程教材本體。如果 B6 直接覆蓋這兩區,切換課程時老師前一堂課上傳的 筆記會被清空,違反「模擬教室」的直覺——教室的白板內容應該由老師當下決定,不該被模板蓋掉。
所以 B6 對這兩區的介入限縮為:只管「預設可見性」這種外殼狀態,不碰內容。
shell.channel.visible = true(這堂課預設打開補充資料區);101-B 可以設shell.notes.visible = false(這堂課預設不展示實體筆記)。但兩份 B6 都不能決定 channel / notes 裡放什麼——那永遠是老師的權責。目前 A1 課程(例如 StudentMode/src/_data/website.ts) 的章節資料結構,可以 100% 對應到 B6.chapters:
換句話說,課程區的欄位對應是 1:1 直接轉入,沒有 schema 改寫。B6 的價值不在於改變章節的資料結構,而在於:
src/app/(shell)/research-bytecode-scope/page.tsx裡曾提過另一個 B6 提案:「樣版文件生成」(xlsx / docx / pptx 的輸出模板)。
本版 B6 重新定義為「學生環境模板」,與原提案並不衝突:
如未來仍需「輸出檔案版型」這個概念,建議改用 B7 或其他代號,避免語意混淆。
src/types/student-template.ts)src/_data/website.ts搬遷到 B6 儲存位置(Insforge table 或 JSON file,依最終決定)。/skill-convert頁面:讓它的輸出符合 StudentTemplate schema。StudentPanelContent;shell.notes.visible /shell.channel.visible作為 CourseNotes / Channel 的初始可見性值。/api/notes、/api/channel)完全維持現狀,不改動。老師把 StudentMode 的課程從 101-A 切換到 101-B,CourseNotes 區裡上傳的那份 PDF 會不會消失?
答:不會。Notes 檔案由 StudentMode 自己的 data/notes.json +/api/notes 管理,B6 切換只會替換課程區的 chapters, 以及重設 Notes / Channel 的 visible預設值,不會刪除任何實體檔案。