# 課程計畫 AI 審查工具 — 開發進度與未來規劃

> 最後更新：2026-05-22　｜　作者：阿凱老師　｜　目前版本：**v4.2.2**

---

## 一、已完成功能清單（v1.0 → v3.6）

### ✅ 核心架構
| 項目 | 說明 | 完成版本 |
|------|------|------|
| 單一 HTML 檔案 | 純前端、無後端、無框架依賴 | v1.0 |
| GitHub Pages 部署 | 線上可直接使用，免安裝 | v1.0 |
| 響應式設計（RWD） | 手機 / 平板 / 桌機自適應（480px / 768px 斷點） | v1.6 |
| localStorage 儲存設定 | API 金鑰、模型選擇本地儲存，不上傳伺服器 | v1.0 |
| CSS 設計系統（Custom Properties） | --step1 藍 / --step2 紫 / --step3 琥珀 三步驟配色 | v1.6 |
| Google Fonts 整合 | Nunito + Noto Sans TC 雙字型搭配 | v1.6 |
| PWA manifest.json | 名稱 / 圖示 / 色彩 / 截圖，支援 iOS / Android 桌面安裝 | v1.8 |
| Service Worker（sw.js） | 靜態資源離線快取，讓工具在無網路時仍可開啟 | v1.8 |
| 桌機 RWD 字型全面放大 | html{font-size:18px}，@media(min-width:769px) 專屬樣式 | v2.1/v2.2 |
| Service Worker 版本更新機制 ⭐ | CACHE_NAME 版本化 + activate 發送 postMessage 通知已開啟視窗 | v3.3 |

### ✅ PDF 擷取
| 項目 | 說明 | 完成版本 |
|------|------|------|
| 拖拉 / 點擊上傳 PDF | 支援兩種上傳方式 | v1.0 |
| PDF.js 懶載入 | 首次使用才載入 CDN，加速初始頁面 | v1.0 |
| PDF.js 升級至 v4.4.168 | ES Module 動態 import，支援更多 PDF 格式 | v1.5 |
| 全頁文字擷取 | 逐頁累加文字，顯示總頁數與字數 | v1.0 |
| 文字預覽（前 500 字） | 讓使用者確認擷取品質 | v1.0 |
| 掃描版 PDF 警告 | 擷取字數 < 50 時提示無法識別 | v1.0 |
| 重新上傳按鈕 | 修正後可快速清除重來 | v1.2 |
| PDF 字數過長警告 | 超過 50,000 字時顯示橘色警告，提示可能超出 Token 上限 | v1.5 |
| PDF 上傳區塊點擊 Bug 修正 | filter stacking context 導致需點兩次，改用 onclick+display:none | v2.9 |
| F PDF 第一頁縮圖預覽 ⭐ | fileInfo 左側顯示 100×140 縮圖 + 頁數徽章；點擊開啟全屏 lightbox（支援 Esc 關閉），讓老師確認上傳檔案正確 | v3.6 |

### ✅ 審查項次資料
| 項目 | 說明 | 完成版本 |
|------|------|------|
| 40+ 項審查標準內嵌 | 涵蓋 0-1 至 7-12 所有項次 | v1.0 |
| 分類下拉選單 | 8 大分類（0–7）自動產生 | v1.0 |
| 項次下拉選單 | 依分類動態更新 | v1.0 |
| 可編輯審查提示詞 | Textarea 直接修改條件（如課程門數） | v1.2 |
| 還原預設提示詞按鈕 | 一鍵恢復原始 Prompt | v1.2 |
| 特殊班級警告標語 | special:true 項次自動顯示需人工審查提醒 | v1.2 |
| 項次白話說明（ITEM_DESC） | 每個項次旁顯示「這個項次在審查什麼」的白話摘要 | v1.5 |
| 項次即時搜尋 | 搜尋框即時篩選 40+ 項次，支援 id / 名稱搜尋 | v1.8 |
| 教育局提示詞參考文件連結 | Step 2 + Footer 均附上 Google Drive 完整文件超連結 | v2.0 |
| 彈性課程評量方式嚴格模式 ⭐ | 6-2-1-1~6-2-1-6、6-2-2、6-2-4 共 8 項加入「整學期配分不得相同 / 115 學年度無需呈現百分比，如出現主動提醒移除」審查條件 | v3.6.1–3.6.2 |
| 數學領域學習內容編碼例外說明 ⭐ | 8 項彈性課程提示詞加入數學領域註記：「學習表現」第二碼為羅馬數字、「學習內容」第二碼為阿拉伯數字年級別（N-1-1、N-3-2），避免 AI 誤判為跨階段錯誤 | v3.6.3 |
| 對照教育局 0420 版本全面更新 ⭐ | 5 項內容同步教育局最新標準：4-1-3 新增「媒體素養」+「共備觀議課」；5-1-1 新增第 6 項「適合學生能力興趣動機」；5-3-1 選書年度 114→115 基準；6-1 新增「原住民族地區」條款；7-1-2-1 會議紀錄年度 114→115；7-4-2 評鑑學年度 114→115 | v3.6.4–3.6.5 |
| 教育局參考文件連結升級至 0420 版 ⭐ | Header 按鈕 + Footer 連結雙處更新至最新 PDF 檔（新 File ID）；未來同檔案替換版本 ID 不變，免再改程式碼 | v3.6.6 |
| 教學組 0427 撰寫注意事項 4 大新規同步 ⭐ | 對照「(教學組提醒)115 課程計畫撰寫注意事項說明.pdf」全面補強：① 課程名稱領域 10 種統一寫法 + 融入議題不加【】；② 學習目標句子須「動詞+名詞」句型；③ 單元名稱不得直接抄教材出版社（如「康軒第 X 課」）；④ 學習表現與學習內容引用領域須互相呼應；同時把「安全教育(交通安全教育)」更名為 PDF 規定的「安全教育(含交通安全)」；補充「國/英/本土同屬語文領域」跨領域認定提醒。影響 9 個提示詞（5-1-1、6-2-1-1～6-2-1-6、6-2-2、6-2-4）+ 對應 ITEM_DESC | v3.8.0 |

### ✅ API 整合
| 項目 | 說明 | 完成版本 |
|------|------|------|
| Google Gemini API | gemini-2.5-flash / 2.5-pro / 2.0-flash | v1.0 |
| OpenAI API | gpt-4o-mini / gpt-4o / gpt-4.1-mini | v1.0 |
| 模型切換下拉 | 依供應商動態更新模型清單 | v1.0 |
| 免費申請 API 金鑰連結 | 依供應商自動切換連結目標 | v1.0 |
| 測試 API 金鑰按鈕 | 發送最小請求即時驗證金鑰有效性 | v1.4 |
| 智慧錯誤提示 | 依錯誤類型（無效 / 額度耗盡 / CORS）給出中文說明 | v1.4 |
| 金鑰顯示 / 隱藏切換（👁） | 密碼欄位右側切換按鈕，確認輸入正確 | v1.5 |
| CORS 限制警告（OpenAI） | 自動提示改用 Gemini 或複製提示詞 | v1.0 |
| API 自動重試機制 ⭐ | withRetry() 遇 429/503 自動等待 5s 重試，最多 3 次 | v3.0 |
| XX API 金鑰申請 4 步驟圖文 Modal ⭐ | 漸層標頭（Google 藍→綠）+ 時間軸圓圈步驟卡：① 登入 Google → ② 前往 AI Studio → ③ 點 Create API key → ④ 貼回工具；三個觸發點（設定面板按鈕 / 無金鑰連結 / Footer 快速連結）統一開啟 Modal；ESC 關閉、背景點擊關閉、手機 RWD | v3.7.0 |

### ✅ 審查流程（單項）
| 項目 | 說明 | 完成版本 |
|------|------|------|
| 三步驟引導流程 | Step 1 上傳 → Step 2 選擇 → Step 3 審查 | v1.0 |
| 三步驟彩色卡片設計 | 藍 / 紫 / 琥珀 三種顏色對應各步驟 | v1.6 |
| 送出 AI 審查 | 組裝 Prompt，呼叫 API，顯示結果 | v1.0 |
| 上次審查記錄橫幅 | 首頁顯示上次審查的項次 + 時間，localStorage 持久化 | v1.5 |
| 複製提示詞（Markdown） | 無 API 金鑰時可貼到 ChatGPT / Gemini 使用 | v1.0 |
| 複製純文字 | 去除 `**`、`##` 符號後複製，可直接貼入 Word | v1.8 |
| 修正後重新上傳審查 | 一鍵清除並回到上傳步驟 | v1.2 |
| 列印審查結果 | @media print A4 版面，結果區塊保色 | v1.8 |
| 快捷鍵（Ctrl+Enter） | 送出審查，Cmd+Enter 也支援 | v1.8 |
| AI 限制警語橫幅 | 提醒審查僅供參考，以人工審定為準 | v1.2 |
| Loading 動畫升級（遊戲風） | 深色背景 + 橫向掃描動畫，取代原旋轉圈圈 | v2.6 |
| 模擬百分比進度條 | setInterval 模擬 0→92% 爬升，API 回傳後跳至 100% 轉綠 | v2.8 |
| 一鍵截圖分享 ⭐ | html2canvas 懶載入，2× 高清截圖 + 浮水印，下載 PNG | v3.0 |
| 單項失敗自動顯示「🤖 修正稿」按鈕 ⭐ | AI 回傳非通過時，結果操作列自動出現修正稿按鈕 | v3.3 |

