## 2026-09-10 學生密碼 CSV 與 Gmail 派發流程

已依最新決定完成「教師端建立帳號／產生臨時密碼 → 下載 CSV → 保存到 Google Drive → 由 Codex 透過 Gmail 逐封寄送 → 回寫寄送結果」的正式流程。明文密碼只出現在教師這次下載的 CSV；不寫入 Supabase、版本庫或公開前端。原始 CSV 按使用者決定保留在指定資料夾，不刪除、不移出；補寄時允許重新讀取同一份 CSV，不重新設定密碼，也不要求建立新批次。

已在 Google Drive 建立資料夾：`YZU / Admin / Peer Evaluation and Grouping`。[專案資料夾](https://example.invalid/resource/LINK_3696B0E083)。教師端現在顯示「建立帳號並下載密碼 CSV」，並明確說明這一步不寄信；CSV 含批次識別碼、派發識別碼、Email、姓名、語言、帳號狀態、臨時密碼、回條權杖與登入網址。既有帳號與失敗列不會提供臨時密碼。

目前「下載後存入 Google Drive」仍是教師／Codex 的明確作業步驟，尚未建立 Google Drive 新檔事件自動觸發器；本輪已由 Codex 讀取兩批 CSV，完成檔案驗證、Drive 保存、雙語 Gmail 寄送及回條回寫。

遠端已套用資料庫 migration：本地來源為 `20260909221144_account_dispatch_csv_export.sql` 與 `20260909222704_account_dispatch_export_fk_indexes.sql`；Supabase 記錄版本為 `20260909222218_account_dispatch_csv_export` 與 `20260909222717_account_dispatch_export_fk_indexes`。新增 `account_dispatch_batches` 與 `account_dispatch_batch_items`，批次資料與寄送結果只保存雜湊、狀態、次數、時間、message ID 及錯誤摘要；明文密碼不進資料庫。

已部署並讀回 ACTIVE 的 Edge Function：`student-account-export`（JWT 必須有效）與 `student-account-dispatch-receipt`（以批次回條權杖驗證）。前者建立或更新必要帳號並回傳 CSV，後者供 Gmail 寄送後回寫 `sent`／`failed`；舊的 Microsoft Graph `student-account-dispatch` 保留為未使用的相容端點，教師介面已不再呼叫它。

驗證結果：前端 `npm run check` 通過（3 個測試檔、8 項測試、TypeScript、Vite production build）；遠端 [remote_account_dispatch_export_smoke.sql](supabase/tests/remote_account_dispatch_export_smoke.sql) 成功並 rollback，覆蓋既有帳號／新帳號／失敗列、批次登錄、權限隔離、成功寄送、同一 CSV 失敗後補寄及嘗試次數累計；Edge Function 未登入請求回傳 HTTP 401，錯誤回條權杖回傳 HTTP 403。正式 CM108G／1151／01 名冊本輪完成 62 筆新學生帳號建立、兩批 CSV、兩批 Drive 保存及 62 封中英文並列通知信寄送；1 筆原有帳號依規則略過，不寄送新密碼。兩批批次與 62 筆寄送回條均已在 Supabase 標記 `completed`／`sent`。Supabase performance advisor 不再列出本次新增的未索引外鍵；剩餘警示均為既有 `course_team` 空資料索引、公開看板或 Auth 設定。

正式批次檔案已保存於 [Google Drive 專案資料夾](https://example.invalid/resource/LINK_3696B0E083)：`restricted-account-export.sanitized-example.csv`（25 筆）與 `restricted-account-export.sanitized-example.csv`（37 筆）。明文密碼未寫入 Supabase、版本庫、交接文件或公開前端；本檔不記錄密碼與回條權杖。補寄時仍依使用者決定，可重新讀取同一份 CSV，不重新設定密碼，也不要求建立新批次。

更新時間：2026-09-10（Asia/Taipei）｜階段：前端 commit／push／GitHub Pages 發布、正式 CSV 密碼匯出、Drive 保存及 62 封中英文並列學生通知信完成
