BrianChuan
update name & Readmefile
777f9b8
|
Raw
History Blame Contribute Delete
3.82 kB
---
title: Digital Bodyguard
emoji: 🐢
colorFrom: indigo
colorTo: pink
sdk: docker
pinned: false
license: mit
short_description: Dynamic Contextual Security Network Driven by AI
---
# 🛡️ Digital-Bodyguard Frontend | 校園資安 AI 防護網
這是一個專為校園入口網站設計的「資安防護模擬系統」前端介面。透過模擬 **Taipei Tech Portal** 的登入行為,串接後端 AI 偵測引擎,實現即時行為判定與行為軌跡紀錄。
---
## 🚀 核心功能 (Features)
* **校園入口模擬**:完美復刻登入介面,包含「FEIK」驗證碼校驗與多角色(學生/管理員)儀表板切換。
* **環境變數模擬器**
* **IP 切換**:手動切換校內、宿舍或國外異常 IP。
* **時間旅行**:模擬過去或未來的操作時間點,測試 AI 對非辦公時間行為的判定。
* **Session ID 偽造**:模擬 Cookie 被劫持的情境。
* **AI 即時判定連動**
* 串接後端 **HDBSCAN** 聚類算法,對每一個點擊行為進行「正常/異常」判定。
* **攔截機制**:偵測到 SQL Injection 或惡意行為時,前端自動彈出警報並阻斷操作。
* **即時 Log 監控區**:與 Hugging Face Dataset 同步,即時顯示最新 20 筆行為紀錄。
* **資安專家解析**:整合 **Google Gemini API**,對異常事件進行深度自動化威脅分析。
---
## 🛠️ 技術細節 (Tech Stack)
| 類別 | 使用技術 | 備註 |
| :--- | :--- | :--- |
| **框架** | **Vue 3 (Composition API)** | 核心邏輯採 `setup` 語法,狀態管理更直覺。 |
| **建置工具** | **Vite 6** | 採用最新版 Vite,享受極速 HMR 編譯。 |
| **樣式** | **Tailwind CSS 4** | bleeding edge 版本,全 CSS 驅動配置。 |
| **API 通訊** | **@gradio/client** | 透過 WebSocket/SSE 串接 Python Gradio 後端。 |
| **圖表** | **Chart.js** | 實作基準管理雷達圖與事件趨勢圖。 |
| **部署** | **Docker + Nginx** | 解決 SPA 路由問題並優化靜態資源載入速度。 |
---
## 📝 實作筆記與挑戰 (Implementation Notes)
### 1. Gradio API 的「索引之戰」
**問題**:Gradio 的 `predict` 回傳資料是陣列格式,且包含大量 UI 更新物件。
**解法**:精確對位後端 `outputs` 順序。
* 登入接口:`[2]` 是錯誤訊息,`[4]` 是 Dataframe。
* 登出接口:`[6]` 是最新的 Dataframe。
* 使用 `parseGradioData` 函數將原始陣列轉換為 Vue 響應式物件。
### 2. Vite 6 的 Polyfill 戰爭
**問題**`@gradio/client` 引用了大量的 Node.js 原生模組(Buffer, Stream),導致瀏覽器編譯崩潰,噴出 `require$$0` 錯誤。
**解法**:在 `vite.config.ts` 中引入 `vite-plugin-node-polyfills`,並在 `commonjsOptions` 中明確 **exclude** Gradio 套件,阻止 Vite 過度轉換。
### 3. Nginx MIME Type 陷阱
**問題**:部署到 HF Space 後,樣式失效,出現 `Refused to apply style because its MIME type ('text/html')`
**解法**:修正 `nginx.conf`,顯式包含 `include /etc/nginx/mime.types;` 並將 CSS/JS 路由設定為 `try_files $uri =404;`,防止檔案缺失時回傳 `index.html`
### 4. 數據冷啟動同步
**實作方式**:在 `onMounted` 階段自動呼叫一次 `/logout`(傳入系統同步標籤),利用後端 `sync_from_hf()` 機制,確保使用者一進網頁就能看到最新的雲端歷史紀錄。
---
## ⚙️ 環境設定 (Deployment)
1. **Secrets 設定**:在 Hugging Face Space 設定 `VITE_GEMINI_API_KEY`
2. **Dockerfile 編譯**
```dockerfile
ARG VITE_GEMINI_API_KEY
ENV VITE_GEMINI_API_KEY=$VITE_GEMINI_API_KEY
RUN npm run build
```
3. **後端連線**:確保 `App.vue` 中的 `Client.connect` 指向正確的後端 Repo ID。