A-33-O Import Upload Center
內容依原始規格呈現 · 查看 Markdown 來源 ↗需具備倉庫查看權限
數據導入中心
🎨 Figma: node-698-2843 (A-30 同頁面子視圖;含 Structure Import / Vocabulary Bundle Import 子變體) 🔗
🎯 核心功能
使用者: Admin / Super Admin
作為 A-30 與 A-33 之間的橋樑,此頁面提供標準的 CSV/ZIP 範本下載,並允許管理員選擇特定的導入模式。這是確保數據格式正確的第一道關卡。
🧱 畫面結構
| 區域 | 說明 |
|---|---|
| Header | Nihao Admin Course Management > Import Center, [👤] |
| Sidebar | < Back to Course Management |
| Import Tabs | [Structure Import] / [Vocabulary Bundle Import] Tab 切換 |
| Download | Template 下載按鈕 |
| Upload Area | Drag & Drop 區域 |
| System Logic | 當前模式的關鍵操作警示 |
| Action | [Analyze & Preview >] / [Unpack & Preview >] 按鈕 |
📦 區塊說明
| 區塊 | 元件 | 功能與行為 |
|---|---|---|
| Import Tabs | Tab Switcher | 核心導航。切換後,下方「範本下載」與「上傳邏輯」同步更新。 |
| Download | Template Link | Structure: 提供 CSV 範本。Vocabulary: 提供包含目錄結構的 ZIP 範本。 |
| Upload Area | Dropzone | Structure: 僅限 .csv。Vocabulary: 僅限 .zip。若格式不符,邊框變紅並報錯。 |
| System Logic | Info Box | 針對當前 Tab 提供關鍵的操作警示,防止管理員「空降」單字到不存在的架構中。 |
| Action | Primary 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)
- 檔案編碼: 務必使用 UTF-8 (帶 BOM) 格式儲存 CSV,否則中文(簡體/繁體)會出現亂碼。
- 媒體路徑對應: CSV 內只需填寫「檔名」,系統會自動解壓 ZIP 並去對應文件夾尋找:/images/ 存放圖片,/audio/ 存放所有音檔,/gif/ 存放筆順 GIF。
- 依賴關係 (關鍵): 必須先導入 Structure 建立對應的 category_id, level_code 與 session_id,再導入 Vocabulary Bundle。
- 更新與跳過邏輯: 單字更新:若系統已存在相同 Content + Type 的單字,導入時會比對其他欄位,若有變動則標記為 UPDATE。架構跳過:若 ID 已存在則標記為 SKIP,不會覆蓋已有的架構名稱。
- 媒體缺失檢查: 系統在 A-33 預覽時,會自動校驗 ZIP 內的文件夾。若 CSV 中寫了檔名但在文件夾中找不到文件,會標記為 MISSING MEDIA 警告,不可導入。
🔁 完整交互路徑
- 進入: 在 A-30 點擊頂部的 [⤒ Bulk Import] 按鈕。
- 選擇與上傳 (A-33-O): 選擇導入類型 → 下載 Template → 拖入填寫好的文件 → 點擊 Analyze & Preview。
- 校驗預覽 (A-33): 查看 NEW, SKIP, UPDATE, ERROR 狀態 → 確認無誤後點擊 Confirm。
- 完成: 系統返回 A-32 (單字列表),顯示剛剛導入的新內容。
🔎 邏輯自我檢查
- 安全優先: 透過 SKIP 邏輯保護架構不被意外修改,透過 ERROR 攔截無效的單字歸屬。
- 媒體閉環: ZIP 解包校驗解決了以前「數據導入成功但圖片顯示 404」的痛點。
- 層級對應: 加入了 category_id 的顯示,確保管理員不會把 EK 的單字錯入到 ES 的 Level 裡。