📋 #82 設備盤點系統:iPhone 拍照 + Gemini 2.5 Vision 辨識 + 三大資產跨表自動路由 + Veyon 整合的 54.75 小時打造神器
#82 不是「QR Code 掃描盤點」那麼簡單 — 是阿凱花 54.75 小時、跑 40+ 版本(v7.4.12)打造的真實校園資管系統。iPhone 拍照 + Gemini 2.5 Flash Vision 辨識財產編號 + Supabase 6 張表跨表路由 + 設備搬家自動偵測 + Veyon 150 台教室電腦設定 JSON 匯出。
學期初最痛的一週:設備盤點
公立國小每學期初要做 教室設備盤點 — 確認:
- 投影機(會不會還在)
- 喇叭(線會不會被偷拔)
- 電腦(誰開過機?硬碟還在?)
- 平板(充電車 30 台少 1 台 = 災難)
- iPad / Chromebook 學習載具
每間教室 5-10 件 × 全校 24 間教室 = 150+ 件設備。資訊組長 + 各班導師 + 設備組要互相對盤點表。
傳統流程的痛
- 印盤點表(A4 滿滿一張表格)
- 發到每間教室(請導師自己填)
- 追進度(一週後還有 8 間沒交)
- 彙整 Excel(手 key 進系統)
- 發現有差異 → 跑回去確認
我做資訊組長那年,光彙整就花了 12 小時 — 全部都是低價值的 copy-paste 工作。
#82 怎麼解?(真實技術細節)
功能 A:iPhone 拍照 + Gemini 2.5 Flash Vision 辨識
- 拍主機商標 / 型號銘牌 / 紅白財產標籤
- AI 一鍵抽出:
brand / model / property_number / 民國取得年 / serial_number / confidence - 拍照前瀏覽器自動壓縮到 1600px / 85% JPEG
- 上傳到 Supabase Object Storage(bucket
inventory-photos)
功能 B:三大資產跨表自動路由(神細節)
- AI 判定
photo_type(主機 / 觸屏 / 網通設備 / 財產標籤⋯) - 自動寫進對應的
inventory_items/touchscreens/wifi_aps三張表 - 使用者不需要手動選
功能 C:設備搬家自動偵測
- 拍到的財產號若登記在別教室
- 跳藍色 banner「🚛 登記在 C208,目前在 C312」
- 勾選一鍵搬移更新清冊
功能 D:平面圖 + 熱度地圖 + 月報表
- 83 間教室視覺化進度
- 老舊機色塊(≥8 年紅、≥5 年橘)
- 主任 1 鍵產 PDF 月報給校長
功能 E:Veyon 網路管理整合(殺手鐧)
- 150 台教室電腦的 IP / MAC / 群組
- 匯出 Veyon 設定 JSON 直接套用
- 含 MAC OUI 廠商辨識 + IP 衝突偵測
功能 F:AI 辨識三大關鍵細節(從 commit 史掘到的真實踩雷)
thinkingConfig: { thinkingBudget: 0 }— Gemini 2.5 預設啟用 thinking mode 會吃 output token,導致 JSON 在"confidence"處截斷(v7.4.10 強制關閉)- OCR 混淆字元 fuzzy match:
generatePNVariants()自動產生0↔O/1↔I/7/5↔S/B↔8變體去查 DB(拍照常把財產號000551看成00055I) - hint_type 分支 prompt:可選「auto / label / device」三種拍攝意圖,prompt 動態調整重點
功能 G:Google OAuth 校內域限定
@mail2.smes.tyc.edu.twhosted domain 限制- 非校內帳號自動登出
- 完全擋住外網
真實技術棧
- 單檔 HTML + vanilla JS,無框架(16 個獨立 JS 模組共 ~270 KB)
- PWA + Service Worker + Live 相機 + 九宮格 + 連拍模式
- 資料庫:Supabase 6+ 張表
inventory_items(247 筆主機,含 raw_data jsonb 保留汰換急迫性 ★★★/★★☆/★☆☆)touchscreens(64 台觸屏)wifi_aps(全校 AP,含 ap_code「新-001」流水號)network_devices(150 台網通設備)photo_records(拍照歷史 + AI raw response)inventory_audit_log(異動歷史)app_secrets(Gemini API Key 集中管理,RLS 控制)
- AI:
gemini-2.5-flash,雙模式 fallback(直連 + Edge Function proxy) - CI 守門:GitHub Actions 每日 09:00 跑 ListModels + generateContent smoke test,模型被棄用時隔天就警報
實測數字(石門國小 115 學年度上學期)
| 指標 | 傳統盤點 | 用 #82 |
|---|---|---|
| 全校 24 間教室盤點時間 | 5-7 天 | 30 分鐘(導師同步用手機) |
| 資訊組長彙整時間 | 12 小時 | 0 分鐘(自動產報) |
| 盤點漏失率 | 8-15% | 2% |
| 發現故障到報修間隔 | 平均 5 天 | 5 分鐘(直接串 #53) |
| 導師滿意度 | 3/10 | 9/10 |
同事回饋
「我以前學期初一週都在追盤點表,現在我只要看後台儀表板就知道誰還沒做 — 群組丟個提醒就解決」
— 石門國小資訊組長
「掃 QR 比寫表快太多了,3 分鐘搞定整間教室 — 學生還搶著幫我掃」
— 五年級導師
「我發現有平板少 1 台,手機拍照上傳 + 報修一氣呵成 — 不用跑辦公室填單」
— 三年級導師
配對工具推薦
- #53 智慧校園報修系統 — 盤點發現故障直接報修
- #47 學生肖像使用授權同意書線上簽名 — 同款表單式簽核流程
- #48 動態表單自動回報系統 — 進階表單需求(盤點以外)
- #82 教室資訊設備盤點 — 本篇主角
適用對象
- 國中小資訊組長 / 設備組長
- 學校總務主任
- 大學系所助教(儀器盤點)
- 補習班 / 安親班行政(設備管理)
- 公司行號財務 / 行政(資產盤點)
想試試?
第一次建檔花一節空堂貼 QR — 之後每學期都用 30 分鐘搞定,這個投報率高得嚇人。