離線 AI 模型跨平台管理、三層 AI 階層調度與多使用者 CRUD 權限架構落實驗證報告
本報告總結針對使用者的四項核心需求所完成的深度架構升級、程式碼實作與驗證結果。
offline_model_manager.dart:建立跨平台端側離線 AI 模型管理器。settings_screen.dart 建立**「端側離線 AI 模型管理中心 (第 1 優先推論)」**卡片,具備:
Google Gemma 4 (2B) LiteRT 或 Chrome Built-in Gemini Nano)LinearProgressIndicator,顯示 0% ~ 100% 動態進度)preferOffline)| 平台 | 調度策略與技術實現 | 特點與優勢 |
|---|---|---|
| Web 瀏覽器 | 優先調用 Chrome 128+ Built-in AI (Prompt API / window.ai),備用 WebGPU + WebLLM / Transformers.js |
零下載負擔:由 Chrome 瀏覽器底層自動下載託管 Gemini Nano,享有本地 GPU 硬體加速,完全不消耗手機或網頁儲存空間。 |
| Android | 採用 Google LiteRT (原 TensorFlow Lite) / MediaPipe GenAI 加載 Gemma 4 / 2 (2B) int4 量化檔案 | 下載至 App 專屬安全資料夾,結合 Android Neural Networks API (NNAPI) 與 GPU delegate 進行超低功耗本機推論。 |
| iOS / Desktop | 原生 FFI / CoreML / LiteRT 引擎適配,無網路環境保證 100% 可用 | 本地端側離線推論與兜底保證。 |
在 ai_service.dart 與 ai_model_config.dart 中完成重構:
graph TD
Request["使用者提問 / 考題解析請求"] --> CheckOffline{"【第 1 優先】<br>離線優先開啟 且 本機模型就緒?<br>(或目前處於離線狀態)"}
CheckOffline -- 是 (預設模式) --> LocalInfer["⚡ 端側離線推論<br>(Gemma 4 2B / Chrome Nano)<br>• 0 網路流量 • 0 延遲 • 100% 隱私 • 4096 Tokens"]
CheckOffline -- 否 (或強制雲端) --> CloudPrimary["🚀 【第 2 優先】<br>雲端最新 Google 多模態模型<br>(Gemini 3.8 Flash)<br>支援思考預算、拓撲圖片多模態辨識"]
CloudPrimary --> PrimaryCheck{"呼叫狀態"}
PrimaryCheck -- 成功 (200 OK) --> ReturnPrimary["過濾思考標籤後輸出旗艦解析"]
PrimaryCheck -- 失敗 (429限流/503/逾時) --> CloudFallback["🛡️ 【第 3 優先 (備用)】<br>主流最穩定多模態模型<br>(Gemini 2.5 Flash / Gemini 1.5 Pro)"]
CloudFallback --> FallbackSuccess["無縫平滑返回穩定備用解析"]
Question (question.dart):
creatorId: String(建立者 UID,官方題為 'system')creatorName: String?(建立者暱稱)isOwner(currentUid) 與 canEdit(currentUid, isAdmin) 方法。ExamSubject (exam_subject.dart):
creatorId: String?、creatorName: String? 與 isOwner、canEdit。QuestionComment (question_comment.dart):
authorId, authorName, content, createdAt, updatedAt 與 isAuthor、canEdit。question_repository.dart):
saveQuestion 與 deleteQuestion 加入 currentUserId 檢查:若嘗試修改或刪除他人建立之考題,立即攔截並拋出 Exception('【權限不足】:您不是此考題的建立者,僅能進行讀取...')。discussion_repository.dart & discussion_controller.dart):
authorId == currentUserId)或系統管理員可以編輯或刪除該則留言;嚴禁竄改他人發言。practice_screen.dart & question_discussion_sheet.dart):
⭐ 您是本題建立者 或 👤 建立者:其他使用者 (唯讀))。firestore.rules(Cloud Firestore 安全規則)。supabase_rls_policies.sql(Supabase PostgreSQL Row Level Security 政策)。flutter analyze
# 結果:No issues found! (0 warnings, 0 errors)
flutter test
# 結果:All 34 tests passed! (包含 4 項全新離線調度與所有權隔離單元測試)
離線模型管理器狀態與下載流程測試 ➔ ✅ 通過AiService 三層調度:第 1 優先應執行端側離線推論 ➔ ✅ 通過考題建立者擁有 CRUD 權限,非建立者僅能 Read (Update / Delete 攔截) ➔ ✅ 通過考題討論區留言:僅原作者或管理員可修改/刪除留言,其他人唯讀 ➔ ✅ 通過