📘 完整系統說明文件

醫檢師臨床溝通
情境模擬系統

以 AI 角色扮演技術模擬真實臨床溝通場景,協助醫事檢驗師學員在安全環境中練習危急值通報、跨職類溝通與爭議處理,並即時取得結構化評分回饋。

🖥️ 前端 純 HTML + JavaScript
☁️ 後端 Cloudflare Worker
🤖 AI Gemini 3.1 Flash-Lite(預設)
🔊 語音 Google WaveNet TTS
💾 儲存 Cloudflare KV + localStorage
01

系統介紹

設計目標、核心功能與適用對象

本系統針對醫事檢驗師(醫檢師)的臨床溝通訓練需求設計,提供沉浸式的 AI 角色扮演對話環境。學員以「醫檢師」身份與 AI 扮演的護理師、醫師等角色進行語音或文字互動,完成後獲得結構化即時評分。教師可為每個情境自訂評分維度、配分比重與具體判斷準則。

🎭
沉浸式角色扮演
AI 持續扮演指定角色,依情境設定表現出不同態度(急躁、懷疑、激動),不中途跳脫角色。
🔊
真人語音合成
使用 Google WaveNet 神經網路 TTS,男女聲分別對應不同角色,具有自然語速與音調。
📊
自訂評分標準
每個情境可設定 2–4 個評分維度,自訂名稱、配分比重與具體判斷準則,由 AI 對照給分。
📄
SOP 對照機制
教師可為每個情境設定 SOP 標準,AI 會依 SOP 糾正或融入知識,強化程序訓練。
🎤
語音輸入支援
Chrome 瀏覽器可使用麥克風輸入,模擬真實電話溝通情境,語音自動轉文字後送出。
⚙️
教師後台管理
密碼保護後台,可新增、編輯、複製、刪除情境,並透過 JSON 匯入匯出或雲端同步。

適用對象

👨‍🎓 學員
醫事檢驗學系學生、實習醫檢師、需加強溝通訓練的在職人員。使用 index.html 進行模擬練習。
👩‍🏫 教師 / 管理員
設計課程情境、設定評分標準的教育人員。使用 admin.html 管理所有情境設定。

02

技術架構

系統元件、資料流向與服務端點

前端(瀏覽器)
📄 index.html
學員介面
⚙️ admin.html
教師後台
Cloudflare Workers(中繼代理)
🔀 gemini-proxy
AI 對話 + 情境 KV 存取
🔀 google-tts-proxy
語音合成代理
Google Cloud 服務
🤖 Gemini 2.5 Flash
語言模型 API
🔊 WaveNet TTS
神經網路語音合成
持久化儲存
☁️ Cloudflare KV
情境資料雲端同步
💾 localStorage
本機快取 / 離線備援

服務端點

端點用途說明
/gemini AI 對話 代理 Gemini API,隱藏 API Key;前端直接呼叫此端點
/scenarios 情境資料讀寫 GET 公開讀取;POST 需 token 驗證,儲存情境 JSON 至 KV
/auth 後台登入驗證 POST 驗證密碼,回傳 session token(SHA-256 雜湊)
/auth/change 修改密碼 POST 需帶 token,更新 KV 中的密碼雜湊,即時跨裝置生效
/records 成績紀錄讀寫 POST 寫入學員成績與對話;GET 讀取索引列表(公開)
/records/:key 單筆紀錄 GET 讀取完整對話與評分;DELETE 需 token(後台刪除用)
google-tts-proxy.yusfish.workers.dev 語音合成 代理 Google Cloud TTS API,回傳 base64 MP3

資料儲存策略

Cloudflare KV:情境資料
教師後台儲存時同步推送至 KV,學員頁面啟動時優先從 KV 拉取最新情境,確保多裝置一致。
Cloudflare KV:成績紀錄
每次模擬完成後自動寫入 KV(key:record:{ts}:{員編}),另維護 records_index 索引方便列表查詢,最多保留 500 筆。
Cloudflare KV:密碼雜湊
後台密碼以 SHA-256 雜湊儲存於 KV(key:admin_pwd_hash),Worker 端驗證,前端不接觸明文,跨裝置即時生效。
備援:localStorage 本機
KV 讀取失敗時降級使用本機快取,保障離線或網路不穩時仍可使用情境資料。