### ✅ 審查結果呈現（全面升級 ⭐）
| 項目 | 說明 | 完成版本 |
|------|------|------|
| renderMarkdown 重寫 | 正確處理 `<br>` 標籤，不再顯示原始 HTML 代碼 | v2.4 |
| Markdown 表格 → 卡片自動識別 | 偵測 AI 回傳的 Markdown 表格，依格式渲染不同卡片 | v2.4/v2.7 |
| 3 欄審查表格渲染 | 項目\|審查結果\|具體修改建議 → 分區卡片自動化 | v2.7 |
| 摘要列（✅符合 X 項 ❌待修正 X 項）| 結果頂端紫色摘要徽章，一眼掌握通過狀況 | v2.7 |
| 符合項目卡片 | 綠色左邊線 + 粗體項次名稱 + 審查說明文字 | v2.4/v2.7 |
| 待修正卡片 + 修改建議區塊 | 紅色左邊線 + ❌圖示 + 黃色「✏️ 修改建議」欄 | v2.4/v2.7 |
| 結果 h1/h2 標題樣式優化 | h1 加底線分隔，h2 加左側綠色邊線，層次更清晰 | v2.7 |
| 匯出 Word 報告 ⭐ | Office namespace HTML blob，含封面、摘要、通過/待修正分表 | v3.0 |

### ✅ 批次審查與報告（v1.8 ⭐ → v3.3 持續升級）
| 項目 | 說明 | 完成版本 |
|------|------|------|
| 單項 / 批次模式切換 Tab | Step 2 頂部切換，介面完全獨立 | v1.8 |
| 批次項目 Chip 選擇器 | 彩色圓角 Chip，全選 / 分類全選 / 單項點選 | v1.8 |
| 批次暫停 / 繼續 | 中途可暫停，不喪失已完成結果 | v1.8 |
| 批次完成摘要 | ✅ 通過 / ❌ 待修正 / ⚠️ 錯誤 統計橫幅 | v1.8 |
| 結果逐項展開 | 每個項次獨立可展開的結果卡片 | v1.8 |
| Chip 狀態標示 | 審查後 Chip 自動變色（綠通過、紅待修、黃錯誤） | v1.8 |
| API 請求間隔 2 秒 | 避免觸發 Gemini API Rate Limit | v1.8 |
| 下載 Markdown 報告 | 整份報告（總覽表格 + 逐項詳細結果）一鍵下載 | v1.8 |
| 完成聲音 + 桌面通知 ⭐ | Web Audio API 產生音效 + Notification API 桌面通知 | v2.0 |
| 批次結果篩選 Tab ⭐ | 全部/✅通過/❌待修正/⚠️錯誤 四頁籤即時篩選 | v2.0 |
| 批次進度條全面升級 ⭐ | 遊戲風深色背景 + 橫向填充 + shimmer + 完成轉綠 | v2.2/v2.5 |
| 批次大量分批提醒 ⭐ | PDF >25K 字且項次 >12 時顯示 confirm 警告，防止 Token 超限 | v3.0 |
| 批次結果關鍵字搜尋 ⭐ | 搜尋框即時篩選結果卡片，不含關鍵字的卡片半透明淡出 | v3.0 |
| GG 人工確認覆寫模式 ⭐ | 待修正卡片加「✅ 人工確認通過」按鈕，卡片轉綠、Chip 同步更新 | v3.3 |
| II 修正稿一鍵生成 ⭐ | 待修正卡片加「🤖 幫我寫修正稿」，有 API Key 直接生成，無 key 複製 Prompt + 開啟 Gemini | v3.3 |
| NN 原生系統分享 ⭐ | 單項與批次結果支援 `navigator.share()`，桌機自動退回剪貼簿 + Toast | v3.4 |
| OO 匯出 CSV ⭐ | 批次結果下載 CSV（含 UTF-8 BOM），欄位：項次代號/名稱/結果/人工確認/摘要，相容 Excel/Google Sheets | v3.4 |
| PP 審查進度自動存檔 ⭐ | 批次進行中每 5 分鐘存 sessionStorage，重整頁面後顯示復原橫幅，120 分鐘內有效 | v3.4 |
| QQ 批次結果一鍵 Email ⭐ | 一鍵組裝通過/待修正清單，開啟 `mailto:` 寄給主任，含 AI 免責聲明 | v3.4 |
| B 重審待修正/失敗項目 ⭐ | 批次完成後出現「🔁 重審待修正」「⚡ 重審失敗」按鈕，只重跑符合狀態的項次，直接覆蓋原卡片 | v3.5 |
| E 全部展開/收起 ⭐ | 批次摘要下方三鍵列：全展開 / 全收起 / 只展開待修正 ❌，快速聚焦問題項次 | v3.5 |
| D 批次預估時間 + 計時器 ⭐ | 選項次時即時顯示預估時長；審查中進度條顯示已用秒數；完成後凍結「⏱ 耗時 X 分 Y 秒」 | v3.5 |
| UU LINE 分享 ⭐ | 批次摘要 + 單項結果均加「💬 LINE 分享」按鈕，使用 `line.me` URL Scheme 直達 LINE | v3.5 |
| G 彩帶慶祝動畫 ⭐ | 批次全數通過時 canvas-confetti 雙側噴彩帶 3.5 秒；單項「表件通過」時結果區脈衝綠光 | v3.5 |
| KK 批次摘要圖卡 ⭐ | 一鍵生成 820px 精美 PNG 圖卡：SVG 環形通過率（依通過率動態配色）+ 三項統計 + 日期 + 免責聲明；手機 Web Share API 直接分享至 LINE，桌機下載 | v3.6 |

### ✅ 免 API 金鑰 UX 引導（v1.9 ⭐ → v2.0 完善）
| 項目 | 說明 | 完成版本 |
|------|------|------|
| 無金鑰自動偵測 | 已上傳 PDF + 已選項次但未設 API Key，自動顯示引導 | v1.9 |
| 三步驟引導面板（動畫滑入） | 琥珀色漸層卡片，淡入+滑入動畫 | v1.9 |
| Step 1：一鍵複製提示詞 | Clipboard API + execCommand 雙重備援，複製後邊框變綠 | v1.9 |
| Step 2：開啟 Google Gemini | 若尚未複製先自動複製再開新分頁 | v1.9 |
| Step 3：貼回 Gemini 回覆 | Textarea 接收回覆，套用相同 showResult() 渲染管線 | v1.9 |
| 引導步驟可收合記憶 ⭐ | 右上角收起按鈕，收合狀態存 localStorage | v2.0 |
| 快速操作列（收合時） | 收合後仍可操作複製 / 開啟 Gemini / 貼回，不用展開 | v2.0 |

### ✅ UI / 視覺設計
| 項目 | 說明 | 完成版本 |
|------|------|------|
| 全版 Hero 頁首 | 全寬漸層背景 + 三個裝飾光球 + 功能 Chip 標籤 | v1.6 |
| 專業 Footer（三欄格線） | 品牌說明 / 快速連結 / 技術棧徽章 | v1.7/v1.8 |
| 字型大小調整 | A⁻ / A / A⁺ 固定浮動控制器，localStorage 記住偏好 | v1.8 |
| PWA 安裝橫幅 | beforeinstallprompt 觸發，Header 顯示「加入主畫面」 | v1.8 |
| Footer 阿凱老師製作按鈕 ⭐ | 金黃→珊瑚→紫彩虹漸層膠囊，👨‍🏫動畫搖擺，連結至石門國小 | v2.3 |
| 桌機字型全面放大 ⭐ | 基底 18px，@media(min-width:769px) 各元件逐一放大 | v2.1/v2.2 |
| 教師研習 5 步驟引導模式 ⭐ | Spotlight 遮罩 + 說明卡片，localStorage 記住是否完成，右下 ❓ 可重播 | v3.0 |
| 引導步驟定位 Bug 修正 ⭐ | 改為先 scrollIntoView，等 480ms 再取 getBoundingClientRect，移除多餘 scrollY | v3.1 |
| Canva 使用教學簡報入口 ⭐ | Header 毛玻璃按鈕 + 右下角紫色 🎨 固定浮動按鈕，連結 canva.link/115curriculum | v3.2 |
| HH 版本更新智慧 Toast ⭐ | localStorage 比對版本號 + SW postMessage 雙重觸發，新版上線自動提醒 | v3.3 |
| Service Worker 升版 v3.4 | CACHE_NAME 更新至 curriculum-v3.4，版本 Toast 說明更新至 v3.4 四大功能 | v3.4 |
| Service Worker 升版 v3.5 | CACHE_NAME 更新至 curriculum-v3.5，版本 Toast 說明更新至 v3.5 五大體驗升級 | v3.5 |
| Service Worker 多次小版升級 | v3.6 → v3.6.1 → v3.6.2 → v3.6.3 → v3.6.4 → v3.6.5 → v3.6.6 → v3.7.0 ，每次提示詞內容調整都 bump cache name 確保使用者即時拿到最新版 | v3.6.1–3.7.0 |

### ✅ 社群分享與品牌識別
| 項目 | 說明 | 完成版本 |
|------|------|------|
| favicon.png / .ico | 多尺寸圖示，瀏覽器分頁顯示 | v1.3 |
| og-image.png（1200×630） | LINE / Facebook 分享預覽卡片大圖 | v1.3 |
| Open Graph / Twitter Card | 完整社群分享 meta tag | v1.3 |

---

## 二、未來優化與開發建議

> 依難度與效益分為三個層級：**🟢 容易做（數小時）**、**🟡 中等（1 週內）**、**🔴 進階（需較多時間）**  
> ✅ 標記者已完成，可作為未來類似功能的參考案例

---

### 🟢 容易做（立竿見影，建議下一波優先處理）

#### A. 🤖 無金鑰引導支援更多 AI 平台
**問題**：v1.9 引導僅連結 Google Gemini，但許多老師習慣用 ChatGPT 或 Copilot  
**建議**：
- Step 2 改為三個平台選擇按鈕：`🌐 Google Gemini`、`💬 ChatGPT`、`🔷 Microsoft Copilot`
- 依據使用者上次的選擇記憶（localStorage），下次自動選中
- **工作量估計**：30–60 分鐘

