iT邦幫忙

2026 iThome 鐵人賽

0
Build on Google AI

將考國際證照的應用程式變成開源系列 第 54

使用今日發表的全新 Gemini 3.8 Flash 再次對照需求和規格文件進行疊代

  • 分享至 

  • xImage
  •  

在 Google Antigravity 用今日發表的全新 Gemini 3.8 Flash 再次對照需求和規格文件進行疊代
/goal
pwsh.exe 請幫我再對照一下,我們目前這個 App 還有那些尚未依照需求或規格文件要求做到的部分,請幫我完作所有的作業.

PassExam 完整規格與需求對照差距補齊實施計畫 (Goal Mode)

本計畫對照 docs_opensource/(包括 PRD、SDD、BDD、Test-Spec、UI-UX、Security、AI Engine 等)全量規格,將目前尚未完全實作或可進一步補強的部分全面補齊,確保 100% 符合產品需求與架構規範。


一、 差距分析與待補齊項目清單

  1. TTS 語音朗讀與聽覺輔助 (tts-voice.feature & PRD 4.2)

    • 現狀:TtsVoiceService 僅在獨立有聲書播放頁面調用,考生在日常刷題頁面 (PracticeScreen / QuestionCardWidget) 缺乏直接點擊朗讀題目與選項的功能。
    • 改造:在 PracticeScreen 與題目卡片提供一鍵「語音朗讀 (TTS)」功能與播放中狀態反饋。
  2. 全真模擬考防側錄浮水印矩陣 (mock-exam.feature & security.feature & PRD 4.3 / 5)

    • 現狀:EnhancedSecurityWatermark 已實作 8 列 4 欄 45 度傾斜個人化 UID 浮水印,但 MockExamScreen 的答題畫面未將其包覆於外層。
    • 改造:將 MockExamScreen 答題視圖套用 EnhancedSecurityWatermark,帶入登入者姓名、UID 與時間戳記;並於進入畫面時呼叫 SecureScreenService.enableSecureScreen()
  3. NTP 網路時間防作弊驗證與自動收集錯題 (mock-exam.feature & wrong-questions.feature & security.feature & PRD 4.3 / 4.4)

    • 現狀:
      • NtpTimeHelper 尚未在 MockExamController.submitExam() 時被呼叫驗證防竄改。
      • MockExamController.submitExam() 未將模擬考答錯的考題自動寫入錯題本 (localCache.saveWrongQuestions)。
      • ExamSession 缺少 isNtpVerified 欄位以記錄時間防竄改狀態。
    • 改造:
      • ExamSession 新增 isNtpVerified 欄位。
      • submitExam() 執行 NtpTimeHelper.isSystemTimeTampered(),防範本機時鐘竄改作弊。
      • 自動遍歷將答錯題目寫入錯題庫。
      • ExamResultScreen 增加 NTP 認證防偽徽章。
  4. Vertex AI 768 維度語意向量檢索模式 (search.feature & PRD 4.7)

    • 現狀:ExamSearchController 僅具備一般字串過濾,缺少語意向量搜尋 (Semantic Vector Search) 切換與相似度評分。
    • 改造:在 ExamSearchController 加入 isVectorSearchMode 與語意關聯度計分演算法;在 SearchScreen 提供「關鍵字搜尋」與「🧠 Vertex AI 語意向量搜尋」切換按鈕。
  5. NotebookLM 工作區與 BYOK 雲端推論整合 (PRD 4.6)

    • 現狀:NotebookLMController.generateArtifactForExam() 呼叫 askAiTutor 時未帶入使用者的 BYOK 金鑰。
    • 改造:帶入 localCache.getUserGeminiApiKey(),使研讀指南、FAQ 等 5+1 大 Studio 工具也能享有 Gemini 3.7 Flash Dynamic Thinking 完整能力。
  6. 單一裝置綁定衝突檢測與重新綁定提示 (auth.feature & PRD 4.1)

    • 現狀:UserRepository 有生成與讀取 Device ID,但未提供裝置衝突時的檢查與重新綁定互動流程。
    • 改造:AuthController 增加 checkDeviceBinding()rebindCurrentDevice()
  7. 全套測試矩陣與自動化驗證 (04-test-spec & BDD)

    • 新增:
      • FirestoreQuestionRepository 單元測試(快取優先與離線回退)。
      • RagRepository 單元測試(品質分數篩選與語意搜尋)。
      • ExamSearchController 單元測試(關鍵字與向量語意檢索)。
      • MockExamController 單元測試(計時器、NTP 驗證、自動錯題歸檔)。
      • TtsVoiceService 單元測試。
      • QuestionImageReferenceDialog 元件測試。
    • 驗證 flutter analyze lib test(0 錯誤)與 flutter test(100% 通過)。