03

學員操作:開始使用

從開啟頁面到選擇情境的完整步驟

建議使用 Google Chrome 瀏覽器,以確保語音輸入(Web Speech API)與語音合成功能正常運作。其他 Chromium 系瀏覽器(Edge、Brave)亦可,Safari / Firefox 部分功能受限。

步驟一:設定語言模型

頁面頂端可切換模型。預設使用 Gemini 3.1 Flash-Lite,速度最快且性價比最高;若出現「高需求」(503)錯誤,切換至其他模型。

模型特性適用情境
3.1 Flash Lite 速度最快、延遲最低、費用最省 預設選項,品質對齊 2.5 Flash
2.5 Flash 高品質推理、角色扮演穩定 3.1 Flash Lite 出現問題時切換
2.5 Flash Lite 速度較快、配額較寬 備援選項
3 Flash 強推理能力、含思維步驟 需要最高品質時使用(速度較慢)

步驟二:填寫學員資料

開始模擬前必須填寫姓名員編,系統才會解鎖「開始模擬」按鈕。資料用於將成績與對話紀錄回傳至教師後台,請如實填寫。

步驟三:設定語音合成(TTS)

🎙️
Google WaveNet(推薦)
透過 Cloudflare Worker 代理,聲音自然逼真。
預設端點已設定,直接點「測試」確認連線。
每月前 100 萬字元免費。
🔊
瀏覽器內建 TTS
不需額外設定,直接使用作業系統語音引擎。
聲音品質因裝置而異,不需網路連線。

步驟四:選擇情境並開始

1
從情境列表選擇目標情境
點選情境卡片,卡片會反白標記。情境右上角若有 📄 SOP 標籤,代表此情境已設定標準流程供 AI 對照。
2
點擊「開始模擬」
頁面切換至模擬介面,AI 自動開口說出第一句情境開場白,語音同步播放。
3
閱讀情境背景說明
畫面頂端顯示你的身份(醫檢師)、對方角色,以及情境背景說明,幫助進入狀況。
04

學員操作:進行模擬

對話輸入、語音控制與進度追蹤

語音輸入流程

1
按 🎤 開始錄音
按鈕變為 ⏹,hint 列顯示「● 錄音中 再按一下停止」。輸入框保持空白,辨識中狀態顯示於 hint 列。
2
說話
系統持續辨識,hint 列即時顯示「[辨識中: ...]」或「已辨識:xxx」。靜音後自動重啟下一段,不會中斷錄音。
3
按 ⏹ 停止錄音
辨識結果寫入輸入框,錄音停止。可修改文字後再按送出,不會自動送出
4
按送出 / Enter
確認文字後手動送出,AI 才會回應。
注意:當麥克風錄音中時,AI 朗讀會自動停止,避免語音迴授。語音輸入僅支援 Chrome / Edge 等 Chromium 瀏覽器。

回合計數

畫面左上顯示「回合 N / M」,M 為此情境設定的總回合數(教師可設定 1–10 回合,預設 4)。右側圓點進度條顯示目前進度:

已完成的回合
目前回合
尚未到達

朗讀 AI 回應

每則 AI 回應下方有「🔊 朗讀」按鈕,點擊後 AI 角色聲音播放;播放中再點一次可停止。新回應產生時預設自動朗讀。

注意:當麥克風錄音中時,AI 朗讀會自動停止,避免語音迴授(AI 聲音被麥克風收進去)。

AI 的行為邏輯

AI 根據情境設定的以下參數調整行為:

參數說明範圍
角色強硬程度 控制 AI 配合度,數值越高越難搞定 1(好說話)→ 5(難纏)
回應長度 控制 AI 每次回應的句數 1(極簡短)→ 5(詳細)
語氣情緒 控制 AI 的情緒激動程度 1(平靜)→ 5(激動)
Temperature 控制 AI 回應的隨機性與創意 0.0 → 1.0(預設 0.85)
05