#### ✅ B. 🔁 批次審查「重審失敗項目」（已完成 v3.5）
> 批次完成後出現「🔁 重審待修正」與「⚡ 重審失敗」按鈕；只重跑符合狀態的項次，直接覆蓋原有卡片與 batchResults，保留其他項次的結果

#### C. 📥 匯出 HTML 格式報告
**問題**：目前只能下載 Markdown，非技術老師不知如何開啟  
**建議**：
- 新增「下載 HTML 報告」按鈕，報告內建完整 CSS（保留綠/紅卡片顏色）
- 可直接用瀏覽器開啟，也可列印轉 PDF
- 報告標頭含工具名稱、學校名稱（若已設定）、審查日期
- **工作量估計**：2–3 小時

#### ✅ D. ⏱️ 批次審查預估時間 + 計時器（已完成 v3.5）
> 選項次時自動顯示「⏱ 預估約 X–Y 分鐘」；審查中進度條右側秒數即時滾動；完成後凍結「⏱ 耗時 X 分 Y 秒」顯示

#### ✅ E. 📋 批次結果「全部展開 / 全部收起」（已完成 v3.5）
> 摘要橫幅下方插入三鍵列：「▾ 全部展開」/ 「▸ 全部收起」/ 「❌ 只展開待修正」（有待修正項次時才出現）

#### ✅ F. 📄 PDF 第一頁縮圖預覽（已完成 v3.6）
> PDF 上傳後 fileInfo 左側 100×140 縮圖 + 頁數徽章（scale 1.5 的高清底圖）；點擊縮圖觸發 lightbox 全屏檢視，支援 Esc 關閉；背景清理後記憶體自動釋放

#### ✅ G. 🎉 審查全數通過彩帶慶祝動畫（已完成 v3.5）
> 批次全數通過時 canvas-confetti 雙側噴彩帶 3.5 秒（懶載入 CDN，不影響初始速度）；單項「表件通過」時結果區脈衝綠光 2.4 秒

#### ✅ GG. 人工確認覆寫模式（已完成 v3.3）
> 批次待修正卡片加「✅ 人工確認通過」按鈕，確認後卡片頭部轉綠、Chip 同步更新、sessionStorage 記住狀態

#### ✅ HH. 版本更新智慧提醒（已完成 v3.3）
> SW CACHE_NAME 版本化 + postMessage 通知 + localStorage 版本比對雙重機制，新版上線後所有使用者自動看到 Toast

#### ✅ II. 修正稿一鍵生成（已完成 v3.3）
> 批次待修正卡片 + 單項審查失敗時，出現「🤖 幫我寫修正稿」按鈕；有 API Key 直接呼叫生成，無 Key 複製 Prompt + 開啟 Gemini

#### ✅ NN. 📲 原生系統分享（已完成 v3.4）
> 單項結果操作列 + 批次完成摘要均加「📤 分享」按鈕；手機呼叫原生 `navigator.share()`，桌機自動退回剪貼簿複製 + Toast 提示

#### ✅ OO. 📅 批次結果匯出 CSV（已完成 v3.4）
> 批次完成後加「📊 下載 CSV」按鈕；欄位含項次代號、名稱、審查結果、人工確認（GG）、說明摘要（前 250 字）；UTF-8 BOM 確保中文相容 Excel/Google Sheets

#### ✅ PP. 🔄 審查進度自動存檔（已完成 v3.4）
> 批次進行中每 5 分鐘 `sessionStorage` 存檔；頁面重整後顯示「發現 X 分鐘前的未完成批次」復原橫幅；120 分鐘內有效；「恢復」重建所有結果卡片，「捨棄」清除存檔

---

### 🟡 中等難度（功能性升級）

#### H. 🎨 結果卡片「標注重點」功能
**問題**：老師想在 AI 結果上 highlight 特定文字，方便後續修改參考  
**建議**：
- 待修正卡片 body 可雙擊文字進行 highlight（`window.getSelection()`）
- Highlight 用黃色背景標記，存入 sessionStorage
- 卡片右上角加「複製此項備注」按鈕
- **工作量估計**：2–3 小時

#### I. 🏫 學校基本資料設定
**問題**：每次下載的報告都沒有學校名稱，AI 也不知道是哪所學校  
**建議**：
- API 設定區塊新增「學校名稱」（存 localStorage）、「學年度」下拉、「負責人」（選填）
- 報告標頭自動帶入；審查 Prompt 動態帶入「本校為桃園市○○國小」
- 讓 AI 判斷更精準，報告更正式
- **工作量估計**：2–3 小時

#### J. 📊 審查進度追蹤 Dashboard
**問題**：老師審了 15 個項次，不記得哪些通過、哪些還沒審  
**建議**：
- localStorage 記錄每次批次審查的最終狀態
- Chip 顯示歷史狀態顏色，頂部顯示「已確認通過 12 / 40 項」進度條
- 手動覆寫狀態 + 加備註功能（「等校長簽名」）
- **工作量估計**：半天

#### K. 📜 審查歷史記錄（最近 20 次單項）
**問題**：老師好不容易審完，下次開啟工具結果就不見了  
**建議**：
- localStorage 儲存最近 20 次單項審查記錄（項次名稱、結果、時間、AI 回傳文字）
- 可展開重新查看完整結果，支援「再次審查」一鍵重跑
- **工作量估計**：3–4 小時

#### L. 🔗 分享特定項次連結
**問題**：教務主任要把某個審查任務分配給老師，只能口頭說明  
**建議**：
- URL 加入 Hash 參數如 `/curriculum/#item=6-2-1-3`，開啟後自動預選到該項次
- 項次選單旁加「🔗 複製此項次連結」按鈕
- **工作量估計**：2–3 小時

#### M. ✏️ 提示詞模板管理（我的版本）
**問題**：每次審查「3 門課版本」都要手動改提示詞  
**建議**：
- 允許儲存最多 5 個命名模板（「3門課版本」、「合班版本」、「藝才班版本」）
- 下拉一鍵套用，localStorage 持久化
- **工作量估計**：半天

#### N. 📱 批次結果一鍵分享（LINE / Email）
**問題**：審查完後想把摘要傳給主任，目前只能截圖  
**建議**：
- 「分享到 LINE」→ `line://msg/text/...`（LINE URL Scheme）
- 「寄 Email」→ `mailto:?subject=...&body=...` 帶入摘要文字
- 摘要格式：學校名稱 / 審查時間 / ✅通過 X 項 ❌待修正 X 項
- **工作量估計**：2–3 小時

#### O. 🌙 深色模式（Dark Mode）
**問題**：老師習慣夜間備課，白底畫面刺眼  
**建議**：
- 讀取 `prefers-color-scheme: dark` 自動套用
- A⁻/A/A⁺ 旁加入 🌞 / 🌙 切換按鈕，存 localStorage
- Dark Mode 色票：`--bg: #0f1a17`、`--card: #1a2e2a`、`--text: #e8f4f2`
- CSS Custom Properties 架構讓切換非常容易
- **工作量估計**：3–4 小時

#### P. 📦 批次審查結果持久化（頁面重整可恢復）
**問題**：批次審查進行到一半，誤按重整就全部消失  
**建議**：
- 將 `batchResults` / `batchCurrentIdx` / `batchQueue` 存入 `sessionStorage`
- 頁面重整後偵測是否有未完成批次，提示「上次審查進行到第 12 / 40 項，是否繼續？」
- **工作量估計**：半天

#### Q. 🎙️ 語音播報審查結果（無障礙）
**問題**：視覺疲勞的老師希望聆聽結果而非閱讀  
**建議**：
- 結果區加「🔊 朗讀結果」按鈕，使用 Web Speech API（`SpeechSynthesis`）
- 自動選用繁體中文語音，調整語速
- 支援「暫停 / 繼續 / 停止」控制
- 完全免費、無需任何 API
- **工作量估計**：1–2 小時

#### JJ. 🏷️ 項次重要性分級標示
**問題**：40+ 個項次中，有些是教育局強制，有些較彈性，老師無法分辨輕重  
**建議**：
- 依教育局實際執行嚴格程度標注：🔴 強制通過 / 🟡 委員裁量 / 🟢 彈性說明
- Chip 顯示對應等級徽章
- 批次結果可依重要性排序，優先處理 🔴 項目
- **工作量估計**：半天（主要是資料研究與標注）

#### ✅ KK. 📊 批次審查摘要圖卡（已完成 v3.6）
> 820px 精美圖卡：SVG 環形通過率（≥90% 綠、≥70% 橙、<70% 紅 動態配色）+ 三項統計卡（通過/待修正/錯誤）+ 日期 + 免責聲明 + 品牌 Logo；手機 `navigator.share({files})` 直傳 LINE，桌機 toDataURL 下載 PNG

#### ✅ QQ. 📧 批次審查結果一鍵 Email 給主任（已完成 v3.4）
> 批次完成後加「📧 Email 給主任」按鈕；自動組裝通過/待修正/錯誤三份清單；`mailto:` 開啟預設郵件程式，Subject 含學年度與工具名稱，Body 含時間戳記 + AI 免責聲明

#### RR. 📈 批次審查通過率歷史趨勢
**問題**：老師多次修正後重新審查，想知道自己的通過率是否在進步  
**建議**：
- localStorage 記錄每次批次審查的日期 + 通過率（最多 10 次）
- 批次摘要橫幅加一個小折線圖（純 SVG，不需 Chart.js）：「通過率趨勢：72% → 81% → 94%」
- 直觀看到改善幅度，提升老師修正動力
- **工作量估計**：3–4 小時

