設備線上報修系統
| 層面 | 技術選擇 | 說明 |
|---|---|---|
| 前端框架 | React + Vite | 元件化開發、建置速度快 |
| UI / 樣式 | Tailwind CSS + shadcn/ui | 行動優先設計、快速切版 |
| 資料庫 | Firebase Firestore | 即時同步、無需自建伺服器 |
| 使用者驗證 | Firebase Auth + Google OAuth | 學校 Google Workspace 帳號直接登入 |
| 後端排程 | Firebase Cloud Functions | 寄信通知、自動封存舊資料 |
| Email 服務 | Gmail + Nodemailer | 報修通知信件寄送(Cloud Functions) |
| 佈署 | GitHub Pages | 原始碼存放於 GitHub,自動部署 |
採用 Firestore 管理員名單方案,在 admins/{uid} 集合中以 role 欄位區分:"admin"(總務人員)與 "superadmin"(主管)。登入時查詢確認身份,無需 Google Workspace Admin SDK。
startAfter() 游標分頁,搭配「上一頁 / 下一頁」按鈕。日期範圍搜尋讓使用者可以快速找到特定月份的報修單,不需一直翻頁。所有資料永久保留於 Firestore,僅以 archived: true 標記,主清單預設不顯示封存資料。
Google 帳號登入按鈕、學校名稱、說明文字。非學校帳號顯示拒絕訊息。
顯示所有未封存報修單,支援篩選、搜尋、分頁(20筆/頁)。各狀態以顏色區分。
填寫表單:標題、地點(從清單選取)、類別、優先級、說明。地點清單由超級管理員維護。
完整顯示報修資訊與處理紀錄。提交者可修改/取消(待處理狀態)。總務人員可更新狀態、填寫完成說明、刪除。
封存資料查詢頁,支援日期範圍、狀態、類別篩選。總務人員可取消封存。
總務人員帳號管理(新增/移除/角色設定)。超級管理員專屬:報修地點清單維護(新增/編輯/停用棟別與房號)、系統基本設定(學校名稱、允許登入網域)。未來可擴充報修統計圖表。
| 服務 | 免費額度 | 預估用量(月) | 狀態 |
|---|---|---|---|
| Firestore 讀取 | 50,000 次/天 | ~5,000 次 | ✓ 免費 |
| Firestore 寫入 | 20,000 次/天 | ~500 次 | ✓ 免費 |
| Cloud Functions | 125,000 次/月 | ~200 次 | ✓ 免費 |
| Auth 驗證 | 無限制 | — | ✓ 免費 |
| Gmail 寄信(Nodemailer) | 無上限(Gmail App Password) | ~60 封 | ✓ 免費 |
| GitHub Pages | 無限制(公開專案) | — | ✓ 免費 |
main 分支gh-pages 分支