學員操作:成績評分

評分維度、等級標準與結果解讀

達到設定回合數後,系統自動進入評分流程,分兩批並行呼叫 API,加快評分速度。

第一批(並行)
所有維度的數字分數同時發出請求,每次只回傳一個整數,不會截斷。
第二批(串行)
拿到分數後發出文字評語請求,包含各維度點評與整體建議。

評分維度

溝通禮貌
/ 33 分
問候、稱謂、語氣態度、換位思考、安撫情緒的能力。
資訊準確性
/ 34 分
核對資訊完整度、說明正確性、術語使用是否精準。
專業應變
/ 33 分
面對刁難或質疑時的反應、提供解方的能力、流程掌握度。

等級標準

等級分數說明
A 優85 – 100溝通流暢、SOP 掌握佳、能有效處理對方情緒
B 良70 – 84基本溝通能力合格,部分環節有待加強
C 及格55 – 69核心資訊傳達但方式有明顯缺失
D 待加強0 – 54流程偏差明顯,建議重新複習後再練習

結果欄位說明

評分卡片包含:各維度分數 + 條狀圖 + 文字點評(10字內)、整體建議(20字內)。若情境有設定 SOP,評分中也會具體指出遵守或缺漏的 SOP 步驟。維度顏色固定(紫→綠→棕→紫紅)便於辨識。


06

教師後台:登入

密碼保護機制與修改方式

後台位於 admin.html,學員頁面右上角「⚙ 教師後台」連結可直接開啟。

預設密碼

系統預設密碼為 1234。首次登入時 Worker 會自動將其雜湊值寫入 Cloudflare KV,請立即修改為專屬密碼。

安全機制

🔒 KV 雜湊驗證
密碼以 SHA-256 雜湊儲存於 Cloudflare KV,Worker 端比對,前端完全不接觸明文密碼。
⏱ Session Token
登入後 token 存於 sessionStorage,關閉分頁即自動失效,不殘留於裝置。

修改密碼

1
登入後台
在鎖定畫面輸入目前密碼,按 Enter 或點「進入後台」。密碼由 Cloudflare Worker 驗證。
2
找到「系統設定」區塊
點選 Topbar「⚙ 設定」頁籤,在「🔑 系統設定」卡片填入新密碼(輸入兩次確認)。
3
點「更新密碼」
新密碼雜湊儲存至 Cloudflare KV,所有裝置下次登入即需使用新密碼,真正跨裝置同步。
跨裝置同步:密碼改動即時對所有裝置生效,不需要在每台電腦分別設定。
07

教師後台:情境管理

新增、編輯、複製與刪除情境的完整說明

預設情境

系統內建三個示範情境,可直接使用或修改:

🚨
危急值通報被掛電話
急診病房護理師 · 4 回合 · SOP 嚴格模式

血鉀 6.8 mmol/L,通知病房護理師時對方說「我知道了」就掛斷。測試學員是否能確保對方複誦資訊並承諾通知醫師。

強硬 4/5 情緒 4/5 長度 2/5
🩸
醫師質疑血型報告正確性
主治醫師 · 4 回合 · SOP 自然模式

發血前,主治醫師質疑「血型怎麼跟上次不一樣,是不是驗錯了?」測試學員能否清楚說明正逆向定型及檢體核對流程。

強硬 4/5 情緒 3/5 長度 3/5
📋
檢體退件 dispute
病房護理師 · 4 回合 · SOP 嚴格模式

護理師送來的尿液檢體量不足,退件後護理師生氣地打電話來抗議。測試學員能否有邏輯地說明標準並給出協助方案。

強硬 3/5 情緒 5/5 長度 2/5

情境設定欄位說明

