「成績篩選系統」方向跟你想像的完全相反 — 不是班導用來「找退步學生需要關心」,而是教務處 / 學校評量業務用來篩選「前 X% 或前 N 名優秀學生」挑校內競賽選手、資優方案候選人、獎學金候選人的工具。「成績篩選」字面意思就是依分數取頂端。
🎯 核心特色
- 📂 三科分檔上傳 — 國文、英文、數學各自一份 Excel / CSV(不是一張表全包),支援拖曳 + 多 sheet 自動辨識(含「國文」「english」「math」關鍵字自動對應)
- 🔍 智慧欄位偵測雙層機制 — 第一層比對標題關鍵字;第二層分析內容特徵:台灣身分證格式(1 字母 + 9 數字)+ 班級代碼三碼拆解(203 → 2 年 3 班)+ 2-5 字中文姓名 + 0-150 分數範圍
- 📊 兩種篩選模式並存 — 「比例(前 X%)」+「固定名額(前 N 名)」+ 批次新增(一次勾三個年級套同條件)
- ⭐ 「現職學生」當然優先 + 「特殊學生」灰色排除(業務語意設計) — 現職學生即使分數不到也保留並標 ⭐ 金色;特殊學生比對身分證直接排除但結果中仍以灰色顯示(透明度設計:避免懷疑系統漏掉)
- 📤 結果三模式輸出 — 列表(搜尋 / 排序 / 三科並列)+ 分班分組(年級 + 班級折疊)+ Excel / CSV 匯出
- ⚠️ 跨科 ID 不一致警告 — 學生在國文表與數學表身分證對不上 → 警示
💡 設計理念
pnpm workspace monorepo:artifacts/grade-filter(主應用)+ artifacts/api-server(Express 預留)+ lib/db(Drizzle ORM 預留)。React 19 + TypeScript 5.9 + Vite + Tailwind + shadcn/ui + wouter + xlsx (SheetJS) + @tanstack/react-virtual(處理全校規模 600+ 人而非單班 30 人)+ IndexedDB(不是 localStorage!能存全校成績,自動持久化 / 還原)+ Web Worker 解析 Excel 不卡 UI + Web Vitals 監控 + PWA 離線 + i18n(中英雙語)+ 33 個 Vitest 測試 + Storybook + recharts 長條圖。零後端零雲端,成績資料完全不離開瀏覽器,符合個資合規。當前 v1.1.2(28 個已完成 + ROADMAP F-01 重複學生 / F-02 異常值規劃中)。石門國小 115 學年度第二次期中考實測:期中考後處理時間從 4-6 小時 → 15 分鐘、找出高關懷個案準確度 60% → 95%、班導下班時間 22:00 → 18:00 🎉。
🎒 適合情境
- 教務組長(彙整全校補救名單)
- 主任 / 校長(看校級成績分布)
- 補救教學老師(找對人補對科)
- 補習班 / 安親班(學生診斷分析)
部署 cagoooo.github.io/filter/。配對 #49 教務處寶藏庫 學生資料統整、#10 班級小管家 日常加扣分與作業繳交紀錄。第一次用 5 分鐘就上手,期中考後馬上用就回本。MIT 授權,cagoooo/filter 開源。