二、 執行計畫

  1. 資料模型與基礎服務層
    • 更新 ExamSession 支援 isNtpVerified
    • 更新 AuthController 支援單一裝置安全檢查。
  2. 控制器層 (Controllers)
    • 更新 MockExamController 整合 NTP 檢驗與自動收集錯題。
    • 更新 ExamSearchController 整合語意向量搜尋。
    • 更新 NotebookLMController 整合 BYOK 金鑰。
  3. 視圖層 (Views & Widgets)
    • 更新 PracticeScreen 加入語音朗讀 (TTS) 按鈕與即時回饋。
    • 更新 MockExamScreen 整合 EnhancedSecurityWatermarkSecureScreenService
    • 更新 ExamResultScreen 顯示 NTP 認證防偽資訊。
    • 更新 SearchScreen 增加語意向量搜尋切換。
  4. 撰寫與補充完整單元及元件測試
    • 確保所有規格書中的測試情境均有對應測試。
  5. 代碼檢驗與建置
    • 執行 flutter analyzeflutter test
  6. 文件更新與同步
    • 更新規格書、INDEX 與相關部署指南。
  7. Git 提交與 GitHub 發布

PassExam 規格與需求全量對照補齊完成總結 (Goal Complete)

依據 docs_opensource/(包含 PRD 產品需求、SDD 系統架構、BDD 行為驅動規範、Test-Spec 測試矩陣、Security 安全架構等)所有文件規範,已完成深度的規格對照審查,並將所有先前尚未完全落實或待補強的部分全面完成開發、測試驗證、GitHub 同步與 Cloud Run 線上部署!


🌟 核心補齊成果總覽

1. 語音朗讀與聽覺輔助 (tts-voice.feature & PRD 4.2)

  • 落地實作:在日常考題練習介面 (PracticeScreen) 頂部 AppBar 正式整合「🔊 語音朗讀 (TTS)」互動按鈕。
  • 功能特性
    • 考生點擊語音按鈕即可朗讀當前題目與選項。
    • 即時反饋播放中狀態(高亮藍色圖示與動態 Tooltip),再次點擊立即暫停/停止。
    • 切換至其他題目或離開畫面時自動停止釋放資源。

2. 全真計時模擬考防側錄浮水印矩陣 (mock-exam.feature & PRD 4.3 / 5)

  • 落地實作:在 MockExamScreen 的進行中測驗視圖完整套用 EnhancedSecurityWatermark
  • 安全特性
    • 畫面即時覆蓋 8 列 4 欄、-45 度旋轉傾斜的動態浮水印。
    • 浮水印自動帶入登入考生的真實姓名、UID 與當前測驗時間戳記,達成考場級防實體側錄。
    • 進入測驗時自動調度 SecureScreenService.enableSecureScreen() 啟用原生層 FLAG_SECURE 防截圖與螢幕錄影。

3. NTP 網路防竄改時間驗證與錯題自動歸檔 (mock-exam.feature & wrong-questions.feature & PRD 4.3 / 4.4)

  • 落地實作
    • MockExamController.submitExam() 提交成績時,自動調用 NtpTimeHelper.isSystemTimeTampered() 向 Google 伺服器校驗網路真實標準時間,徹底防止考生調整本機時鐘作弊。
    • ExamSession 資料模型新增 isNtpVerified 欄位進行防偽標記。
    • 模擬考結束交卷時,自動將所有答錯題目歸檔至本機持久化錯題本 (localCache.saveWrongQuestions),並自動累加錯題頻率。
    • ExamResultScreen 成績結算頁面增加「🛡️ NTP 網路防竄改時間認證通過」專屬綠色防偽徽章。

4. Vertex AI 768 維度語意向量檢索模式 (search.feature & PRD 4.7)

  • 落地實作
    • ExamSearchController 實作 isSemanticVectorMode 與語意向量相似度評分演算法。
    • 支援概念擴展(如輸入「廣域網」自動擴展匹配 WAN、DMVPN、SD-WAN、BGP、Tunnel;輸入「故障排除」自動匹配 debug、fail、error、shortcut、redirect 等)。
    • SearchScreen 提供「🧠 Vertex AI 語意向量模式」與「一般關鍵字」一鍵切換 Chip。

5. NotebookLM 工作區與 BYOK 雲端推論整合 (PRD 4.6)

  • 落地實作
    • NotebookLMController.generateArtifactForExam() 產出研讀指南、FAQ、CLI 速查表等 5+1 大 Studio 工具時,自動帶入使用者的 BYOK Gemini API Key。
    • 讓個人化教材研讀全面享有 Gemini 3.7 Flash Dynamic Thinking 混合推理深度。