欄位說明注意事項
圖示情境代表的 emoji建議使用醫療相關表情符號
情境標題簡短有力的標題顯示於學員選擇列表
簡短描述一句話說明情境顯示於學員選擇列表卡片下方
回合數對話總回合數建議 3–6 回合,過多會稀釋難度
背景說明學員看到的情境說明文字交代時間、事件背景,不含角色指引
角色名稱AI 扮演的角色稱呼顯示於聊天氣泡左上方
角色描述角色的簡短性格說明顯示於學員的情境頁(「對方身份」後)
聲音性別選擇 TTS 語音女聲:cmn-TW-Wavenet-A;男聲:cmn-TW-Wavenet-B
AI 角色指引給 AI 的 System Prompt 指示學員不可見;是決定 AI 行為最關鍵的欄位
TemperatureAI 回應隨機性0.7–0.9 為角色扮演最佳範圍

新增 / 複製 / 刪除

+ 新增情境
點擊虛線框「新增情境」,系統建立空白情境並自動展開編輯面板。
⧉ 複製情境
情境卡右上角複製按鈕,快速建立相似情境,標題自動加上「(複製)」。
🗑 刪除情境
系統至少保留一個情境,刪除需二次確認。刪除後不可還原(請先匯出備份)。
每次修改後請點選頂端「💾 儲存全部」或底部「儲存全部」按鈕,才會同步至 Cloudflare KV 雲端供學員使用。
08

教師後台:SOP 設定

標準作業程序設定與 AI 使用模式

SOP 功能讓 AI 在對話中參考標準作業程序,判斷學員是否依流程執行,並在評分時具體指出遵守或缺失。

撰寫建議

建議搭配 NotebookLM 將正式 SOP 文件轉換為精簡摘要後貼入。格式以條列式為佳,300 字以內,著重關鍵步驟而非完整法規條文。

範例 SOP(危急值通報):

1. 確認危急值項目及數值,查核病患姓名、病歷號 2. 致電通知主治醫師或值班醫師 3. 要求對方複誦:病患姓名、病歷號、危急值項目與數值 4. 確認通報者姓名、單位、時間 5. 承諾 5 分鐘內通知主治醫師,並取得承諾 6. 完成後填寫危急值通報紀錄單並簽名

SOP 使用模式

🎯
嚴格模式
每回合都明確指示 AI 監測並主動糾正偏離 SOP 的行為。
例如:「你還沒有要求我複誦病患資料」。

適合:初學者、熟悉流程為主要目標的課程。
🌊
自然模式
每回合都提醒 AI 把 SOP 作為背景知識,不主動說破,保持自然對話。
評分結束後才反映 SOP 遵守程度。

適合:進階練習、評估整合能力的課程。
兩種模式的差異貫穿整個對話的每一回合,不僅限於第一回合。

SOP 在對話中的注入邏輯

系統每回合都將 SOP 完整注入 System Prompt(方案 A),確保 AI 不遺忘:

// 第 1 回合:帶模式說明 【嚴格模式】:若學員在對話中未遵守以下 SOP 步驟, 請在適當時機點破或糾正... // 第 2+ 回合:持續提醒 【SOP 提醒】請持續依照以下標準步驟來判斷學員表現: 1. 確認危急值... 2. 致電通知...
09

教師後台:自訂評分標準

評分維度、配分比重與具體判斷準則設定

每個情境在「評分設定」區塊可獨立設定 2–4 個評分維度。教師同時可透過滑桿設定配分比重,並在文字框輸入具體判斷準則,讓 AI 依據條件給分,而不是完全自行發揮。

重要:各維度的配分比重合計必須等於 100 分,後台才允許儲存。合計列會即時顯示目前總和,未達 100 時變紅字提示。

介面元件說明

元件說明限制
維度名稱 自由輸入此維度的名稱,顯示於學員評分結果卡 每個情境 2–4 個維度
配分比重滑桿 設定此維度的滿分,拖動滑桿快速調整 每個維度 5–60 分;總和需等於 100
具體判斷準則 條列式輸入加分項目,AI 評分時對照執行 選填;留空則 AI 依通用標準自行判斷
+ 新增維度 新增一個評分維度(預設名稱「新維度」,比重 10 分) 上限 4 個維度
✕ 刪除維度 刪除此維度(需至少保留 2 個) 少於 3 個時刪除鈕隱藏

