A-51 Trophy Room Exam Import
- P1新增 +1移除 −0
第一版式樣草案 · Markdown 來源:04-App畫面-管理員.mdGitHub 版本尚未推送;目前以本機手冊為準
取圖紀錄: QL APP,2026-10-18,版本
2410774734466577464;節點 912:4014 。學生 2x/Web 1x。圖片是目前設計稿,文字為 APlus 首版目標規格。 設計稿待更新(F-31): 圖中舊品牌、華語內容或待核對項目照實保留;請以本節英語文字規格為目標。設計修改後重新取圖。
智能獎杯導入中心
🎨 Figma: node-912-3209 (A-50/A-51 共用) 🔗
⚠️ Figma 局部待同步: 保留原有單一彈窗、Basic Settings、CSV/Audio ZIP/Image ZIP 上傳區與 Cancel/Submit。只補模板填寫說明、預檢摘要,並將誤用的 School/Class 錯誤文案改為題庫欄位錯誤;不重做版面。
本次範圍: 沿用原 19 欄 CSV,不增加 Bundle、Legacy 雙入口、通用 Source Mapping 介面或逐 Section 設定。原始檢定題庫尚未提供,缺欄須逐欄核實後才決定是否在模板末端最少追加;目前不宣稱已完整對上原檔。
🎯 功能定位
使用者: Admin / Super Admin
- 沿用原操作: 填 Basic Settings,上傳一份 CSV 及必要的音訊/圖片 ZIP,檢查預覽後提交。
- 智能預覽: 保留現有題目表格與正解/素材預覽,讓管理員確認欄位和題目沒有錯位。
- 單一考試: Listening 與 Reading 是同一 Exam 的內容分段;匯入不建立 Challenge,教師派送時才建立一個完整 Challenge。
🧱 畫面結構(原有 Modal)
| 區域 | 說明 |
|---|---|
| Header | Import New Exam、[Download CSV Template] |
| Basic Settings | Category、Exam Name、Total Score、Pass Score、Duration(分鐘) |
| Resource Upload | 原上傳區:一份 19 欄 CSV + Audio ZIP + Image ZIP;不含媒體時無須提供空 ZIP |
| Logic Preview & Validation | 現有題目表格、媒體/選項與正解預覽;補題數、總配分、Listening/Reading 分組及錯誤摘要 |
| Actions | [Cancel]、[Submit];有阻擋錯誤時 Submit 禁用 |
Basic Settings 與 CSV 的關係
- Category 選 A-50 已配置的英文 Trophy Category;Cambridge YLE 僅為待確認候選示例,與 CSV 的
Exam Category(聽力/閱讀)是不同概念,兩者不改名、不混填。 - Exam Name 與 CSV 各列的
Exam Name必須一致;可由解析結果帶入原欄位,不可靜默覆蓋衝突值。 - Total Score 為整卷滿分,須等於所有非例題的
Points總和;0 < Pass Score <= Total Score。 - Duration 為正整數分鐘,整卷共用一個倒數;不新增每個 Section 的時長、播放、導航或暫停設定。
- 內部 ID 與內容修訂識別由系統管理,不增加管理員必填的
exam_id、source_version或其他關聯 ID。
📥 CSV 模板規格(保留原 19 欄)
一份檔案代表一份 Exam,每列一題;沿用原欄名、順序與 UTF-8 CSV。含逗號、換行或雙引號的儲存格依標準 CSV 引號規則處理。下表是原規格對照,不是尚未取得的檢定題庫原檔。
csv
Exam Name,Exam Level,Round,Exam Category,Section Number,Question Sequence,Question Number,Question Group,Points,Question Format,Question Text,Question Spell,Question Image,Answer Type,Option Text,Option Pinyin,Option Image,Correct Answer,Audio File| # | 原欄名 | 用途與必要校驗 |
|---|---|---|
| 1 | Exam Name | 整卷名稱;各列及 Basic Settings 必須一致 |
| 2 | Exam Level | 考試級別;同份檔案一致,例如 YLE Starters(候選示例;採用待確認) |
| 3 | Round | 考試回次;同份檔案一致 |
| 4 | Exam Category | 聽力/閱讀內容分類,不是 英文檢定分類;已確認的來源別名以固定對照解析 |
| 5 | Section Number | 原考卷段落編號;保留分組,不把段落拆成獨立 Challenge |
| 6 | Question Sequence | 題目排序;同一內容分段內不可重複,不能以顯示題號代替 |
| 7 | Question Number | 顯示題號;例題識別約定須以原檔確認 |
| 8 | Question Group | 題組編號;非題組可留空,共用題幹/素材需依原題組確認 |
| 9 | Points | 題目配分,非負數;計入 Exam Score,不決定 EXP |
| 10 | Question Format | 沿用圖片/文字/圖片+文字等原值;須符合已有題型模板 |
| 11 | Question Text | 題幹;沿用 \\ 分段 |
| 12 | Question Spell | 既有相容欄位;APlus 英語首版留空,不作為音標顯示;保留欄位位置以待工程確認 |
| 13 | Question Image | 題幹圖片檔名;引用的圖片必須存在 |
| 14 | Answer Type | 保留原單選/多選/是非/輸入枚舉;能否匯入取決於下方既有題型支援邊界 |
| 15 | Option Text | A–F 選項文字,沿用 | 分隔並保留空槽 |
| 16 | Option Pinyin | 既有相容欄位;APlus 英語首版留空,保持 A–F 空槽與欄位位置;待工程確認 |
| 17 | Option Image | A–F 選項圖片檔名;空槽不可刪去後重新配對 |
| 18 | Correct Answer | 選擇/是非題引用該題有效選項 Key,例如 A;不得指向空選項 |
| 19 | Audio File | 原音檔引用欄位;引用的音檔必須存在,不新增媒體目錄格式要求 |
最小補欄原則
- 先做一次「原始題庫欄位 → 現有 19 欄 → 是否缺失 → 固定轉換規則」對照,作為模板說明與解析規則,不新增管理員逐欄配對流程。
- 已有欄位能承載的內容不另拆檔或改名。來源必要資訊若無法承載,才提出末端追加的最少欄位與舊檔相容規則,確認後同步模板。
- 例題優先沿用原檔已明確定義的題號/標記約定;不能僅因
Points=0就判定為例題。只有舊欄確實無法識別時,才考慮追加Is Example,目前不是必填欄位。 - 未對應且可能影響題幹、正解、配分、媒體或題組的來源欄位必須阻擋提交;不可靜默丟棄。無法確認的例題/題組同樣列出具體原因並停止匯入。
既有題型支援邊界
| 題型 | 本次處理 |
|---|---|
| 文字/圖片的單選與是非 | 沿用 S-31 模板 1–3;核對選項、正解與素材 |
| 圖片/文字 6 選 1 題組 | 沿用模板 4;用原始樣本確認共用素材、選項池與排序,不猜測重複選項規則 |
| 多選/輸入題 | 原欄位有枚舉不代表已有學生端模板和評分;未證明實作支援前阻擋,不在這次順帶新增題型 |
| TR_test_5 | 先確認是既有題型的狀態還是新題型,不按 Frame 數量擴大開發範圍 |
預覽沿用現有邏輯表格/素材呈現,不要求新建與學生端共用的渲染器。題型能否正式匯入仍須核對實際學生端與評分支援;本倉庫沒有可執行的產品實作。
📦 核心邏輯細節
資源與內容預檢
| 級別 | 例子 | Submit |
|---|---|---|
| Error | 缺必填資料、同卷名稱/級別/回次不一致、排序重複、總配分不符、正解指向空選項、必要媒體缺失、未知或未支援題型、來源必要資訊未對應 | 禁用 |
| Warning | ZIP 有未引用素材,且不影響題目、正解或播放 | 顯示提醒,不新增強制勾選流程 |
- 錯誤在原結果區列出檔名、列號、欄位與原因,例如
Row 12 · Correct Answer: option D is empty.;不要再顯示 School/Class 錯誤範例。 - A–F 選項解析保留位置與空值。文字、圖片數量/Key 不一致時報錯;舊拼音欄位依相容映射處理,不顯示為音標,不以移除空槽來「修好」資料。
- 成功筆數表示「通過預檢的題目數」,不是已寫入題數;有 Error 不得只匯入其餘題目。Submit 成功才保存完整 Exam,寫入失敗不能留下可派送的半份試卷。
- 重複檢查保留 Category、Exam Level、Round 的識別,避免只用 Category+Round 誤擋不同級別。相同來源與內容提示 Already Imported;更正內容沿用重新匯入流程,不原地編輯已派送試卷。
- 重匯後原 Challenge 的題目、正解、配分及及格線必須保持不變;優先沿用既有 Exam 記錄/快照機制。若實作不能保留舊內容,先阻擋覆寫,不以本次修改要求新增資料庫模型或遷移。
- T-41/A-52 使用的
source_version是系統產生的內容修訂識別,不是新增 CSV 或表單欄位。它可對應既有不可變記錄;不同內容修訂不得混算原始分數。
音訊與作答行為
沿用 S-31 原本的聽力播放與答題流程:聽力連續播放、不能暫停或倒帶音訊;答題時可 Previous/Next、Pause/Continue,恢復同一 Attempt。不新增逐 Section 的策略引擎或強制段落限時。
原規格「音頻只能有 1 個」與逐題 Audio File 並存,其範圍是整卷、段落或單題仍需對照原檔及現有實作。本次不擅自放寬成多音訊模式,也不把這句當成拒絕原始題庫的依據。暫停是否停表、離線/背景計時亦待確認;受影響的匯入/作答案例須確認後才能驗收。
邏輯預覽與整卷確認
- 保留題號、題型、媒體、選項與正解的現有表格預覽;補充非例題數、例題識別結果、總配分及 Listening/Reading 分組摘要。
- Listening/Reading 只作內容分組,不再 Auto-Split 成兩個 Challenge;Submit 後仍是一份完整 Exam。
- 教師 T-41 只選卷與派送,不改 Pass Score。學生 S-31 完成整卷後由 S-32 顯示一份 Result。
- Exam Score 加總本次答對非例題的
Points;EXP 為當次答對非例題數 × 10,重考可重複獲得;Trophy 獎盃仍按 Challenge/Student 只發一次。 - 匯入不需設定獎盃樣式;沿用既有分數判定後隨機配發的設計。高/中/低區間算法待產品確認,本次不改。