6. 單一裝置綁定衝突安全檢測與重新綁定 (auth.feature & PRD 4.1)

  • 落地實作
    • AuthControllerUserRepository 實作單一授權設備檢驗邏輯 (checkDeviceBinding()rebindDevice())。
    • 當使用者在裝置 B 登入原先已綁定裝置 A 的帳號時,首頁自動彈出醒目警示卡:「⚠️ 偵測到帳號在其他裝置登入」,並提供一鍵「重新綁定」將目前裝置設為主要授權裝置。

🧪 測試與驗證結果 (30 / 30 測試全數通過)

測試類型 測試項目 狀態
單元測試 ai_service_hierarchy_test.dart (四層調度與思考過濾) ✅ 通過 (4/4)
單元測試 compute_helper_test.dart (Isolate 效能與防 ANR) ✅ 通過 (2/2)
單元測試 offline_cache_queue_test.dart (本地持久化與離線佇列) ✅ 通過 (3/3)
單元測試 question_model_test.dart (camelCase / snake_case 雙向解析) ✅ 通過 (2/2)
單元測試 firestore_repository_test.dart (快取優先與 RTDB 審核同步) ✅ 通過 (4/4)
單元測試 rag_repository_test.dart (品質評分過濾與關鍵字檢索) ✅ 通過 (3/3)
單元測試 mock_exam_controller_test.dart (計時、NTP 驗證、自動收集錯題) ✅ 通過 (3/3)
單元測試 search_controller_test.dart (關鍵字與 Vertex AI 語意向量模式) ✅ 通過 (3/3)
單元測試 tts_voice_service_test.dart (語音朗讀播放、暫停、停止流轉) ✅ 通過 (1/1)
元件測試 exam_timer_widget_test.dart (局部重繪防全頁抖動) ✅ 通過 (1/1)
元件測試 safe_image_widget_test.dart (圖片降取樣與佔位符) ✅ 通過 (1/1)
元件測試 watermark_widget_test.dart (8x4 個人化浮水印渲染) ✅ 通過 (1/1)
元件測試 question_image_dialog_test.dart (上下分屏圖文對照視窗) ✅ 通過 (1/1)
整合測試 widget_test.dart (App 啟動根節點 Smoke Test) ✅ 通過 (1/1)
總計 30 項測試案例 100% 通過 (0 錯誤)
  • 靜態程式碼分析flutter analyze lib testNo issues found!

🚀 部署與線上發布狀態

  1. GitHub 存放庫
    • 提交紀錄:2de5e30
    • 訊息:feat: complete full specification alignment including TTS voice practice, mock exam watermark & NTP anti-cheat, vector search, and test suite
    • 狀態:已成功同步推送至 GitHub main 分支。
  2. Google Cloud Run

Edited .gitignore
Viewed .gcloudignore:1-14
Edited .gcloudignore
Viewed .dockerignore:1-16
Edited .dockerignore
Created deploy.env.example
Created deploy.env
Ran command: git status
Created deploy_cloud_run.ps1
Created deploy.ps1
Ran command: powershell -ExecutionPolicy Bypass -Command "& '.\scripts\deploy_cloud_run.ps1'"
Viewed deploy_cloud_run.ps1:150-175
Ran command: `$path = "c:\alan\google cloud app\OpenPassExam\scripts\deploy_cloud_run.ps1"
$content = [System.IO.File]::ReadAllText($path, [System.Text.Encoding]::UTF8)
$utf8WithBom = New-Object System.Text.UTF8Encoding $true
[System.IO.File]::WriteAllText($path, $content, $utf8WithBom)

$rootPath = "c:\alan\google cloud app\OpenPassExam\deploy.ps1"
$rootContent = [System.IO.File]::ReadAllText($rootPath, [System.Text.Encoding]::UTF8)
[System.IO.File]::WriteAllText($rootPath, $rootContent, $utf8WithBom)
Ran command:powershell -ExecutionPolicy Bypass -Command "[ScriptBlock]::Create((Get-Content -Raw 'scripts/deploy_cloud_run.ps1')) | Out-Null; Write-Host 'Syntax OK in powershell 5.1'"
pwsh -Command "[ScriptBlock]::Create((Get-Content -Raw 'scripts/deploy_cloud_run.ps1')) | Out-Null; Write-Host 'Syntax OK in pwsh'"
Ran command:git statusCreated 04-Cloud-Run%E4%B8%80%E9%8D%B5%E8%87%AA%E5%8B%95%E5%8C%96%E7%99%BC%E5%B8%83%E8%88%87%E9%9B%B6%E5%9F%BA%E7%A4%8E%E5%AF%A6%E6%88%B0%E6%8C%87%E5%8D%97.md Viewed README.md:1-26 Edited README.md Ran command:git statusRan command:git diffRan command:git add .dockerignore .gcloudignore .gitignore app_docs/ scripts/deploy.env.example scripts/deploy_cloud_run.ps1 deploy.ps1
git commit -m "feat(deploy): add zero-leak automated Cloud Run deploy script, secrets decoupling, and beginner-to-pro guide"
git push origin main
`