判斷準則撰寫建議

準則以條列式撰寫,每條敘述一個具體行為及其配分,讓 AI 有明確依據:

// 範例:資訊準確性(40分)的判斷準則 ・報出病患姓名與病歷號 +10分 ・說明危急值項目與具體數值 +10分 ・要求對方複誦關鍵資料 +10分 ・確認通報時間與通報者身份 +10分
注意:判斷準則的分數僅供 AI 參考,AI 仍可能依整體對話品質微調給分。若需非常精確的配分,建議搭配 SOP 嚴格模式同步使用。

預設維度

新情境與預設情境皆使用以下三個預設維度,教師可直接修改或刪除後重新設計:

溝通禮貌
33 分
問候、稱謂、語氣、同理心
資訊準確性
34 分
核對資訊完整度、術語正確性
專業應變
33 分
面對刁難的反應、提供解方能力

評分結果呈現

學員完成模擬後,評分卡依照教師設定的維度動態渲染,最多顯示 4 個維度的分數條與點評,每個維度顏色固定(紫→綠→棕→紫紅)便於辨識。舊情境若無 scoringDims 欄位,自動 fallback 回原本三維度,向下相容。


10

教師後台:匯出匯入與備份

情境資料的備份、還原與重設

📤
匯出 JSON
將目前所有情境匯出為 JSON 檔案,檔名包含日期(如 medlab_scenarios_2025-06-01.json)。建議定期匯出作為備份。
📥
匯入 JSON
選取先前匯出的 JSON 檔案,將完全覆蓋目前所有情境(需二次確認)。匯入後自動同步至雲端。
重設預設值
清除所有自訂情境,還原為系統內建的三個預設情境。操作不可逆,請先匯出備份。

JSON 格式說明

匯出的 JSON 為情境物件陣列,每個物件包含:

[ { "id": 0, "icon": "🚨", "title": "危急值通報被掛電話", "desc": "血鉀 6.8 mmol/L...", "role": "急診病房護理師", "roleDesc": "正在忙碌、略顯不耐煩", "voiceGender": "female", "background": "你剛完成血液常規...", "aiPersona": "你扮演急診病房護理師...", "hardness": 4, "length": 2, "emotion": 4, "turns": 4, "temperature": 0.85, "sopText": "1. 確認危急值...", "sopMode": "strict", "scoringDims": [ { "name": "溝通禮貌", "weight": 33, "criteria": "・有禮貌開場 +10分\n・確認身份 +10分" }, { "name": "資訊準確性", "weight": 34, "criteria": "" }, { "name": "專業應變", "weight": 33, "criteria": "" } ] } ]

11

教師後台:學員成績與回饋

成績儀表板、對話紀錄查閱與問卷回饋彙整

模擬結束並完成評分後,系統自動將完整紀錄(學員資料、各維度分數、對話逐字稿、滿意度問卷)傳送至 Cloudflare KV,教師可在後台「📊 學員成績與回饋」頁籤查閱。

儀表板總覽

總完成次數
所有學員的模擬完成總次數(同一學員多次練習各計一次)。
平均總分
所有紀錄的總分平均值(0–100)。
學員人數
以員編計算的不重複學員總人數。
平均滿意度
已填寫問卷的學員滿意度平均星評(1–5★)。

紀錄列表操作

功能說明
搜尋依姓名或員編即時篩選
情境篩選下拉選單篩選特定情境的紀錄
點擊列展開顯示各維度分數、整體建議、問卷回饋、完整對話逐字稿
刪除需已登入(token 驗證),刪除後同步更新索引
匯出 CSV包含時間、姓名、員編、情境、各評分、問卷星評、回饋文字、整體建議、對話紀錄
重新載入手動重新從 KV 拉取最新紀錄

滿意度問卷

評分結果顯示後,學員頁面自動出現課後回饋問卷,填完後點「送出回饋」,資料即附加至對應的成績紀錄。

