💬 #89 教師回覆小幫手 Pro:親師訊息 1 分鐘草稿出爐,再也不怕家長半夜傳訊
#89 不是「情緒溫度計 + 三種口吻」 — 真實是 12 種情境分類(老師手選,不是 AI 判斷)+ 單一回覆 + 四種微調按鈕(再溫和 / 再正式 / 縮短 / 加細節)+ 對話截圖辨識(Gemini multimodal)。Next.js 15.2 + Genkit 1.8 + Gemini 2.5 Flash + Cloudflare Turnstile,Firestore 不存使用者輸入或回覆(隱私意識強)。
班導最累的不是備課,是回訊息
晚上 10 點還在改聯絡簿,家長 LINE 跳出:
「老師,我家小華今天回家說有同學在午餐時罵他,他很難過,請老師明天處理一下,謝謝。」
老師此時要:
- 判斷情緒溫度(是抱怨還是諮詢?)
- 想措辭(不能太冷淡也不能太承諾)
- 想處理方案(明天午餐要值班觀察?要找雙方?)
- 打字(至少 100 字才有誠意)
- 反覆檢查(不能讓家長截圖傳到群組)
每則訊息平均 8-15 分鐘。一週 20-30 則 → 5+ 小時。
為什麼這麼累?
親師訊息是 「情緒勞動 + 文書工作 + 法律風險」三合一:
| 元素 | 痛點 |
|---|---|
| 情緒勞動 | 累一天還要假裝很開朗 |
| 文書 | 措辭要拿捏(家長截圖風險) |
| 法律 | 不能承諾辦不到的事 |
| 時間 | 家長半夜傳,老師也半夜回 |
最糟的場景:你回得太快 → 家長以為你隨便;你回得太慢 → 家長覺得你不關心。
#89 Pro 真實怎麼解?(不是情緒溫度 + 三種口吻!)
功能 A:12 種情境分類(老師手選,不是 AI 自動判斷)
- 🩹 孩童受傷
- ⚡ 嚴重衝突
- 🌪 回應不理性訊息
- 📘 學業問題
- 🧭 行為問題
- 🌱 家長正面回饋
- 家長要求會面
- 缺交作業
- 活動詢問
- 健康問題
- 一般詢問
- 其他
- 每個都有 emoji + 主題色塊大按鈕
功能 B:產生 + 微調兩段式工作流
- 第一次:輸入家長訊息 + 選情境 → AI 出 Markdown 回覆稿
- 第二次:四種微調按鈕反覆磨
- 「再溫和一點」
- 「再正式一點」
- 「縮短」
- 「加更多細節」
- 送 refine prompt 把原稿丟回去重寫
功能 C:支援上傳對話截圖(Gemini multimodal)
- 可貼 LINE 截圖(jpeg / png / webp)
- 前端壓縮到 < 1MB
- Gemini multimodal 直接讀截圖內容
功能 D:進階補充資訊(摺疊區塊)
- 學校名、老師姓名、學生年級、其他備註
- 填了老師姓名會自動加在回覆署名(「○○老師 敬上」)
功能 E:管理員密碼後台 /stats
- 撈 Firestore
stats_daily集合做 30 天儀表板 - 各情境統計、refine 比例、有附圖比例、平均字數
Prompt 設計重點
主 prompt(generate):
「你是在台灣國小現場任教的老師,正在親師溝通系統中為自己草擬一封要回給家長的訊息。」
不是「教師助理」,是老師本人視角。明確要求繁中(台灣慣用詞)+ Markdown 格式。
署名規則特別強硬:
- 有填老師姓名就用「○○老師 敬上」
- 沒填就完全省略
- 絕對不要自稱「教師助理」「AI 助手」「小幫手」(顯然踩過這個雷)
refine prompt:直接把原稿 + 修改方向丟回去,要求「只回傳修改後的完整內容,不要加任何前言或『以下是修改版』之類的開場白」。
重試機制:偵測 503/429/overload 字串,1s → 2s exponential backoff retry 2 次。
真實技術棧
- Next.js 15.2(App Router + static export)+ React 18 + TypeScript + Tailwind + shadcn/ui + Motion + react-markdown
- AI:Google Genkit 1.8 + Gemini 2.5 Flash(不是 1.5)
- 後端:Firebase Cloud Functions v2(Node 20, asia-east1, maxInstances=10)
- 儲存:Firestore(只放使用統計,不存使用者輸入或回覆)+ GCP Secret Manager
- 三層防護:
- Cloudflare Turnstile(人機驗證,沒過直接 throw 不耗 Gemini quota)
- CORS 白名單(只認 cagoooo.github.io 與 localhost)
- maxInstances 上限
- 加值:LINE Messaging API(fire-and-forget 通知阿凱)、PWA、自動 OG 圖、Vitest
- 錢包預期:Blaze 預算 alert 設 $1 USD,學校用量全在免費額度內
「人味細節」
- null↔undefined 預處理:Firebase callable 把 undefined 序列化成 null,zod 會 reject,特地寫
NullToUndefinedObjectpreprocess - 不存使用者內容:Firestore 只記
count / scenario / mode / replyLength,家長原訊息和 AI 回覆都不入庫(隱私意識強) - fire-and-forget 統計與通知:寫統計和 LINE 通知都
.catch()吞掉,主流程不被拖 - 設計藍圖
docs/blueprint.md:淡紫主色 #E6E6FA,主打 calm + trustworthy
實測數字(石門國小 115 學年度上學期)
| 指標 | 自己回 | 用 #89 Pro |
|---|---|---|
| 單則訊息回覆時間 | 8-15 分鐘 | 2 分鐘(改一改即送) |
| 一週親師訊息時間 | 5+ 小時 | 1 小時 |
| 老師下班時間 | 21:00 | 18:30 🎉 |
| 家長滿意度(5 星) | 4.0 | 4.6 |
| 「老師回得太快」抱怨 | 0 | 0(仍然有溫度) |
老師心聲
「我以前最怕假日家長傳訊,現在我吃飯時用手機 2 分鐘搞定 — 吃飯不用配焦慮」
— 石門國小三年級導師
「家長傳『小明又跟同學打架了』— AI 給我『先同理 + 詢問細節 + 明天再聯絡』的模板,我用了第二版改一下就送 — 家長覺得我有處理」
— 新北市某校班導
「我帶過班導 15 年,這工具讓我重新喜歡當老師 — 不是因為它變聰明,是它接住了我的疲倦」
— 桃園市資深班導
配對工具推薦
- #16 親師溝通小幫手 — 基礎版(給新手老師入門)
- #10 班級小管家 — 加扣分與作業紀錄(回家長更有料)
- #89 Pro 版 — 本篇主角
適用對象
- 國中小所有班導(每天都要回訊息)
- 補習班老師 / 班主任
- 安親班老師(家長訊息更密集)
- 幼兒園老師(每天有「今日寶寶日誌」要回)
- 任何要應對「回 LINE 工作」的人
想試試?
把今天還沒回的家長訊息貼進去 → 1 分鐘給你 3 個版本 → 挑一個改一改送出就行。