#### ✅ UU. 💬 一鍵分享到 LINE（已完成 v3.5）
> 批次摘要與單項結果均新增獨立「💬 LINE 分享」按鈕，使用 `https://line.me/R/msg/text/?...` URL Scheme；桌機未安裝 LINE 時瀏覽器自動引導

#### VV. ⏰ 批次離峰排程（定時自動送審）
**問題**：審查 40 項約需 15 分鐘，老師須全程守候；若能在備課空檔或下班後自動跑完最理想  
**建議**：
- 「開始批次審查」旁加「⏰ 排程審查」下拉：立即 / 10 分鐘後 / 30 分鐘後 / 自訂時間
- 使用 `setTimeout` 延遲啟動，頁面保持開啟即可
- 審查完成後觸發桌面通知（Notification API，與 v2.0 已有機制整合）
- **工作量估計**：1–2 小時

#### WW. 🧩 提示詞版本比較（A/B 測試模式）
**問題**：課務組想知道「原版提示詞」vs「客製化提示詞」哪個審查結果更準確  
**建議**：
- 「送出審查」旁加「⚡ 雙版本比較」按鈕，同時用原版與編輯版 Prompt 送出
- 結果左右並排顯示（`Promise.allSettled` 並行呼叫）
- 各版結果下方有「選用這版」按鈕，決定採用哪個結果
- **工作量估計**：1–2 小時

#### ✅ XX. 🔑 API 金鑰申請圖文引導 Modal（已完成 v3.7.0）
> 首次使用者不熟悉如何申請 Gemini API 金鑰：點擊「🔑 免費申請 API 金鑰」按鈕 → 彈出 4 步驟漸層 Modal（Google 藍→綠）→ 圓圈時間軸樣式、code 片段高亮、注意事項提示框 → 底部「開啟 Google AI Studio」大按鈕；3 處觸發點全部連動，ESC 可關閉。

#### YY. 🎥 PDF 多頁縮圖輪播選頁
**問題**：v3.6 F 功能只顯示第一頁縮圖，但老師要審查的條款通常在後面頁次，想確認檔案是否正確需要靠猜  
**建議**：
- fileInfo 區塊加入「🔍 預覽全部頁面」按鈕，打開 modal 顯示所有頁面的小縮圖（grid 排列，每頁 120×160）
- 點擊任一縮圖展開該頁大圖（沿用 v3.6 lightbox 機制）
- 縮圖產生採 batch + `requestIdleCallback` 避免卡頓；每 10 頁載入一次
- **工作量估計**：3–4 小時

#### ZZ. 📝 批次結果卡片內聯編輯修改建議
**問題**：AI 給的修改建議有時用詞不精準，老師想手動潤飾後再寄給主任  
**建議**：
- 每張「待修正卡片」的修改建議區塊加「✏️ 編輯」按鈕，點擊後變成 contentEditable textarea
- 編輯完成後「💾 儲存」回填到 batchResults + sessionStorage 持久化
- 儲存後匯出的 Word / CSV / Email 一律採用編輯後版本
- **工作量估計**：半天

#### AAA. 🧪 範例體驗模式（Demo Mode）
**問題**：新使用者第一次看到工具，沒 PDF 可測試、不想麻煩地找真實檔案，就直接關閉了  
**建議**：
- Header 加「🧪 體驗模式」按鈕，點擊後：
  1. 自動載入內建的範例 PDF（範例課程計畫片段）
  2. 自動選中某個項次（如 6-2-1-3）
  3. 自動填入示範用 API 金鑰 OR 直接進入無金鑰引導模式
  4. 結果畫面帶 🎬 浮水印標示「這是範例結果」
- 讓老師 30 秒內就能體驗完整流程，再決定要不要申請金鑰
- **工作量估計**：3–4 小時（含範例 PDF 與結果的設計）

#### BBB. 🔔 長時間未審查提醒（Nudge）
**問題**：老師開著工具做到一半接電話去開會，之後忘記繼續，工具閒置  
**建議**：
- 使用 Page Visibility API 偵測使用者離開分頁 30 分鐘以上
- 回來時右下角浮出柔和提示：「👋 您已離開 30 分鐘，要繼續剛才的審查嗎？」
- 搭配 PP 自動存檔，一鍵「🔄 恢復進度」
- 附「今天稍晚提醒我」/「今天不要再提醒」選項
- **工作量估計**：1–2 小時

#### CCC. 📷 截圖部分審查（局部模式）
**問題**：整份 PDF 太大，老師只想針對「0-1 學校課程計畫依據」這一頁或一個表格快速審查  
**建議**：
- Step 1 上傳區加第二顆按鈕「📷 改上傳截圖（JPG/PNG）」
- 截圖經 PDF.js 以外的 OCR 引擎（如 Tesseract.js 懶載入）擷取文字
- OCR 結果直接進入 extractedText，後續流程相同
- 支援手機拍照直接上傳（`accept="image/*" capture="environment"`）
- **工作量估計**：1 天（含 OCR 整合 + 測試準確度）

#### DDD. 🎓 教師研習簡報模式（Presentation Mode）
**問題**：您在研習時演示工具，但手機螢幕投影太小，台下老師看不清楚細節  
**建議**：
- Header 加「🎤 簡報模式」切換按鈕，啟用後：
  - 字型再放大 20%（已有 A⁺，這個更極端）
  - 所有按鈕、結果卡片加粗邊框
  - 只顯示主要功能，隱藏次要控制（字型大小、版本 Toast）
  - 游標自動變大 + 紅點特效（像雷射筆）
- 可配合 Canva 教學簡報入口使用
- **工作量估計**：2–3 小時

#### EEE. 🏷️ 審查結果自動標註文件位置
**問題**：AI 說「第 0-1 項依據部分未包含 107 年函文」，但計畫書有 50 頁，老師不知道要翻到哪裡找  
**建議**：
- 擷取 PDF 文字時額外記錄每頁文字的起始位置（`pagesText[] = [{pageNo, text, startChar}]`）
- AI 結果中提到的項次代碼（如「0-1」）自動變成超連結：點擊後 PDF lightbox 跳到對應頁面
- 需擴展 lightbox 支援多頁切換（搭配 YY 功能）
- **工作量估計**：1–2 天（技術挑戰：定位精準度）

#### FFF. 🔍 全域快速搜尋跳轉（Ctrl+K / Cmd+K）
**問題**：40+ 個項次 + 多個功能按鈕，老師要找「6-2-1-3」或「下載 CSV」按鈕要捲動老半天  
**建議**：
- 仿照 Notion / Raycast 的 Cmd+K 全域搜尋：按 `Ctrl+K`（Mac: `Cmd+K`）彈出搜尋框
- 輸入關鍵字即時篩選所有項次 + 所有功能按鈕
- 按 Enter 直接跳到對應位置或觸發功能
- **工作量估計**：3–4 小時

#### GGG. 🌍 學校校徽 / Logo 自訂上傳
**問題**：v3.6 KK 批次摘要圖卡通用設計，但主任希望帶上「桃園市○○國小」的校徽  
**建議**：
- 設定面板新增「校徽上傳」（只支援 PNG < 200KB，存 localStorage base64）
- KK 圖卡右上角 + Word 報告封面 + Email 簽名都自動帶入
- 附「無校徽」選項（若老師不想上傳）
- **工作量估計**：2–3 小時（含圖片壓縮處理）

#### HHH. 🎨 主題色自訂
**問題**：不同老師對藍綠主題有不同偏好，有人喜歡粉紅、有人喜歡深藍  
**建議**：
- 設定面板加「🎨 主題色」下拉：青綠（預設）/ 寶石藍 / 櫻花粉 / 深紫 / 橙紅
- 透過切換 CSS Custom Properties（--primary / --primary-light 等）秒切
- 選擇存 localStorage，下次開啟記憶
- 可作為「夜間模式 O」功能的前置，讓 CSS 變數架構更完整
- **工作量估計**：2–3 小時

---

### 🔴 進階功能（長期目標）

#### R. 📦 無金鑰批次模式（分頁式引導）
**概念**：目前免金鑰引導只支援單項；老師想審 40 項但沒有 API Key  
**建議**：
- 「批次提示詞打包下載」→ 產生含所有選中項次提示詞的 TXT 檔
- 分頁式引導：每次一個項次，完成後切換下一項
- **工作量估計**：1–2 天

#### S. 📸 掃描版 PDF 支援（OCR）
**問題**：許多學校的課程計畫是掃描版，目前完全無法擷取文字  
**方案一（免費）**：整合 Tesseract.js（開源前端 OCR），全程在瀏覽器執行  
**方案二（推薦）**：整合 Google Cloud Vision API，中文準確率極高（每月前 1,000 頁免費）  
**工作量估計**：1–2 天

#### T. 🗂️ 雙 PDF 比對（新舊版本差異分析）
**概念**：上傳「去年課程計畫」與「今年草稿」，AI 找出哪些段落可能沒有更新  
**技術**：同時上傳兩份 PDF，分別擷取文字，組裝比對 Prompt  
**工作量估計**：半天（UI 增加雙上傳區）

#### U. ☁️ Cloudflare Workers API Proxy（根本解決 CORS）
**問題**：OpenAI 在 GitHub Pages 環境下因 CORS 無法使用  
**方案**：部署 Cloudflare Workers Proxy，前端統一呼叫 Proxy，解鎖 Claude、Mistral 等更多模型  
**工作量估計**：半天（含 Cloudflare 設定）

#### V. 🌏 多縣市 / 跨學年度版本
**概念**：目前 Prompt 是「桃園市 115 學年度」專用  
**技術**：設計可抽換的「審查標準資料包」（`criteria/taoyuan-115.json`），工具首頁加縣市選擇器  
**目標**：打造全台最完整的課程計畫 AI 審查資料庫  
**工作量估計**：資料分離 1 天 + UI 選擇器 1 天