⭐ 難度感受
1–5 星對應:太簡單 / 偏簡單 / 適中 / 有挑戰 / 很困難
⭐ 情境真實感
1–5 星評估 AI 角色扮演的真實程度
⭐ 整體滿意度
1–5 星評估整體學習體驗

KV 儲存限制

免費方案每日寫入上限 1,000 次,索引最多保留 500 筆紀錄。一般教學場景(數十至一百人)完全足夠。超過 500 筆時最舊的索引條目將被移除(KV 中的完整紀錄仍保留),建議定期匯出 CSV 備份。

12

進階:AI 提示詞設計

角色指引撰寫技巧與最佳實踐

「AI 角色指引」是決定模擬品質最關鍵的設定,以下是有效撰寫的原則:

有效角色指引的結構

A
身份宣告
「你扮演…」明確宣告角色身份和當下狀態。
範例:你扮演急診病房護理師,正處理多位病患,語氣急促不耐。
B
動機說明
說明角色為什麼這樣行動,避免 AI 變成純粹刁難。
範例:你不是蓄意刁難,但你對病患安全負責。
C
條件觸發
明確定義「什麼情況下態度軟化」、「什麼情況下升級對抗」。
範例:除非學員明確要求對方複誦病患資料,否則不主動配合。
D
結束觸發(可選)
設定特定行為觸發情境結束(如掛電話)。
範例:若學員未確認便試圖結束通話,你就說「好好好」然後掛斷。

System Prompt 完整組成

每次 AI 呼叫的 System Prompt 由以下部分組成:

你是醫學教育角色扮演系統中的AI角色。 情境:[情境標題] 你的身份:[角色名稱]([角色描述]) 背景:[背景說明] 角色指引:[AI 角色指引] 【AI風格設定】角色強硬程度:好說話/難纏。[長度設定]。[情緒設定]。 【SOP提醒】請持續依照以下標準步驟...[SOP內容] 規則:保持角色,繁體中文。不透露評分標準。 學員表現良好則逐漸軟化態度。
注意:由於 Gemini 沒有跨回合記憶,系統每次呼叫都會將完整對話歷史送入 contents 陣列,確保 AI 能維持一致角色。
13

進階:語音合成設定

Google WaveNet 與瀏覽器 TTS 的技術細節

Google WaveNet 語音規格

角色語音名稱語速音調適用情境
👩 女聲 cmn-TW-Wavenet-A 1.15x +1 護理師(情境①③)
👨 男聲 cmn-TW-Wavenet-B 1.1x -2 醫師(情境②)

TTS API 請求格式

POST https://google-tts-proxy.yusfish.workers.dev { "input": { "text": "語音合成文字" }, "voice": { "languageCode": "cmn-TW", "name": "cmn-TW-Wavenet-A", "ssmlGender": "FEMALE" }, "audioConfig": { "audioEncoding": "MP3", "speakingRate": 1.15, "pitch": 1 } }

降級機制

Google TTS 失敗時(網路問題、配額用盡)自動降級至瀏覽器內建 SpeechSynthesis API,語音品質較低但保證可用。Console 會顯示 Google TTS 失敗,降級:[錯誤訊息]

14

進階:評分機制

兩批並行呼叫設計、JSON Mode 與動態格式

評分呼叫設計

為避免 Cloudflare Worker 的 token 截斷問題,評分拆成兩批執行:

