成品 ・ 網站
系辦行事曆:LINE 登入與前一天提醒
第 41–42 週的成品。一個給系上使用的行事曆網站:老師用 LINE 一鍵登入、行程在前一天晚上自動提醒;權限交給資料庫自己擋,前端只放可以公開的金鑰。
打開系辦行事曆 ↗ 完成於 2026-W42
這是什麼
一個架在網路上的系務行事曆。看行程不用登入;老師要查自己的公差/招生記錄時,用 LINE 一鍵登入;行程會在前一天晚上提醒。除了月曆,還有公差/招生記錄、調查專區、教室課表、教師通訊錄幾個頁面。
這篇只寫系統本身 —— 不放任何教師個資、帳號或內部設定。
怎麼做的
01 先講清楚「LINE 登入」做不到什麼
LINE 只會回傳使用者 ID、顯示名稱、頭像 —— 不會回傳學校信箱。所以「這個 LINE 帳號是哪一位老師」這條對應關係必須自己建立,那才是這個功能真正的工作量,接 API 本身反而簡單。
做法是保留原本的帳密登入,旁邊加一顆 LINE 綠的按鈕:第一次先用帳密登入一次完成綁定,之後就能一鍵登入。沒綁定的人按了會看到明確說明,不會卡在「登入成功卻沒有權限」的半殘狀態。
02 權限放在資料庫,不放在前端
前端只放可以公開的 publishable key;真正的權限交給資料庫的資料列安全政策:未登入只能讀到標記為全系可見的事件,管理員才能新增、修改、刪除。最高權限的金鑰不放在前端、也不進版控。
03 前一天晚上九點提醒
建立事件時可以勾選通知;勾了的事件會在前一天的晚上 21:00 用 LINE 推播,不是當天才發。這種提前一天的時間點,才讓「提醒」真的有用 —— 當天早上才響,人已經在路上了。
04 月曆的視覺是自己定的
骨架用現成的月曆元件,事件卡則自己設計:每個類別三色一組(飽和主色、極淡同色底、深同色字),一眼分得出會議、課程、考試、活動、假日與其他,又不會整片月曆花花綠綠。時區一律以台北顯示,資料庫存 UTC。
05 驗收方式:量測,不靠眼睛
- 登入流程用假造登入狀態的測試頁跑四種情境,量實際渲染,不是用猜的
- 事件用瀏覽器 DOM 逐格核對日期與標題,逐字驗算星期
- 資料庫回讀筆數對帳,確認寫進去的跟畫面上的一致
學到什麼
- 「接 API」不是工作量,「建立對應關係」才是。 LINE 不給學校信箱,所以整個功能的難點變成綁定流程與身分對應,而不是登入按鈕。
- 權限要寫在資料層。 放在前端或提示詞裡的限制會被繞過;資料庫的資料列政策不會。
- 通知的價值在時間點,不在有沒有發。 前一天晚上與當天早上,對使用者的行為差很多。
- 驗收要能量測。 DOM 逐格比對、資料庫回讀、逐字驗算星期 —— 這三件事都能重跑,也都能留下數字。
- 失敗狀態先設計。 「還沒綁定」、「沒有權限」這些情境先寫好說明,比事後補錯誤訊息省事。
工具鏈:Folder(行政)、Supabase、FullCalendar、LINE Login、GitHub Pages、GSAP
本篇由 Border 與 Hermes 協作完成,內容經人工審核。
文中已去識別化:不含客戶/學生個人資料、內部路徑與任何憑證。