#### W. 🤖 多 AI 模型同時對比審查
**概念**：同一份 PDF + 同一個項次，同時送給 Gemini 2.5-flash 和 Gemini 2.5-pro，左右並排顯示  
**技術**：`Promise.allSettled()` 並行呼叫，介面左右兩欄  
**延伸**：「AI 共識模式」——兩個模型都說「表件通過」才顯示大綠旗  
**工作量估計**：半天 ~ 1 天

#### X. 🏆 審查品質評分（Scoring）
**概念**：目前 AI 只給「通過」或「待修正」，老師不知道嚴重程度  
**建議**：Prompt 要求 AI 給出結構化評分（0–100 分 + 必修缺失 / 建議修正分類）  
- 介面顯示「符合度 65%」進度條（綠 / 橘 / 紅漸變）
- 批次後可按分數由低到高排序
- **工作量估計**：1–2 天（Prompt 設計 + 結果解析）

#### Y. 🤝 Google 帳號登入 + 多裝置同步
**概念**：進度、提示詞模板都存 localStorage（只限一個瀏覽器），換電腦全部消失  
**技術**：整合 Google Identity API（OAuth 2.0），進度 / 模板 / 歷史同步到 Google Drive  
**工作量估計**：2–3 天

#### Z. 🏫 學校主任管理面板
**概念**：全校多位老師各自審查不同項次，主任需要一個總覽頁面  
**技術**：需要後端（Supabase）+ Google 帳號登入，支援任務指派 / 評論 / 全校彙整報告  
**注意**：這已是 SaaS 等級的產品  
**工作量估計**：1–2 週

#### LL. 🤖 AI 修改稿「全批次」自動生成
**概念**：II 功能是逐項按需生成；本功能是批次審查完成後，一鍵對所有待修正項目批次生成修正稿  
**流程**：
1. 批次審查完成 → 點「一鍵生成所有修正稿」
2. 逐項呼叫 API（帶入 PDF 原文 + 審查意見）
3. 所有修正稿匯入 Word 報告（各項次獨立區塊）
- **工作量估計**：1–2 天（含批次 API 管理 + Word 整合）

#### SS. 🔍 修正稿品質二次驗證（自動回審）
**概念**：II 生成修正稿後，自動把修正稿再送回 AI 驗證是否符合審查標準  
**流程**：生成修正稿 → 自動呼叫原審查 Prompt 驗證 → 顯示「✅ 修正稿已通過驗證」或「❌ 仍需修改」  
**效益**：讓老師確認修正稿真的可以通過，不需再手動重新上傳  
**工作量估計**：3–4 小時（在 II 基礎上延伸）

#### TT. 🌐 Google Sites / Classroom 整合
**概念**：將審查工具嵌入學校 Google Sites 課程計畫管理頁面，或整合到 Google Classroom  
**技術**：Google Sites 支援 iframe 嵌入、Classroom API 可讀取繳交檔案  
**工作量估計**：需要 Google Workspace 管理員權限，1–2 週

---

## 三、技術負債與需要注意的問題

| 問題 | 影響程度 | 目前狀態 | 建議處理方式 |
|------|----------|------|------|
| 單一 HTML 檔案持續增大（~145KB）| 🔴 高 | 已嚴重超過合理上限 | 拆分審查資料為獨立 `criteria.json`（fetch 載入），預計可縮減 40% |
| renderMarkdown 對複雜格式可能失準 | 🟡 中 | 已大幅改善但仍自製 | 考慮引入 marked.js（20KB，輕量）完全替換 |
| API 金鑰明文存 localStorage | 🟡 中 | 已有「金鑰不上傳」說明 | 加入 session 過期機制，提示定期清除 |
| Prompt 長度未截斷 | 🟡 中 | 有字數警告但未自動截斷 | 加入字數截斷（保留前 N 字 + 尾部 + 提示） |
| ~~批次審查無法跨頁儲存~~ | ✅ 已解決 | v3.4 PP 自動存檔每 5 分鐘 + 復原橫幅 | PP 已完成 |
| OpenAI CORS 問題（GitHub Pages） | 🟡 中 | 已有警告提示 | 完整解法需 API Proxy（對應建議 U） |
| ~~Service Worker 快取更新機制~~ | ✅ 已解決 | v3.3 版本化 CACHE_NAME + postMessage 通知 | HH 已完成 |
| 無自動化測試 | 🟢 低 | 全靠手動測試 | 加入基本 Playwright E2E 測試 |
| 無金鑰貼回結果無法驗證來源 | 🟢 低 | 老師自行把關 | 提示「請確認來源為正確的 AI 回覆」 |
| _fixTexts 記憶體未清空 | 🟢 低 | 批次結果存於記憶體，刷新即消失 | 搭配 PP 自動存檔一起處理 |

---

## 四、優先順序建議（v3.x 路線圖）

```
✅ 已完成（v1.0 → v3.7.0）：
  核心架構 / PDF 擷取 / 40+ 審查項次 / API 整合（Gemini + OpenAI）
  三步驟引導流程 / Markdown 結果渲染 / 批次審查
  免 API 金鑰三步驟引導 / 引導步驟可收合
  完成聲音 + 桌面通知 / 批次結果篩選 Tab
  ⭐ 遊戲風進度條（批次 + 單項百分比模擬）
  ⭐ 審查結果卡片化（表格自動識別 / 摘要列 / 符合/待修正分區）
  ⭐ 桌機 RWD 字型全面放大 / Footer 彩虹按鈕 / PDF 點擊 Bug 修正
  ⭐ v3.0：Word 匯出 / 截圖分享 / API 自動重試 / 分批提醒 / 5步驟引導 / 批次關鍵字搜尋
  ⭐ v3.1：引導步驟 3-5 高亮 + 捲動定位 Bug 修正
  ⭐ v3.2：Canva 使用教學簡報入口（Header + 右下角浮動）
  ⭐ v3.3：GG 人工確認覆寫 / HH 版本更新 Toast / II 修正稿一鍵生成
  ⭐ v3.4：NN 原生分享 / OO CSV 匯出 / PP 自動存檔（5分鐘）/ QQ Email 給主任
  ⭐ v3.5：B 重審 / E 展開收起 / D 計時器 / UU LINE分享 / G 彩帶動畫
  ⭐ v3.6：KK 批次摘要圖卡（SVG 環形通過率+PNG）/ F PDF 第一頁縮圖預覽（含 lightbox）
  📝 v3.6.1–3.6.2：彈性課程評量方式嚴格模式（主動提醒移除百分比）
  📝 v3.6.3：數學領域學習內容阿拉伯數字編碼例外說明
  📝 v3.6.4–3.6.5：對照教育局 0420 版全面更新 6 項內容（4-1-3/5-1-1/5-3-1/6-1/7-1-2-1/7-4-2）
  📝 v3.6.6：教育局參考文件連結升級至 0420 版 PDF
  ⭐ v3.7.0：XX API 金鑰申請 4 步驟圖文引導 Modal

🔥 第七波（近期優先，建議 1–2 週內）：
  SS.  修正稿品質二次驗證      ← 在 II 基礎上延伸，閉環驗證，老師最有安全感
  FFF. 全域快速搜尋（Ctrl+K）  ← 3–4 小時，40+ 項次的查找體驗大幅提升
  I.   學校基本資料設定        ← 3 小時，摘要圖卡也可帶入學校名稱 + AI 判斷更精準
  BBB. 長時間未審查提醒        ← 1–2 小時，配合 PP 自動存檔，避免中斷遺忘
  RR.  通過率歷史趨勢圖        ← 3–4 小時，SVG 折線圖，提升修正動力
  VV.  批次排程（離峰執行）    ← 1–2 小時，避免課間手動守候

💎 第八波（UX 再升級，1–2 個月）：
  AAA. 範例體驗模式（Demo）    ← 3–4 小時，首次訪客 30 秒內看完流程
  YY.  PDF 多頁縮圖輪播        ← 3–4 小時，F 的擴展，可確認後續頁面
  HHH. 主題色自訂              ← 2–3 小時，為深色模式 O 奠定基礎
  O.   深色模式                ← 3–4 小時，夜間備課保護眼睛
  GGG. 校徽 / Logo 自訂        ← 2–3 小時，KK 圖卡 / Word 報告更正式
  JJ.  項次重要性分級          ← 半天，協助老師判斷輕重緩急
  C.   匯出 HTML 報告          ← 2–3 小時，非技術老師也能直接用瀏覽器開啟

🎯 第九波（內容編輯與進階工作流，2–3 個月）：
  ZZ.  結果內聯編輯修改建議    ← 半天，老師潤飾 AI 建議後再寄給主任
  H.   結果卡片標注重點        ← 2–3 小時，雙擊文字 highlight 方便修正
  EEE. 結果自動標註文件位置    ← 1–2 天，點項次代碼跳到 PDF 對應頁
  DDD. 教師研習簡報模式        ← 2–3 小時，研習現場演示體驗加分
  WW.  提示詞 A/B 比較         ← 1–2 小時，左右並排驗證提示詞效果
  M.   提示詞模板管理          ← 半天，常用 Prompt 一鍵套用

🚀 長期目標（3 個月+，含重大投入）：
  S.   掃描版 PDF OCR          ← 解決最常見的使用障礙（方案：Tesseract.js）
  CCC. 截圖部分審查            ← 1 天，結合 S 的 OCR 基礎，手機拍照即審
  V.   多縣市資料包            ← 打造全台通用工具（抽離審查資料到 JSON）
  X.   審查品質評分系統        ← 提升 AI 結果可讀性（0–100 分）
  LL.  全批次 AI 修改稿生成    ← 終極功能，真正「AI 幫你改」整份計畫
  Y.   Google 登入 + 跨裝置同步 ← 2–3 天，換電腦資料不會消失
  Z.   學校主任管理面板        ← SaaS 等級，需要後端（Supabase）
```