第一批:數字分數(並行)
每個維度各發一次請求,同時並行(Promise.all),每次只要求回傳一個整數。
Temperature:0.1 回傳長度:個位數,絕不截斷。
第二批:文字評語(JSON Mode)
拿到分數後,發一次請求取得各維度點評與整體建議。啟用 Gemini 官方 JSON ModeresponseMimeType: application/json),確保輸出格式正確,杜絕 Markdown 格式污染。
Temperature:0.1
JSON Mode:第二批評語呼叫啟用 responseMimeType: "application/json",Gemini 保證回傳合法 JSON,不會夾帶 ```json 等 Markdown 標記,解析可靠性大幅提升。第一批整數分數不需要 JSON Mode,保持輕量。

評分 Prompt 結構

── 第一批(每個維度各一次)── 情境:[情境標題] 對話:[完整對話] SOP標準:[若有設定] 請評估學員的「[維度名稱]」表現,滿分[N]分。 [評分準則 或 依通用標準評分] 只回傳一個整數分數,不要任何其他文字。 ── 第二批(一次)── 醫檢師溝通情境「[標題]」,學員得分:[維度1 X/N分、...]。 對話:[完整對話] 請針對各維度各給一句10字內點評,再給一句20字內整體建議。 只輸出JSON:{"c0":"點評","c1":"點評","overall":"建議"}

評分 JSON 欄位

欄位型別說明
dim0 ~ dim3number各維度得分(第一批並行取得)
totalnumber各維度加總,0–100
dim0_comment ~ dim3_commentstring各維度 10 字內點評(第二批取得)
overallstring20 字內整體建議
舊情境若無 scoringDims 欄位,系統自動 fallback 為預設三維度,向下完全相容。
15

常見問題

使用時遇到問題的解決方式

Q:AI 回應出現「高需求」或 503 錯誤

這是 Gemini API 的流量限制。在頁面頂端的模型選擇器切換至其他模型(如 2.5 Flash3 Flash),重新開始模擬即可。

Q:AI 回應中途中斷

系統已設定 maxOutputTokens:2048 並在 System Prompt 依 length 設定限制回應句數。若仍出現截斷,可嘗試切換至 2.5 Flash 或降低情境的「回應長度」設定。

Q:語音輸入後文字沒有出現

語音辨識結果在「停止錄音」後才寫入輸入框,不是即時顯示在輸入框裡。錄音中只有 hint 列會顯示辨識狀態。請按 ⏹ 停止後再看輸入框。

Q:語音無法播放

先點「測試」確認 TTS Worker 連線。若顯示失敗:(1) 確認網路正常;(2) 改用「瀏覽器內建」TTS;(3) 確認 Cloudflare Worker 正常運作。

Q:麥克風無法使用

Web Speech API 僅支援 Chrome / Edge 等 Chromium 瀏覽器,且需要 HTTPS 或 localhost 環境。確認瀏覽器已授權麥克風權限。

Q:學員頁面未顯示最新情境

情境從 Cloudflare KV 雲端讀取。確認教師後台儲存時顯示「已儲存並同步至雲端」(非「雲端同步失敗」)。學員重新整理頁面後應可取得最新版本。

Q:評分維度比重合計不等於 100 怎麼辦

後台「評分設定」區塊頂端的合計列會即時顯示目前總和。未達 100 時呈紅字。調整各維度的配分滑桿使其合計為 100,再點「💾 儲存全部」即可。

Q:評分結果失敗或格式異常

評分呼叫偶發 JSON 解析失敗(AI 輸出含 Markdown 格式)。系統已實作 regex 清理,若仍失敗可重新開始一次模擬。若持續發生,嘗試切換模型。

Q:不同電腦的後台密碼不同

新版密碼以 SHA-256 雜湊儲存於 Cloudflare KV,修改後立即對所有裝置生效,不再有裝置間不同步的問題。

Q:如何完全重置系統

操作順序:後台「⚙ 設定」頁籤 → 「↺ 重設預設值」清除所有情境 → 或直接匯入備份的 JSON 檔案。成績紀錄需在儀表板逐筆刪除,或直接在 Cloudflare Dashboard 清空 KV。

Q:學員沒有填寫問卷就關掉頁面

成績與對話紀錄在評分完成後即自動回傳,不依賴問卷是否填寫。問卷資料若未送出,儀表板「滿意度」欄位顯示「—」,不影響成績紀錄。

Q:儀表板看不到學員紀錄

確認:(1) 學員已填寫姓名與員編;(2) 模擬確實完成(達到設定回合數);(3) 網路正常(成績需上傳至 KV);(4) 點「🔄 重新載入」重新拉取最新資料。