依照 📖 平台操作說明 逐項實測每個功能的操作流程、輸入與輸出
🎯 測試目的(依操作說明):依說明「點導覽列進入 首頁」— 頁面能正常載入
GET /HTTP 200,頁面含「胖爹英文」,大小 19.8 KB
🎯 測試目的(依操作說明):依說明「點導覽列進入 Nibbles 短影音」— 頁面能正常載入
GET /nibblesHTTP 200,頁面含「Nibbles」,大小 8.6 KB
🎯 測試目的(依操作說明):依說明「點導覽列進入 影音圖書館」— 頁面能正常載入
GET /libraryHTTP 200,頁面含「圖書館」,大小 9.3 KB
🎯 測試目的(依操作說明):依說明「點導覽列進入 Pro 教學專區」— 頁面能正常載入
GET /proHTTP 200,頁面含「Pro」,大小 11.0 KB
🎯 測試目的(依操作說明):依說明「點導覽列進入 學習專區」— 頁面能正常載入
GET /studyHTTP 200,頁面含「學習專區」,大小 25.1 KB
🎯 測試目的(依操作說明):依說明「點導覽列進入 英霸對戰」— 頁面能正常載入
GET /battleHTTP 200,頁面含「對戰」,大小 13.2 KB
🎯 測試目的(依操作說明):依說明「點導覽列進入 AI 學習工具」— 頁面能正常載入
GET /aiHTTP 200,頁面含「AI」,大小 12.6 KB
🎯 測試目的(依操作說明):依說明「點導覽列進入 教師管理平台」— 頁面能正常載入
GET /teacherHTTP 200,頁面含「教師」,大小 10.3 KB
🎯 測試目的(依操作說明):依說明「點導覽列進入 社群互動」— 頁面能正常載入
GET /communityHTTP 200,頁面含「社群」,大小 10.4 KB
🎯 測試目的(依操作說明):依說明「點導覽列進入 合作與公益」— 頁面能正常載入
GET /partnersHTTP 200,頁面含「合作」,大小 12.4 KB
🎯 測試目的(依操作說明):依說明「點導覽列進入 小斗英 APP」— 頁面能正常載入
GET /appHTTP 200,頁面含「小斗英」,大小 11.6 KB
🎯 測試目的(依操作說明):依說明「點導覽列進入 平台操作說明」— 頁面能正常載入
GET /guideHTTP 200,頁面含「操作說明」,大小 117.9 KB
🎯 測試目的(依操作說明):品牌 Logo 正常提供
GET /static/logo.pngHTTP 200, Content-Type=image/png
🎯 測試目的(依操作說明):學習專區「vocab」模組資料檔可載入且為合法 JSON
GET /static/study/vocab.jsonHTTP 200,JSON 頂層鍵: levels(270 KB)
🎯 測試目的(依操作說明):學習專區「grammar」模組資料檔可載入且為合法 JSON
GET /static/study/grammar.jsonHTTP 200,JSON 頂層鍵: junior, senior(53 KB)
🎯 測試目的(依操作說明):學習專區「exam」模組資料檔可載入且為合法 JSON
GET /static/study/exam.jsonHTTP 200,JSON 頂層鍵: gsat, cloze, reading, translate(25 KB)
🎯 測試目的(依操作說明):學習專區「listening」模組資料檔可載入且為合法 JSON
GET /static/study/listening.jsonHTTP 200,JSON 頂層鍵: dictation, cloze, mcq, sound, stress(38 KB)
🎯 測試目的(依操作說明):學習專區「games」模組資料檔可載入且為合法 JSON
GET /static/study/games.jsonHTTP 200,JSON 頂層鍵: sentence, cloze, daily(8 KB)
🎯 測試目的(依操作說明):學習專區「essay_library」模組資料檔可載入且為合法 JSON
GET /static/study/essay_library.jsonHTTP 200,JSON 頂層鍵: pastPrompts, patterns(10 KB)
🎯 測試目的(依操作說明):說明「首頁 → 即時統計」— 提供會員/影音/互動數
GET /api/stats{"videos":15,"likes":26722,"views":114863,"members":15,"donation_total":3700}
🎯 測試目的(依操作說明):說明「Nibbles → 瀏覽短影音牆」
GET /api/videosHTTP 200,共 15 部影音
🎯 測試目的(依操作說明):社群與合作頁的公開資料
GET /api/stars|announcements|partners|schools/api/stars ✓ | /api/announcements ✓ | /api/partners ✓ | /api/schools ✓
🎯 測試目的(依操作說明):說明「社群 → 課程許願池」
GET /api/wishesHTTP 200,共 6 個願望
🎯 測試目的(依操作說明):說明「Pro 專區 → 瀏覽課程」— 5 大分類
GET /api/pro/coursesHTTP 200,共 18 門課程
🎯 測試目的(依操作說明):說明「Pro 專區 → 預約直播」場次清單
GET /api/pro/liveHTTP 200,共 4 場直播
🎯 測試目的(依操作說明):說明「對戰 → 週排行榜」
GET /api/battle/leaderboard{"top":[{"user_id":13,"display_name":"QA測試學生","avatar_emoji":"😄","total_score":768,"games":2,"wins":0},{"user_id":10,"display_name":"QA測試學生","avatar_emoji":"🧑🎓","total_score":383,"games":2,"wins":0},{"user_id":12,"display_name":"QA測試好友","avatar_emoji":"👩🎓","total_score":280,"games":1,"wins":0 …(截斷)
🎯 測試目的(依操作說明):安全性 — 說明指出上傳需登入
POST /api/videos(無登入)HTTP 401 ✓ 正確拒絕:「請先登入會員才能發表影音喔!」
🎯 測試目的(依操作說明):說明「會員系統 → 註冊」:填暱稱/Email/密碼 → 自動登入
POST /api/auth/register {email:[email protected], display_name:QA測試學生, password:******}歡迎加入 Tupalish,QA測試學生!🍊(已取得 Cookie)
🎯 測試目的(依操作說明):註冊驗證:密碼至少 6 碼
POST /api/auth/register {password:"123"}HTTP 400 ✓「密碼至少需 6 個字元」
🎯 測試目的(依操作說明):註冊驗證:同 Email 不能註冊兩次
POST /api/auth/register(同 [email protected])HTTP 409 ✓「這個 Email 已經註冊過了,請直接登入」
🎯 測試目的(依操作說明):說明「會員系統 → 登出」
POST /api/auth/logout登出成功,/api/auth/me 已無使用者 ✓
🎯 測試目的(依操作說明):說明「會員系統 → 登入」:Email+密碼取回身分
POST /api/auth/login {email:[email protected]}登入成功:歡迎回來,QA測試學生!🍊(token ✓,/me 確認身分=QA測試學生)
🎯 測試目的(依操作說明):登入後同步身分/積分
GET /api/auth/me{"id":16,"username":"qa_stu_cmdncj_fw3z","display_name":"QA測試學生","email":"[email protected]","role":"member","avatar_emoji":"🦊","points":0}
🎯 測試目的(依操作說明):登入安全驗證
POST /api/auth/login(錯誤密碼)HTTP 401 ✓「Email 或密碼錯誤」
🎯 測試目的(依操作說明):為教師平台與好友 PK 測試準備帳號
註冊 [email protected] 與 [email protected]老師 ✓ 好友 ✓
🎯 測試目的(依操作說明):說明「常見問題 → AI 每日額度」
GET /api/ai/quota(登入){"tier":"free","used":0,"limit":40,"chatUsed":0,"chatLimit":20}
🎯 測試目的(依操作說明):說明「Nibbles → 上傳影音發表」:選檔案+標題+分類 → 送審 +20 積分
POST /api/videos multipart {title, category, file:test.mp4}id=18,影音上傳成功!已送交碩士級小編審核,通過後將公開發表。(+20 積分 🎉)
🎯 測試目的(依操作說明):說明「Nibbles → 按讚與留言」
POST /api/videos/18/like{"likes":1}
🎯 測試目的(依操作說明):說明「Nibbles → 按讚與留言」:輸入文字送出
POST /api/videos/18/comments {content}留言成功,該影音現有留言可讀回 ✓
🎯 測試目的(依操作說明):說明「Pro → 角色切換器」:免付費體驗 6 種身分
POST /api/pro/demo-role {role:"pro"}demo_role=pro 生效,tier 查詢回傳 pro ✓
🎯 測試目的(依操作說明):說明「Pro → 升級 Pro」:解鎖課程/直播/批改,效期 30 天
POST /api/pro/upgrade(登入)🎉 升級成功!QA測試學生 現在是 Pro 高級會員(效期至 2026-09-02)。訂閱費 5% 已提撥公益!
🎯 測試目的(依操作說明):說明「Pro → 瀏覽課程」:點課程卡看課綱
GET /api/pro/courses/1{"course":{"id":1,"title":"自然發音 Phonics","description":"26字母+44音素完整攻略,從零開始建立發音基礎","pro_category":"basics","emoji":"🔤","lesson_count":12,"is_pro":1,"teacher_name":"胖爹","enrolled":1280,"rating":4.9,"sort_order":1,"created_at":"2026-07-20 03:14:53","ai_generated":0},"lessons":[{"id":1,"course_id":1,"seq":1,"title":"字母 A-G 的自然發音規則","duration_min":22,"is_free_preview":1,"ai_content":null,"added_month" …(截斷)
🎯 測試目的(依操作說明):說明「Pro → 預約直播」:選場次按預約
POST /api/pro/live/1/book首次:📅 預約成功!「會考英語考前總複習 LIVE」開播前將提醒您(2026-07-25 20:00);重複預約 → HTTP 409 ✓
🎯 測試目的(依操作說明):說明「Pro → AI 作業批改」:提交作文 → AI 秒批(分數/優點/修正)
POST /api/pro/homework {hw_type:"essay", title, content:英文短文}AI 初批完成,作業清單 1 筆,狀態=ai_reviewed
🎯 測試目的(依操作說明):說明「AI 工具 → 寓言故事」:輸入主題字 → 英文寓言+中譯
POST /api/ai/fable {words:"honesty, fox", level:"beginner"}「The Honest Fox」story 118 字 + 中譯 ✓ moral: Honesty builds trust and good friendships.
🎯 測試目的(依操作說明):說明「AI 工具 → 心智圖」:輸入中心單字 → 相關字網絡
POST /api/ai/mindmap {topic:"travel"}center=travel,6 個分支:Transportation / Accommodation / Sightseeing & Attractions / Travel Activities & Planning / Safety & Emergencies / Food & Dining
🎯 測試目的(依操作說明):說明「AI 工具 → AI 對話」:英文聊天 + 文法建議
POST /api/ai/chat {messages:[{user:"I goed to school yesterday."}]}Nice try! You can say, "I went to school yesterday and met my friend." What did you two do together? 💡 注意不規則動詞:go 的過去式是 went;meet 的過去式是 met。可以說:"I went to school yesterday and met my friend."
🎯 測試目的(依操作說明):說明「AI 工具 → 中翻英」步驟 2:AI 給中文句
POST /api/ai/translate-question {level:"easy"}出題:「我每天早上搭公車去學校,通常會在車上看書。」hint: take the bus
🎯 測試目的(依操作說明):說明「AI 工具 → 中翻英」步驟 3-4:送出翻譯 → 批改
POST /api/ai/translate {chinese:"我每天走路上學。", answer:"I walk to school every day."}score=100,feedback: 非常好!句子語法、用字與語序都很自然,簡單現在式正確地表達了習慣性的動作(每天走路上學)。“walk to school” 和 “every day” 的順序也很符合英文習慣。繼續保持這種正確且簡潔的表達方式!
🎯 測試目的(依操作說明):說明「教師 → 建立班級」:輸入班名/機構 → 得專屬代碼
POST /api/teacher/classes {name:"QA自動測試班", org_name:"QA補習班"}班級 id=4,代碼=6HKBZX ✓
🎯 測試目的(依操作說明):說明「學習專區 → 加入班級」:輸入 6 碼代碼
POST /api/class/join {code:"${code}"}加入「QA自動測試班_cmdncj」(QA補習班)✓
🎯 測試目的(依操作說明):加入班級驗證
POST /api/class/join {code:"ZZZZZZ"}HTTP 404 ✓「找不到此班級代碼,請確認後再試」
🎯 測試目的(依操作說明):說明「加入班級 → 進度自動上傳(只增不減)」
POST /api/study/progress {learned_words:35, grammar_done:4, exam_done:2, points:120, streak:3}進度上傳 ✓(並驗證重傳較小值)
🎯 測試目的(依操作說明):說明「教師 → 查看全班」:單字/文法/試題/積分/AI用量/最後活動
GET /api/teacher/classes/${id}/students學生「QA測試學生」單字=35 文法=4 試題=2 積分=undefined ✓ 進度未被小值覆蓋
🎯 測試目的(依操作說明):說明「教師 → 學生詳情」:14 天 AI 圖/功能統計/測驗紀錄
GET /api/teacher/students/:sid/detail詳情鍵: student, aiDaily, quiz, progress
🎯 測試目的(依操作說明):說明「AI作文 → AI 智慧出題」:選程度/題型 → 題目+引導問題+提示
POST /api/essay/prompt {level:"junior", type:"guided", topic:"校園"}「Green Week Proposal」引導問題 3 題、建議單字 7 個 ✓
🎯 測試目的(依操作說明):說明「AI作文 → 深度批改」:四項評分+逐句診斷+3 升級句+全文修改;登入自動存歷程
POST /api/essay/grade {title, content:含錯誤的英文作文, level:"junior"}得分 4/20(待加強),rubric 4 項 ✓,診斷 8 個問題(分類:主詞動詞一致/句構/介係詞/時態),升級句 3 ✓,已存歷程 essay_id=7
🎯 測試目的(依操作說明):說明「AI作文 → AI 範文」:同題範文+結構解析+好句
POST /api/essay/model {title, prompt_text, level}範文 1842 bytes,鍵: essay, translation, structure, highlights
🎯 測試目的(依操作說明):說明「AI作文 → 我的歷程」:趨勢/四項能力/常犯錯誤
GET /api/essay/history + /api/essay/stats歷程 1 筆;stats 鍵: trend, radar, weaknesses, total
🎯 測試目的(依操作說明):說明「歷程 → 點紀錄回顧完整報告」
GET /api/essay/${id}essay_id=7 讀取成功,含 feedback ✓
🎯 測試目的(依操作說明):說明「教師 → 派作文作業」:題目+字數+截止日 → 學生端出現
POST /api/teacher/assignments {class_id, title, prompt_text, level, min_words:60}作業 id=4 已派發,學生端可見「QA作業:My Weekend」✓
🎯 測試目的(依操作說明):說明「AI作文 → 班級作業」:開始寫 → 送批改自動繳交
POST /api/essay/grade {assignment_id:${aid}}繳交成功,得分 8/20,essay_id=8
🎯 測試目的(依操作說明):說明「教師 → 派作業」步驟 4-5:看繳交表 → 查看作文 → 留評語
GET /api/teacher/assignments/${aid} + POST /api/teacher/essays/:eid/comment繳交表 ✓ 學生得分=8;評語已寫入且學生端可見 ✓
🎯 測試目的(依操作說明):說明「學習專區 → AI 造句」:目標字+句子 → 批改
POST /api/study/sentence {word:"improve", sentence:"I want to improve my English skill everyday."}correct=false,feedback: 句子中「everyday」應寫成兩個字「every day」(表示「每一天」),而「English skill」通常要用複數「English skills」或直接說「my English」。'improve' 的用法沒問題。
🎯 測試目的(依操作說明):說明「對戰 → 單人練習」:AI 即時出 5 題 → 作答 → 得分
POST /api/battle/create {mode:"solo"} → POST /api/battle/:id/submit {answers, ms}5 題出題 ✓(答案已隱藏)交卷:答對 4 題,得分 485
🎯 測試目的(依操作說明):說明「對戰 → 好友 PK」:A 建房拿 6 碼 → B 加入 → 雙方交卷 → 判定勝負
A: create pvp → B: join {code} → 雙方 submit → GET state房號 YYELCX ✓ 加入 ✓ 雙方交卷 ✓ 結果:QA測試學生 183 vs QA測試好友 380,winner_id=18
🎯 測試目的(依操作說明):對戰防呆驗證
建房者自己 join 同房號HTTP 400 ✓「不能加入自己開的房間啦!把房號傳給朋友吧 😄」
🎯 測試目的(依操作說明):說明「對戰 → 週排行榜 & 戰績」
GET /api/battle/history對戰歷史 2 筆 ✓,最新一場:pvp 得分 183,答對 1/5
🎯 測試目的(依操作說明):說明「社群 → 許願池」:許願 → 別人投票
POST /api/wishes {title} → POST /api/wishes/:id/vote願望 id=7 建立 ✓ 投票後票數=1 ✓
🎯 測試目的(依操作說明):說明「合作公益 → 小額捐款」:金額+留言
POST /api/donations {donor_name, amount:100, message}感謝您的愛心!捐款收據將寄至您的Email,100%用於偏鄉英語教育。
🎯 測試目的(依操作說明):輸入驗證:金額必須 > 0
POST /api/donations {amount:0}HTTP 400 ✓「請輸入捐款金額」
🎯 測試目的(依操作說明):還原測試環境,避免殘留資料
DELETE /api/class/:id/leave、/api/teacher/assignments/:aid、/api/teacher/classes/:id退班 ✓ 刪作業 ✓ 刪班級 ✓(QA 帳號保留供追溯)