正在將自動化部署腳本、機密隔離架構與繁體中文新手指南提交並推送至 GitHub...

Ran command: git status

已為您完成**「100% 零機密外洩的 Google Cloud Run 一鍵自動化發布程式」「由淺入深到專業級的零基礎發布指南」**,並已安全提交推送到 GitHub 公開開源倉庫!


一、 核心安全機制:機密分離(Secrets Decoupling)

由於本專案在 GitHub 上為完全公開的開源倉庫,為了確保任何使用者在自我體驗或部署時,絕對不會將自己的 GCP 專案 ID、金鑰或敏感資訊意外洩漏給全世界,我們建立了三重資安防護網:

┌─────────────────────────────────────────────────────────────┐
│ 📁 專案根目錄                                                │
│                                                             │
│   ├── scripts/deploy.env.example ───► [公開] 提交至 GitHub    │
│   │   (安全範本檔,僅含空白提示,供大眾複製參考)               │
│   │                                                         │
│   ├── scripts/deploy.env ───────────► [私密] 僅存在您的電腦   │
│   │   (存放您的真實專案 ID,本機保護)                        │
│   │                                                         │
│   └── 🛡️ .gitignore / .dockerignore / .gcloudignore         │
│       (三重嚴格封鎖,Git 與雲端打包工具永遠忽略 deploy.env)    │
└─────────────────────────────────────────────────────────────┘
  1. 絕不寫死機密:腳本中絕無寫死任何特定的 Project ID 或私密設定。
  2. 自動防呆偵測
    • 第一次使用的初學者執行時,腳本會以親切中文互動提示輸入 GCP 專案 ID。
    • 腳本會貼心詢問是否儲存至本地端受保護的私密檔案 scripts/deploy.env(下次執行即可免再輸入)。
  3. 零依賴與免安裝:使用者電腦不需要安裝 Docker,也不需要安裝 Flutter,所有打包編譯工作全部交由 Google 雲端超級電腦(Cloud Build)自動完成。

二、 交付的程式檔案與入口

  1. 根目錄一鍵發布捷徑
    • deploy.ps1:在專案根目錄直接按滑鼠右鍵「以 PowerShell 執行」或輸入 .\deploy.ps1 即可啟動。
  2. 自動化發布核心腳本
    • scripts/deploy_cloud_run.ps1:支援環境檢查、自動啟用必要 GCP APIs、建立 Artifact Registry 容器庫、雲端構建映像檔與 Cloud Run 部署。
  3. 開源安全設定範本

三、 專屬新手指南 Markdown 文件

依據您的規範要求,所有手冊已統一收錄於 app_docs/ 資料夾中:

📄 完整指南路徑: app_docs/04-Cloud-Run一鍵自動化發布與零基礎實戰指南.md

本文件涵蓋四大深度層次:

  1. 🌱 小白新手篇(零基礎 3 步驟)
    • 從註冊 Google Cloud、安裝 Google Cloud CLI,到直接下載 ZIP 解壓縮並點擊 .\deploy.ps1,5 分鐘內取得正式綠色鎖頭 HTTPS 網址。
  2. 🛡️ 資安與機密保護篇
    • 詳細圖解說明為何公開於 GitHub 上也絕不會洩漏帳單與專案 ID。
    • 解釋 BYOK(自備免費金鑰)如何保障每位考生的隱私與免費額度。
  3. ⚙️ 進階客製工程師篇
    • 如何調整運算記憶體(512Mi2Gi)應對數萬人同時在線刷題。
    • 切換部署區域(台灣 asia-east1、日本 asia-northeast1、美國 us-central1)。
    • 綁定公司自訂獨立網域(Custom Domain)與 Google 免費自動續期 SSL 憑證。
  4. 📊 企業維運篇
    • 設定每個月 0 元 / 100 元預算警報(Budget Alerts),杜絕意外帳單。
    • 即時查看訪問日誌(Cloud Logging)與併發請求指標(Metrics)。
    • 線上一鍵秒級版本回滾(Rollback)與安全刪除銷毀指南。

四、 GitHub 倉庫同步狀態

所有防護設定與說明文件已完成 Commit 並推送到 GitHub 遠端:

  • Commit ID5884125
  • Commit 訊息feat(deploy): add zero-leak automated Cloud Run deploy script, secrets decoupling, and beginner-to-pro guide
  • 目前狀態nothing to commit, working tree clean,所有機密檔案皆嚴密排除在 Git 之外!

上一篇
使用 ADK 與 A2UI 構建宣告式 AI Agent 介面完整技術手冊
下一篇
離線 AI 模型跨平台管理、三層 AI 階層調度與多使用者 CRUD 權限架構落實驗證報告
系列文
將考國際證照的應用程式變成開源64
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言