Skip to content

A-33-O Import Upload Center

管理員端課程管理設計規格

內容依原始規格呈現 · 查看 Markdown 來源 ↗需具備倉庫查看權限

數據導入中心

🎨 Figma: node-698-2843 (A-30 同頁面子視圖;含 Structure Import / Vocabulary Bundle Import 子變體) 🔗

🎯 核心功能

使用者: Admin / Super Admin

作為 A-30A-33 之間的橋樑,此頁面提供標準的 CSV/ZIP 範本下載,並允許管理員選擇特定的導入模式。這是確保數據格式正確的第一道關卡。

🧱 畫面結構

區域說明
HeaderNihao Admin Course Management > Import Center, [👤]
Sidebar< Back to Course Management
Import Tabs[Structure Import] / [Vocabulary Bundle Import] Tab 切換
DownloadTemplate 下載按鈕
Upload AreaDrag & Drop 區域
System Logic當前模式的關鍵操作警示
Action[Analyze & Preview >] / [Unpack & Preview >] 按鈕

📦 區塊說明

區塊元件功能與行為
Import TabsTab Switcher核心導航。切換後,下方「範本下載」與「上傳邏輯」同步更新。
DownloadTemplate LinkStructure: 提供 CSV 範本。Vocabulary: 提供包含目錄結構的 ZIP 範本。
Upload AreaDropzoneStructure: 僅限 .csv。Vocabulary: 僅限 .zip。若格式不符,邊框變紅並報錯。
System LogicInfo Box針對當前 Tab 提供關鍵的操作警示,防止管理員「空降」單字到不存在的架構中。
ActionPrimary Button點擊後進入 A-33 Preview。後端會根據當前 Tab 選擇不同的解析引擎。

⚙️ 導入類型的邏輯差異

Structure Import (架構導入)

  • 用途: 建立或擴充 Category > Level > Session。
  • 邏輯: 系統會掃描 category_id, level_code, session_id。
  • 預覽重心: 是否有重複的 ID?是否有新的 Level 需要手動調整開關?

Vocabulary Import (內容導入)

  • 用途: 新增或修改單字/句子及其屬性(拼音、快問快答等)。
  • 邏輯: 必須先有架構,否則單字會找不到對應的「房間」。
  • 預覽重心: 哪些單字是 New?哪些單字已存在需要 Update?媒體文件是否缺失?

📊 Structure Import 格式規格

欄位名稱 (Column)必填說明範例
category_id大類的唯一標識碼 (用於生成 Tab)。EK
category_name大類的顯示名稱。Early Kids
level_code等級的唯一標識碼 (Key)。L1
level_name等級的顯示名稱。Level 1: Basics
session_id單元的唯一標識碼 (Key)。1-1
session_name單元的顯示名稱。Greetings

CSV 範本內容

category_id,category_name,level_code,level_name,session_id,session_name
EK,Early Kids,EKL1,Level 1: Basics,Session 1,Greetings
EK,Early Kids,EKL1,Level 1: Basics,Session 2,Numbers
EK,Early Kids,EKL2,Level 2: School,Session 1,My School
ES,Elementary,ESL1,Level 1: Daily Life,Session 1,Self-Intro

📊 Vocabulary Import 格式規格

ZIP 壓縮包結構規範

vocabulary_bundle.zip
├── vocabulary.csv (必須放在根目錄)
├── images/ (存放圖片選項)
├── audio/ (存放內容音檔、快問快答音檔)
└── gif/ (存放筆順 GIF)

vocabulary.csv 格式規格

欄位名稱 (Column)必填說明範例
category_id大類標識 (如 EK, ES, NH)EK
level_code對應架構中的 level_code。L1
session_id對應架構中的 session_id。1-1
語言標註 简体 / 繁體 / 英語。简体
類型內容分類:生字 / 生词 / 句子。句子
拼音標註拼音,建議包含聲調。zhè shì jǐ ?
英文英文翻譯。What is this?
内容學習內容。这是几?
圖片選項圖片檔名。How many_01-01.png
筆順GIF筆順檔名。character_a.gif
音檔名字主內容音檔名。sentence_1.1.4.mp3
是否快问快答是 / 否。
快问快答问句若為「是」,則填寫 AI 提問的文字。这是几?
快问快答问句音档AI 提問的音檔名。sentence_1.1.4.mp3
是否有其他答案是 / 否,沒有的時候默認否。
其他答案可能性若有,填寫其他可接受的答案,用 | 分隔。这是五。|五。

CSV 範本內容

category_id,level_code,session_id,語言,類型,拼音,英文,内容,圖片選項,筆順GIF,音檔名字,是否快问快答,快问快答问句,快问快答问句音档,是否有其他答案,其他答案可能性
EK,L1,1-1,简体,句子,zhè shì jǐ ?,What is this?,这是几?,How many_01-01.png,,sentence_1.1.4.mp3,否,,,,
EK,L1,1-2,简体,句子,shì wǔ .,It is five.,是五,Five_01-02.png,,short_sentence_1.1.1.mp3,是,这是几?,sentence_1.1.4.mp3,是,这是五。
EK,L1,2-1,简体,生字,wǔ,Five,五,number_5.png,5_stroke.gif,word_5.mp3,否,,,,

💡 導入注意事項 (Expert Tips)

  1. 檔案編碼: 務必使用 UTF-8 (帶 BOM) 格式儲存 CSV,否則中文(簡體/繁體)會出現亂碼。
  2. 媒體路徑對應: CSV 內只需填寫「檔名」,系統會自動解壓 ZIP 並去對應文件夾尋找:/images/ 存放圖片,/audio/ 存放所有音檔,/gif/ 存放筆順 GIF。
  3. 依賴關係 (關鍵): 必須先導入 Structure 建立對應的 category_id, level_code 與 session_id,再導入 Vocabulary Bundle。
  4. 更新與跳過邏輯: 單字更新:若系統已存在相同 Content + Type 的單字,導入時會比對其他欄位,若有變動則標記為 UPDATE。架構跳過:若 ID 已存在則標記為 SKIP,不會覆蓋已有的架構名稱。
  5. 媒體缺失檢查: 系統在 A-33 預覽時,會自動校驗 ZIP 內的文件夾。若 CSV 中寫了檔名但在文件夾中找不到文件,會標記為 MISSING MEDIA 警告,不可導入。

🔁 完整交互路徑

  1. 進入:A-30 點擊頂部的 [⤒ Bulk Import] 按鈕。
  2. 選擇與上傳 (A-33-O): 選擇導入類型 → 下載 Template → 拖入填寫好的文件 → 點擊 Analyze & Preview。
  3. 校驗預覽 (A-33): 查看 NEW, SKIP, UPDATE, ERROR 狀態 → 確認無誤後點擊 Confirm。
  4. 完成: 系統返回 A-32 (單字列表),顯示剛剛導入的新內容。

🔎 邏輯自我檢查

  • 安全優先: 透過 SKIP 邏輯保護架構不被意外修改,透過 ERROR 攔截無效的單字歸屬。
  • 媒體閉環: ZIP 解包校驗解決了以前「數據導入成功但圖片顯示 404」的痛點。
  • 層級對應: 加入了 category_id 的顯示,確保管理員不會把 EK 的單字錯入到 ES 的 Level 裡。

提交版本內容版本 29c89979提交 5ca7557規格文件,功能實現狀態另行確認