---

## 五、近期版本詳細異動摘要（v3.6 → v3.8.0）

| 版本 | 發布日期 | 主要變更 | 類型 |
|------|---------|---------|------|
| v3.6 | 2026-04-14 | KK 批次摘要圖卡 + F PDF 縮圖預覽 | 🎨 功能新增 |
| v3.6.1 | 2026-04-18 | 8 項彈性課程加入「評量不得相同/115 配分無需呈現」 | 📝 內容補強 |
| v3.6.2 | 2026-04-18 | 評量百分比嚴格模式（主動提醒移除 60%、40% 等數字） | 📝 內容補強 |
| v3.6.3 | 2026-04-18 | 數學領域學習內容阿拉伯數字編碼例外說明 | 📝 內容補強 |
| v3.6.4 | 2026-04-20 | 7-4-2 評鑑表學年度 114→115 | 📅 年度修正 |
| v3.6.5 | 2026-04-20 | 對照 0420 版全面更新 5 項（4-1-3/5-1-1/5-3-1/6-1/7-1-2-1）| 📅 全面對齊 |
| v3.6.6 | 2026-04-20 | Google Drive 參考文件連結升級至 0420 版 PDF | 🔗 連結更新 |
| v3.7.0 | 2026-04-20 | XX API 金鑰申請 4 步驟圖文引導 Modal | 🎨 UX 升級 |
| v3.7.1 | 2026-04-21 | 修復表格分隔線誤渲染為內容的顯示 Bug | 🐛 Bug 修正 |
| v3.7.2 | 2026-04-22 | 擴充自動重試 + 友善中文錯誤提示，解決伺服器壅塞困擾 | 🛠 健壯性 |
| v3.8.0 | 2026-04-27 | 同步教學組 0427 撰寫注意事項 4 大新規（領域寫法 / 動詞+名詞 / 不抄教材 / LP-LC 呼應）| 📝 內容補強 |
| v3.9.0 | 2026-05-04 | LINE 即時通知（送出/成功/失敗 三狀態 Flex 卡片） | 📢 通知整合 |
| v3.10.0 | 2026-05-05 | LINE 通知強化：新增 IP / 地理 / 裝置 / Session 來源資訊 | 📢 通知強化 |
| v4.0.0 | 2026-05-10 | 🎨 編輯排版式視覺重構（B1 松綠側欄 + R3 狀態色條結果卡）| 🎨 視覺重構 |
| v4.0.1 | 2026-05-15 | 🛡️ 強化 pro 模型 quota 爆掉指引 | 🛠 健壯性 |
| **v4.1.0** | **2026-05-19** | ✨ **合規版產生器**：左側欄新增模式切換，三步驟（基本資料 → 構想 → AI 生成），內建 5 道桃園市 115 合規鐵則 | ✨ 新模式上線 |
| v4.1.0-hotfix | 2026-05-19 | 🩹 修補產生器讀錯 localStorage key (`tyc_api_key` → `tyc_apikey`)，使用者已設金鑰也讀不到的 bug | 🐛 Bug 修正 |
| **v4.2.0** | **2026-05-20** | 💬 **產生器接 LINE 即時通知**：把 v3.9 / v3.10 的三狀態 Flex 卡片（送出 / 成功 / 失敗）延伸到產生器流程，卡片帶學校 / 年級 / 領域 / 教科書版本 / 路線 / 模型 / 字數 / 耗時，與審查模式對齊 | 📢 通知擴展 |
| v4.2.1 | 2026-05-21 | 🩹 修 `.gen-loader` `hidden` 屬性被 CSS class display 蓋掉，進入 G3 立刻就轉圈圈的顯示 Bug | 🐛 Bug 修正 |
| **v4.2.2** | **2026-05-22** | 💸 **LINE 通知瘦身**：拿掉「使用者送出」狀態，只發「完成 / 失敗」兩狀態 Flex 卡片，避免吃光 LINE 官方訊息額度（每次操作從 2 則降為 1 則，省 50%） | 📢 通知優化 |
| **後端 N1-a~d** | **2026-05-22** | 🛡️ **Tier 1 通知系統改良**（純後端，前端零異動）：去重節流 60s + failed 卡片「🔄 重新審查」按鈕 + 23:00–06:59 quiet hours + 「表件通過」獨立綠色 🎉 樣式 | 📢 通知系統 |

---

## 五-A、v4.1.0 合規版產生器詳細紀錄（2026-05-19）

依使用者反饋，新增「**產生合規計畫**」模式 — 從「審查現有 PDF」反向延伸到「直接幫老師寫合規計畫」。**原審查流程零異動**。

### 核心架構

- **入口**：左側欄頂部 segmented control（直式），預設仍是審查模式，使用者可隨時切換
- **三步驟**：G1 基本資料 → G2 教學構想 → G3 AI 生成 + 預覽匯出
- **mode 切換實作**：body class + `data-mf="review"` 自動標記既有元素，零侵入式
- **共用後端**：直接呼叫既有 `callGemini` / `callOpenAI` / `showToast`，不引外部 lib

### 5 道桃園市 115 學年度合規鐵則（寫入 AI system prompt）

1. **10 項領域名稱統一寫法**：語文領域-國語文／本土語文／英語文、數學領域、社會領域、自然科學領域、藝術領域、健康與體育、綜合活動、生活課程；標題粗體呈現，**不可加【】**
2. **議題融入無【】**：「家庭教育」而非「【家庭教育】」
3. **七大要素齊備**：核心素養 / 教學單元 / 教學重點 / 教學進度 / 學習節數 / 評量方式 / 學生能力與興趣說明
4. **週數對應**：1-5 年級各 20 週、6 年級下學期 17-18 週、**每週必須有具體內容**
5. **單元名稱反退件雷區**：不可直接抄教科書單元名，必須改寫為素養雙段式（「主題 / 具體內容」）

### 額外工作流亮點

- **產 → 審閉環**：「🔍 送進審查模式驗證」一鍵把產出塞回 `extractedText` 跑 5-1-1
- **預覽編輯**：contenteditable 直接修改 AI 產出，支援 Markdown 表格
- **匯出 Word**：沿用 v4.0 松綠樣式
- **無金鑰也能用**：「複製提示詞」貼到 ChatGPT / Gemini 網頁版

### v4.1.0 補丁

| Commit | 修補 |
|---|---|
| `10b91eb` | 合規版產生器主要實作（731 行新增） |
| `4ce4f0e` | 🩹 hotfix：產生器讀錯 localStorage key（讀 `tyc_api_key` 但實際儲存的是 `tyc_apikey`），使用者已設金鑰也被擋。修補為「input → tyc_apikey → tyc_api_key」三層 fallback，跟既有 `executeReview()` 對齊 |

---

## 五-B、產生器後續路線圖（v4.1.0 之後）

> v4.1.0 上線後，「產生合規計畫」打開了新的工具線（不只審查、還能反向產出）。
> 以下按 **ROI / 老師實際痛點** 排序，每條都標註「估計實作成本」與「能解掉的退件痛點」。
> ⚠️ 國中端（JHScurriculum）有完全同步的路線圖，建議兩端共進。

### 🔥 Tier 1：高 ROI 短期改良（1-3 天內可做）

#### G1-a. 5-2 進度表獨立 mini 產生器
- **痛點**：5-2 是老師最常被退件的項次（要寫滿 20 週、每週內容、各領域分表）
- **做法**：在「產生合規計畫」內加切換 `📄 完整計畫` / `📅 只生 5-2 進度表`；後者 prompt 更專注、token 更省
- **加分**：教科書版本下拉連到康軒/翰林/南一各版本實際單元目錄資料庫
- **成本**：~1 天

#### G1-b. 「我去年的計畫」上傳改寫
- **痛點**：每年新學年度，老師都要把舊計畫翻出來改年份、改教科書版次、改教師名單
- **做法**：產生器加入口「📤 上傳去年計畫 PDF」→ AI 萃取結構 → 套今年度合規規則重寫
- **整合既有功能**：直接用 PDF.js 擷取，跟審查端共用
- **成本**：~1.5 天

#### G1-c. 議題融入節數計算器
- **痛點**：性別平等 6 節/學期、家庭教育 6 節/學年等法定議題節數常算錯
- **做法**：G2「議題融入」chip 旁顯示即時節數計算面板，超標 / 不足即標紅
- **成本**：~0.5 天

#### G1-d. 多領域批次產生
- **痛點**：低年級導師要交國/數/生活全部，重複勞動
- **做法**：G1 領域改成多選；每個領域跑一次 AI；下載打包 ZIP 或合併 Word
- **成本**：~1 天

### 🎯 Tier 2：中期能力擴充（1-2 週）

#### G2-a. 產 → 審 → 修 全自動閉環
- **痛點**：審完還要老師看建議手動回去改
- **做法**：審不通過 → AI 拿著「修正建議 + 原稿」生新版 → 再審 → 直到通過 or 達 3 次重試
- **風險**：可能無限循環打 API，要設 retry cap
- **成本**：~3-5 天

#### G2-b. 即時規則違反檢測
- **痛點**：老師手動編輯預覽時可能不小心又寫成「【家庭教育】」
- **做法**：contenteditable 加 input 監聽（debounce 1s）→ regex 比對違規模式 → 即時黃底標示
- **成本**：~2 天

