幼明燈 YouMingDeng — 幼兒園避雷與評價社群平台
整合政府開放資料的幼兒園避雷平台:以地圖三色燈號標示風險,建立突破政府定期下架限制的歷史裁罰永久保存庫,並用 AI 把生硬公文轉成家長一眼看懂的白話標籤。



專案背景
台灣家長替孩子挑幼兒園時,最關心的「這間園所有沒有出過事」卻最難查。政府的裁罰資料雖然公開,卻會定期下架——惡質園所只要撐過公告期,甚至換個招牌(換殼),不良紀錄就彷彿從未發生。
幼明燈 的核心命題:把這些「會消失的政府資料」抓下來永久保存,再用地圖與燈號讓家長一眼看懂風險。
核心設計
1. 歷史裁罰永久保存庫
整合教育部開放資料名冊與多來源裁罰紀錄,完整保存全台 6,747 家幼兒園、6,666 筆裁罰。即使官方資料下架,本站仍留存歷史紀錄,並以「同負責人」「同地址」交叉呈現,防範換殼洗白。
2. 機械式三色燈號(刻意不讓 AI 決定)
紅/黃/綠燈號完全由公開、可稽核的規則計算,搭配 50 項單元測試確保一致性。AI 只負責把公文轉白話摘要,絕不參與燈號判定也不生產指控——這是處理裁罰這類高敏感、高法律風險資料時的關鍵設計底線。
3. 評鑑逐項檢核
抓取並解析每園的政府評鑑「全數指標檢核情形」,不符合項目以紅框置頂醒目列出(避雷核心),並提供可展開的完整明細表,同時保留官方原始報告連結。
4. LINE 分眾免費推播
LINE Login 會員系統(與後台認證分離的雙 Cookie 方案),會員可收藏園所。每日管線最後做精準分眾派送:只推給「收藏該園且已加好友」的會員,事件為①收藏園出現新裁罰 ②燈號轉紅——在零推播成本下做到有效通知。
技術架構
- 後端:ASP.NET Core (.NET 10) MVC + Razor 伺服器渲染(SSR 兼顧 SEO)
- 資料層:EF Core + Npgsql + NetTopologySuite,接 PostgreSQL / PostGIS 做空間查詢
- 地圖/圖表:Leaflet(標記聚合撐 6,700+ 標記)+ Chart.js(收費曲線)
- 資料管線:每日定時(台灣時間 03:30)自動執行「名冊→geocode→裁罰配對→燈號重算→AI 摘要」,各步驟獨立 DI scope、單步失敗不波及後續
- AI:Gemini Flash 做白話摘要,標註「自動產生、以原文為準」
- 部署:Docker Compose → AWS EC2 Graviton (ARM64 / Ubuntu),前置 Nginx Proxy Manager 反向代理
工程上的硬仗
- 政府站 TLS 阻擋:教保網對非瀏覽器連線做 TLS 層阻擋,透過將主機遷至台灣 IP + 維持 WebForms session(viewstate)成功整合即時評鑑查詢
- 反向代理擋 multipart:上傳走「瀏覽器端 canvas 縮圖 + base64 夾帶於一般表單」繞過反代對 multipart 的阻擋
- 資料語意校正:實測修正開放資料中
id欄位實為園所 UUID 而非裁罰流水號,改以內容雜湊做裁罰唯一鍵,避免錯配與重複
法律合規優先
本專案處理裁罰資料與家長個資,從第一行程式就把合規當鐵律:燈號規則與程式同源公開渲染、AI 嚴格禁止生產指控、裁罰一律附原文與官方來源、評論前端匿名 + 去識別化、完整四件組法務頁(燈號怎麼算 / 使用條款 / 隱私權 / 資料來源與方法)。
功能亮點
- 全台 6,747 家幼兒園互動地圖,Leaflet 標記聚合 + 紅黃綠三色安全燈號
- 歷史裁罰永久保存庫(6,666 筆),突破政府開放資料定期下架的限制
- 機械式燈號分類引擎:規則公開、含 50 項單元測試,AI 不參與燈號判定
- AI 白話摘要(Gemini):把「違反幼照法第 29 條」轉成「不當對待兒童」直觀標籤
- 幼兒園評鑑逐項檢核整合:不符合項目紅框置頂,附官方原始報告直連
- LINE 會員系統 + 分眾免費推播:只通知收藏該園且已加好友者,事件含新裁罰/燈號轉紅
- 後台 LINE 經營工具:圖文選單、排程廣播、自動通知範本一站管理
- 學費加總引擎 + 歷年收費曲線(Chart.js):算出每月實際自付額
- 全站 SEO:JSON-LD 結構化資料、sitemap、OG 分享卡、GA4 + Cookie 同意條
- 每日自動資料管線:名冊→geocode→裁罰配對→燈號重算→AI 摘要,單步失敗不中斷