#### G2-c. 6 系列彈性學習產生器
- **痛點**：5 系列（部定）可生，但 6 系列（彈性學習）審查項次更多更複雜
- **做法**：在產生器加切換 `📚 部定領域` / `🎨 彈性學習課程`；後者套 6 系列規則
- **成本**：~5-7 天

#### G2-d. 跨學年規則設定檔化
- **痛點**：116 學年度起，部分審查標準可能會調整
- **做法**：把「桃園市 115 規則」抽出成 JSON 設定檔，將來新增「116 規則」只改設定不動程式
- **附加效果**：可同時維護多年版本
- **成本**：~3 天

### 🚀 Tier 3：跨工具與雲端（長期，1 個月+）

#### G3-a. 國中 / 國小 / 高中三端共用核心模組
- **狀態**：國小 v4.1.0、國中 v1.2.0-jhs 已雙端落地，下一步應該抽出 `core-generator.js` 共用
- **做法**：兩 repo 都吃同一支 CDN 上的核心，每端維護自己的規則 JSON
- **未來高中端**：直接套 core + 寫高中規則設定即可
- **成本**：~5-7 天（含 build pipeline）

#### G3-b. Google Sign-In + Firebase 雲端同步
- **痛點**：老師換電腦就要重設 API 金鑰、表單預設值要重填
- **做法**：可選登入；登入後 API 金鑰、學校資料、最近產生的計畫自動同步
- **成本**：~7-10 天（含 Firebase 專案 + GitHub Actions Secrets）

#### G3-c. 校本範本庫
- **痛點**：同校老師常有共用的學校特色（如「鱻魚特色學園」食農、「閱讀策略融入」）
- **做法**：學校建立共用範本，同校老師產生時可選「套用本校範本」
- **依賴**：G3-b（雲端同步）
- **成本**：~5 天

### 💡 Tier 4：UX 體驗加分（隨時可做）

| 想法 | 成本 | 痛點 |
|---|---|---|
| **範例體驗模式**：首次進產生模式自動預填示範資料，按下生成立刻看結果 | 0.5 天 | 老師沒看到實際輸出前不敢用 |
| **AI 模型策略**：flash 草稿 → pro 精修兩段式 | 1 天 | pro 每日 50 次容易爆 |
| **串流輸出**：邊生邊顯示，不必等 60 秒 | 1 天 | 等待感太重 |
| **產生器 onboarding tour**：第一次進產生模式跑 5 步教學 | 1 天 | 跟既有 tutorial 整合 |
| **產生紀錄歷史**：localStorage 存近 10 次產生結果，可重新打開 | 0.5 天 | 不小心關掉就重生 |
| **匯出格式擴充**：HTML / Markdown / Google Docs / Notion | 各 0.5-2 天 | 學校要求格式不一 |

### 🩹 Tier 5：技術債務與健壯性

- [ ] **產生器 prompt 黃金測試**：寫一組固定 prompt（如「3 年級國語 + 康軒」），定期跑驗證 AI 輸出是否仍符合 5 道鐵則；Google 更新模型可早期偵測 regression
- [ ] **prompt 模板分離**：抽出 `prompts/generator-es.md` 改用 fetch 載入，方便編輯
- [ ] **Token 用量監控**：產生 / 審查各跑一次大概消耗多少 token，給老師預估
- [ ] **Word 匯出排版**：欄寬在某些 Word 版本會跑掉，加 colgroup 固定
- [ ] **無痕視窗 + PWA 不安裝場景的離線降級**：UI 框架應該離線也能瀏覽

---

## 五-C、v4.2.0 → v4.2.2 LINE 通知系統擴展紀錄（2026-05-20 → 2026-05-22）

> 從 v3.9 / v3.10「審查模式」LINE 通知奠基，到產生器接入、Bug 修補、再到「額度瘦身」。
> 這條工具線完整呈現「通知層」三個月內的演進，是一份完整的 case study。

### v4.2.0（2026-05-20）— 💬 產生器接 LINE 即時通知（已 ship）

把 v3.9 / v3.10 的三狀態 Flex 卡片機制延伸到「產生合規計畫」流程。**零侵入既有審查通知**。

| 階段 | LINE 卡片標題 | 帶的欄位 |
|---|---|---|
| started | `[國小] 使用者送出 AI 產生計畫` | 學校 / 年級 / 領域 / 教科書版本 / 路線 / 模型 |
| success | `[國小] AI 產生計畫完成` | 學校 / 年級 / 領域 / 議題 / 模型 / 生成字數 + 耗時 footer |
| failed | `[國小] AI 產生計畫失敗` | 學校 / 年級 / 領域 / 模型 / 錯誤訊息 + 耗時 footer |

**技術點**：共用既有 `notifyAdmin()`、`keepalive:true` fire-and-forget、session ID 串連 started → success/failed、`app:'ES'` + `[國小]` 前綴自動分流。

### v4.2.1（2026-05-21）— 🩹 `.gen-loader` hidden 屬性失效

`hidden` 屬性被 CSS class `display:flex` 蓋掉，導致進入 G3 立刻就在轉圈圈。詳見 user-global memory `feedback-hidden-attr-vs-class-display.md`。

**修法**：CSS 改用 `&:not([hidden])` 條件選擇器，讓 `hidden` 屬性優先。

### v4.2.2（2026-05-22）— 💸 LINE 通知瘦身（**最新**）

**動機**：v4.2.0 上線後監測到，**每位使用者每次操作會吃掉 2 則 LINE 官方訊息額度**（送出 + 完成/失敗）。LINE Messaging API 官方帳號免費月配額 500 則，照此速率高峰期週末容易爆配額。

**做法**：拔掉 `executeReview()` 與 `genGenerate()` 兩處的 `notifyAdmin('started', ...)`，只保留 `success` / `failed`。

| 指標 | 修前 | 修後 | 效益 |
|---|---|---|---|
| 每次操作 LINE 訊息數 | 2 則 | 1 則 | **省 50%** |
| 月配額容納操作次數（500 則計）| 250 次 | **500 次** | **加倍** |
| 資訊損失 | — | 「送出」狀態靜默 | 可接受（後續 60s 內必有完成/失敗卡片補位） |

**動到的檔**：
- `index.html`：兩處 `notifyAdmin('started')` 移除、`APP_VERSION` → v4.2.2、版本 toast 文案更新
- `sw.js`：`SW_VERSION` 升 v4.2.2、`CACHE_NAME` 升 `curriculum-v4.2.2`（強制清快取）

**Commit**：`39f019a` 💸 v4.2.2: LINE 通知瘦身 — 只發完成 / 失敗,拿掉送出狀態

---

## 五-D、通知系統未來優化路線圖（v4.2.2 之後）

> v4.2.2「瘦身」之後，下一步該往哪裡走？以下是按 ROI / 工程成本 / 老師 + 管理者雙方視角排序的路線圖。
> 國中端（JHScurriculum）共用同一支後端 `notifyCurriculum`，建議任何改良雙端同步。

### 🔥 Tier 1：短期改良（1–3 天內可做）— **✅ 已全數 ship（2026-05-22）**

> **後端配套**：`smes-e1dc3` Cloud Functions `notifyCurriculum` 一次 deploy 完成，前端零異動（純後端改良）。
> **Commit**：[`b71c97b`](https://github.com/cagoooo/staff/commit/b71c97b) 🛡️ Tier 1 通知系統改良。

#### ✅ N1-a. 後端去重 + 節流（rate limiting）— 已落地
- **痛點**：同一位老師在 1 分鐘內連續按 5 次「送出 AI 審查」（網路慢以為沒反應）→ 連發 5 則完成卡片洗版
- **實作**：in-memory Map，dedupe key = `sid:status:title`，TTL 60 秒；重複請求回 `{success:true, dedup:true}` 不發 LINE
- **failed 例外**：失敗訊息不去重，避免遺漏
- **GC**：Map > 500 項時自動清過期資料
- **附加效果**：擋住惡意洪流，再次保護 LINE 月配額（在 v4.2.2 瘦身基礎上雙保險）

#### ✅ N1-b. failed 加「🔄 重新審查」按鈕（LINE Flex 卡片內）— 已落地（簡化版）
- **實作**：`buildCurriculumFlexCard` 新增 `retryUrl` 參數；failed 狀態 footer 加 primary button
- **App 分流**：依 `meta.app`（`ES` / `JHS`）自動帶國小 / 國中對應首頁 URL
- **簡化處**：點按鈕直接開工具首頁，PDF 已 cache 在 localStorage 可立即重試；之後可進化為 LIFF + URL state 還原（v1.5 候選）

#### ✅ N1-c. 通知靜音時段（quiet hours）— 已落地
- **實作**：預設 23:00–06:59（Asia/Taipei）不推 LINE，回 `{success:true, quietHours:true}`
- **failed 例外**：失敗訊息照常推（重要錯誤不該被靜音）
- **資料保留**：仍寫 `line_api_stats`，讓日後 Dashboard（N2-a）能還原使用量
- **加分項保留**：admin 自訂時段透過 LIFF（N2-a 完成後）做

#### ✅ N1-d. 「表件通過」獨立顯眼樣式 — 已落地
- **實作**：`CURRICULUM_CARD_THEMES` 新增 `success_pass`（亮綠 `#059669` + 🎉 + 「通過」label）
- **觸發**：title 含「表件通過」或 ✅ emoji 自動切到此 theme
- **效果**：admin 一眼可分辨「這位老師可以結案」vs「還有待修正項」

### 🎯 Tier 2：中期能力擴充（1–2 週）

#### N2-a. Cloud Function → Firestore log + LIFF Dashboard
- **痛點**：目前通知是「閱後即焚」，admin 想回顧「過去一週多少老師用過、平均耗時多少、哪個項次最常被審」無法查
- **做法**：
  1. Cloud Function 每次推 LINE 同時 `db.collection('notify_logs').add({...})`
  2. 建 LIFF（LINE 內網頁）顯示統計 dashboard：每日用量 / 平均耗時 / 失敗原因 Top 5 / 學校排行
- **附加效果**：免費 Cloud Run + Firestore 一個月成本可控在 $0
- **成本**：~5 天（含 LIFF + 基本圖表）

#### N2-b. 多通道通知（Email / Discord / Slack 擇一）
- **痛點**：LINE 配額是硬上限，且部分管理者偏好其他平台
- **做法**：後端加 `channels: ['line', 'email']` 設定，依 status 嚴重度分流
  - `failed` → LINE + Email（重要錯誤一定要看到）
  - `success` → LINE only（日常）
- **建議優先**：Email（最便宜、最普及）；Discord webhook 也免費且可分頻道
- **成本**：~2 天（Email 用 SendGrid free tier 或 Gmail SMTP）

#### N2-c. 老師端「通知開關」
- **痛點**：有的老師很在意隱私，不想被監看；目前無法 opt-out
- **做法**：「⚙️ API 設定」面板新增「📤 允許匿名統計（不含 PDF 內容）」勾選預設開啟，使用者可關
- **法規對齊**：個資 + 教育部資訊倫理
- **成本**：~1 天

#### N2-d. 卡片內容 i18n / 自訂模板
- **痛點**：將來如果要做高中、私立、英文版，標題前綴 / 欄位 label 全寫死
- **做法**：把 `NOTIFY_TITLE_PREFIX` / 欄位 label 抽出成 `notify-templates.json` 設定檔
- **附加效果**：admin 想改卡片版型不必動程式
- **成本**：~2 天

### 🚀 Tier 3：長期投資（1 個月以上）

#### N3-a. 通知系統獨立成 standalone repo
- **現況**：`notifyCurriculum` Cloud Function 跟其他 functions 混在 `smes-e1dc3` 專案
- **做法**：抽出 `notify-bridge` repo，做成可重用的「Web App → LINE/Email/Discord」通用 bridge，給其他學校教學工具也能用
- **共用對象**：MBTI 校園奇遇記、教學駕駛艙、未來的高中端…
- **成本**：~7–10 天（含 npm package + 文件）

#### N3-b. 智慧分流：依嚴重度自動選通道
- **概念**：
  - INFO（success）→ LINE 卡片（一眼瞄）
  - WARN（success 但有改善建議）→ LINE + email digest（每日一封彙整）
  - ERROR（failed）→ LINE 立即推 + Email + SMS（如果是付費 Twilio）
- **依賴**：N2-b 已完成
- **成本**：~3 天

#### N3-c. 老師端即時通知（PWA Web Push）
- **痛點**：老師按下「送出 AI 審查」後，等 60 秒回應期間切去做別的事就忘了結果
- **做法**：完成 / 失敗時除了 LINE 推給 admin，也透過 Web Push 推給該老師本人的 PWA（國小工具已是 PWA）
- **技術點**：VAPID key、Service Worker push event handler、permission flow
- **附加效果**：即使分頁關了也能通知
- **成本**：~5 天

#### N3-d. AI 通知摘要（每週彙整給管理者）
- **概念**：每週一早上自動發一則「上週週報」LINE：
  - 共 N 位老師、X 次審查 / Y 次產生
  - 最常被卡的審查項次 Top 3
  - 平均耗時 / 高峰時段
  - 推薦提示給老師（如「上週 5-2 通過率只 40%，建議轉發此提示」）
- **產出方式**：Cloud Scheduler → Cloud Function → Gemini 1 次呼叫產摘要 → LINE
- **成本**：~3 天

### 💡 Tier 4：UX 體驗加分（隨時可做）

| 想法 | 成本 | 痛點 / 效益 |
|---|---|---|
| **failed 卡片自動帶建議連結**：429 quota 爆 → 顯示「切到 flash」教學連結；網路錯 → 顯示離線降級教學 | 0.5 天 | 老師收到失敗訊息知道下一步該做什麼 |
| **手機 LINE 點開 LIFF 即可直接重審**：跟 N1-b 整合 | 跟 N1-b 合併 | 把 LINE 變成「工具入口」之一 |
| **success 卡片附「分享到家長 / 主任群組」按鈕**：用 LINE share API | 1 天 | 老師完成後直接轉發給主任，省一步截圖 |
| **失敗原因自動歸類 + 顏色**：把 quota / 網路 / API key / server overload 分四色 | 0.5 天 | admin 一眼看出今天問題集中在哪 |
| **卡片帶縮圖預覽**（PDF 第一頁 / 產出計畫第一段）| 1 天 | 視覺辨識比文字快 |

### 🩹 Tier 5：技術債務與健壯性

- [ ] **後端 unit test**：`notifyCurriculum` 目前無測試，重構時容易壞掉
- [ ] **Cloud Function cold start 對策**：第一個請求慢 2–3 秒，老師看不到差但會影響 keepalive 訊息 — 可改用 Cloud Run + min-instance=1（每月成本 ~$5）
- [ ] **LINE 推送失敗的二級處理**：目前只 catch + 吞，建議至少寫 Firestore log + admin 每日掃一次
- [ ] **環境變數規範化**：`LINE_CHANNEL_TOKEN` / `ADMIN_USER_ID` 應放 Secret Manager 而非 functions config
- [ ] **flow 圖文件化**：畫一張「使用者操作 → 前端 → Cloud Function → LINE → admin」的 sequence diagram，新人 onboarding 用

### 📊 Tier 6：資料驅動的進階優化（**最有潛力但需先做 N2-a**）

#### N6-a. 「審查項次困難度排行」AI 提示優化
- **概念**：累積 100+ 次通知 log 後，分析「平均最常失敗的項次」
- **行動**：那些項次的 system prompt 應該寫得更詳細 / 更嚴格 / 加更多範例
- **價值**：把通知系統從「打卡告知」升級為「持續改善工具品質」的資料源

#### N6-b. 失敗原因 → prompt 自動改善
- **進階版**：用 LLM 分析每週失敗 log，找出「同一個錯誤訊息」反覆出現的模式 → 自動建議要不要在 prompt / 前端加判斷
- **例子**：如果連續一週都有人因「議題加【】」被退，就在前端 G2 加 placeholder 提示「不要寫【】喔」

#### N6-c. 使用情境分群 → 不同推薦
- **概念**：登入老師可分成「重度（每週 5+ 次）」/「輕度（每月 1 次）」/「探索者（剛開始用）」
- **行動**：
  - 重度 → 推薦快捷功能 / 批次審查
  - 輕度 → 推薦範例體驗 / FAQ
  - 探索者 → 推薦完整 onboarding tour
- **資料來源**：Firestore log + `sid` + `email`（若已做 N2-c opt-in）

---

## 六、我自己的產品直覺建議（優先級排序）

經過 v3.0 至 v4.2.2 這段時期的功能開發，我對下一步的建議優先級如下：

### 🔥 最優先：降低新使用者門檻
1. **AAA 範例體驗模式** — 讓老師 30 秒內看完流程，決定是否投入
2. **XX + FFF 合體** — 已有 XX API 金鑰引導，搭配 FFF Ctrl+K 快速搜尋後，「首次 5 分鐘體驗」完全順暢

### 🎯 次優先：提升資深使用者生產力
1. **I 學校基本資料設定** — 一次設定，所有報告自動帶入
2. **ZZ 內聯編輯** — 老師最後一哩路：AI 建議不夠好可直接改
3. **M 提示詞模板管理** — 常用變形（3 門課、合班、藝才班）一鍵切換
4. **N1-b failed 卡片重試按鈕**（五-D） — 收到失敗訊息直接點 LINE 卡片重新審查

### 🎨 再優化：介面品質
1. **O 深色模式**（先做 HHH 主題色自訂奠基）
2. **DDD 簡報模式** — 研習現場演示的剛需
3. **N1-d「表件通過」獨立顯眼樣式**（五-D） — admin 一眼分辨可結案的卡片

### 📈 長期投資：工具不可或缺的功能
1. **S 掃描版 PDF OCR** — 解決最常被詢問的痛點（「我們學校的 PDF 是掃描的」）
2. **Y 跨裝置同步** — 當工具變成老師日常工具，這個功能就會變剛需
3. **N2-a Firestore log + LIFF Dashboard**（五-D） — 從「打卡告知」升級為「資料驅動工具改善」
4. **N3-c 老師端 Web Push**（五-D） — PWA 已就位，缺臨門一腳的雙向通知

### 🔄 v4.3 候選清單（下個版本可選）

**Tier 1（N1-a/b/c/d）已於 2026-05-22 全數落地** ✅ — 下一波建議從以下擇 1–2 個：

| 候選 | 來自 | 成本 | 推薦理由 |
|---|---|---|---|
| **G1-c 議題融入節數計算器** | 五-B | 0.5 天 | 純前端，零後端風險，立刻可用；雙端同步效益翻倍 |
| **G1-a 5-2 進度表獨立 mini 產生器** | 五-B | 1 天 | 命中老師最痛項次，已有 v4.1 產生器基礎 |
| **N2-c 老師端通知開關** | 五-D | 1 天 | 個資合規 + 雙端前端配套 |
| **Tier 4：failed 卡片自動帶教學連結** | 五-D | 0.5 天 | 與 N1-b 已落地的重試按鈕互補；失敗訊息更實用 |
| **Tier 4：失敗原因顏色分類** | 五-D | 0.5 天 | quota/網路/API key/server 4 色分流，admin 體驗再升級 |

---

---

*本文件持續更新，每次版本發布同步維護。*  
*如有新功能想法，歡迎透過「🐛 回報問題 / 建議」連結提交。*
