Skip to content

matthiola0/Bitopro_Hackathon_web

Repository files navigation

BitoGuard — 智慧合規風險雷達

2026 去偽存真 AI 全民偵查黑客松(決賽) 命題單位:幣託科技 BitoPro

🎬 Live Demo 影片


產品簡介

BitoGuard 是一套專為虛擬資產交易平台打造的 AI 智慧風控系統,透過機器學習模型即時偵測可疑用戶行為,協助合規團隊快速辨識高風險帳戶、追蹤資金流向,並自動產出可解釋的風險診斷報告;同時支援在管理中心觸發模型重訓練(retrain)、追蹤訓練進度與版本回滾。


核心功能

1. 風險總覽儀表板

風險總覽儀表板

首頁一目了然掌握全平台風控狀態:

  • 用戶總數與風險等級分布(CRITICAL / HIGH / MEDIUM / LOW)
  • 模型效能指標(F1 Score、Precision、Recall、誤報率)
  • 即時高風險警示列表,點擊即可跳轉至詳細報告

2. 用戶風險查詢

用戶風險查詢

輸入用戶 ID 即可進行即時風險評估:

  • 批量或單筆查詢,秒級回應風險分數
  • 查詢結果直接顯示風險等級與分數,點擊即可跳轉至完整診斷報告
  • 支援一鍵匯出 CSV

3. AI 風險診斷報告

AI 風險診斷報告 AI 風險診斷報告

針對個別用戶產出完整的風險分析報告:

  • 風險評分與等級 — 量化的風險分數搭配直覺的等級標籤
  • SHAP 瀑布圖 — 視覺化呈現各特徵對風險分數的貢獻度,清楚說明「為什麼被標記」
  • 自然語言摘要 — AI 自動生成中文風險說明(例:「法幣進出比極端,疑似快速轉移資金」)
  • 行為時序圖 — 交易次數與金額的每日變化趨勢
  • 交易關聯圖譜 — 以互動式 D3.js 網絡圖呈現用戶與其他帳戶的資金往來關係,支援:
    • 🖱️ 拖曳節點 — 可自由拖拉圖中任意節點重新排列佈局,鬆手後自動回彈歸位
    • 🔍 縮放與平移 — 滑鼠滾輪縮放、按住拖動平移整張圖譜,方便查看大型關聯網絡
    • 💡 懸停顯示資訊 — 滑鼠移至節點顯示用戶風險等級、分數、官方/模型標記;移至邊線顯示轉帳金額、幣種、時間戳與關聯細節
    • 🔗 點擊跳轉報告 — 點擊任一用戶節點即可跳轉至該用戶的完整風險診斷報告頁面

4. 風險待審佇列

風險待審佇列

依風險分數排序,讓合規人員優先處理最高風險案件:

  • 依 CRITICAL → HIGH → MEDIUM → LOW 排序
  • 快速篩選與搜尋功能

5. 模型管理中心

模型管理中心

完整的模型生命週期管理介面:

  • 模型版本管理 — 檢視所有模型版本、狀態(PRODUCTION / STAGING / ARCHIVED)與效能指標
  • 一鍵重訓練 — 支援微調(Fine-tune)與全量重訓練,即時追蹤訓練進度
  • 模型漂移偵測 — 監控特徵分布變化(PSI / KS 檢定),主動建議是否需要重訓練
  • 版本回滾 — 發現新版模型效果不佳時,一鍵回退至上一版

6. 即時推播通知

透過 WebSocket 即時推送事件至前端:

  • 偵測到 CRITICAL / HIGH 風險用戶時自動彈出警示
  • 模型訓練進度即時更新
  • 儀表板數據自動刷新,無需手動重載

系統架構

  • 前端:React 19 + TypeScript + Ant Design + ECharts + D3.js
  • 後端:FastAPI + LightGBM + SHAP + NetworkX
  • 即時通訊:WebSocket 雙向推播
  • AI 報告:Amazon Bedrock (Claude Sonnet) 中文風險摘要

快速啟動

環境需求

  • Python 3.11+(推薦 Anaconda)
  • Node.js 18+
  • Docker Desktop(容器化部署)

方式一:Docker 啟動(推薦)

使用 Docker Compose 一鍵啟動後端:

cd backend
docker compose up --build -d

啟動後可在瀏覽器開啟 http://localhost:8000/docs 查看 API 文件。

方式二:本地直接啟動

# 啟動後端
cd backend
pip install -r requirements.txt
uvicorn app.main:app --host 0.0.0.0 --port 8000

啟動前端

cd frontend
npm install
npm run dev

在瀏覽器開啟 http://localhost:5173 即可進入 BitoGuard 儀表板。


Docker 部署架構

┌─────────────────────────────────────────────────────────┐
│  Docker Container (bitoguard-backend)                   │
│                                                         │
│  python:3.11-slim                                       │
│  ├── /app/app/          FastAPI 應用程式碼               │
│  ├── /app/models/       ML 模型檔案(內建於映像)         │
│  └── /app/data/         交易資料(volume mount)          │
│                                                         │
│  Port: 8000                                             │
│  Healthcheck: GET /health                               │
└─────────────────────────────────────────────────────────┘

環境變數

變數 預設值 說明
APP_ENV local 環境(local / staging / production
DATA_DIR ../data 交易資料目錄
MODEL_DIR models ML 模型目錄
LOG_LEVEL INFO 日誌等級
API_KEY_SECRET (空) API 金鑰(production 必填)
CORS_ORIGINS http://localhost:5173 允許的前端來源
AWS_REGION us-east-1 AWS 部署區域
S3_DATA_BUCKET (空) S3 資料 bucket
S3_MODEL_BUCKET (空) S3 模型 bucket

AWS 部署架構

graph TB
    User((使用者<br/>瀏覽器))

    subgraph AWS["AWS Cloud (us-west-2)"]

        subgraph CDN["內容分發"]
            CF["CloudFront<br/>Distribution"]
        end

        subgraph Frontend["前端託管"]
            S3F[("S3<br/>bitoguard-frontend<br/>React 靜態檔")]
        end

        subgraph LB["負載均衡"]
            ALB["ALB<br/>HTTP :80"]
        end

        subgraph Compute["運算"]
            ECS["ECS Fargate<br/>FastAPI :8000<br/>LightGBM · SHAP · NetworkX"]
        end

        subgraph Storage["資料儲存"]
            S3D[("S3<br/>bitoguard-data<br/>CSV 資料集")]
            S3M[("S3<br/>bitoguard-models<br/>模型 Artifacts")]
        end

        subgraph AI["AI 服務"]
            Bedrock["Amazon Bedrock<br/>Claude Sonnet<br/>風險報告生成 ≤1 RPS"]
        end

        subgraph Ops["監控"]
            CW["CloudWatch<br/>Logs & Alarms"]
        end

        ECR["ECR<br/>Container Registry"]
    end

    %% 使用者流量
    User -->|HTTPS 靜態頁面| CF
    User -->|"WebSocket (ws:// 直連)"| ALB

    %% CloudFront 路由
    CF -->|"/* default"| S3F
    CF -->|"/api/*"| ALB
    S3F -.->|OAC 授權| CF

    %% ALB → ECS
    ALB -->|":8000"| ECS

    %% ECS 依賴
    ECS -->|啟動時拉資料| S3D
    ECS -->|啟動時拉模型| S3M
    ECS -->|LLM 中文摘要| Bedrock
    ECS -->|日誌輸出| CW
    ECR -.->|Docker Image| ECS

    %% 樣式
    classDef userNode fill:#2196F3,color:#fff,stroke:none
    classDef cfNode fill:#8B5CF6,color:#fff,stroke:none
    classDef s3Node fill:#3F8624,color:#fff,stroke:none
    classDef computeNode fill:#FF9900,color:#fff,stroke:none
    classDef aiNode fill:#E74C3C,color:#fff,stroke:none
    classDef opsNode fill:#607D8B,color:#fff,stroke:none

    class User userNode
    class CF cfNode
    class S3F,S3D,S3M s3Node
    class ALB,ECS,ECR computeNode
    class Bedrock aiNode
    class CW opsNode
Loading

Security Groups

ALB SG ── Inbound :80/443 ← 0.0.0.0/0
ECS SG ── Inbound :8000   ← ALB SG only

架構要點

元件 說明
CloudFront CDN + 路由分流:靜態檔走 S3,API 走 ALB
S3 (Frontend) Block Public Access + OAC,僅允許 CloudFront 存取
ALB HTTP 負載均衡,同時處理 REST 與 WebSocket
ECS Fargate 無伺服器容器,啟動時從 S3 拉資料/模型
Bedrock LLM 風險報告,rate limit ≤ 1 RPS,失敗時 fallback 模板
CloudWatch Container stdout/stderr 日誌收集

模型重訓練

系統支援在前端模型管理頁面與後端 API 兩種方式觸發 retrain:

  • 前端 /models 可直接發起微調(Fine-tune)或全量重訓練
  • 後端提供 POST /api/v1/models/retrain 觸發訓練工作
  • 訓練進度可透過 GET /api/v1/models/jobs/{id} 與 WebSocket 即時追蹤
  • 新模型完成後可於版本列表切換狀態,必要時執行 rollback
  • 漂移偵測會主動提示是否需要重新訓練

頁面導覽

頁面 路徑 說明
風險總覽 / 全平台風控狀態總覽
用戶查詢 /search 輸入 ID 即時查詢風險
待審佇列 /queue 依風險排序的審核清單
風險報告 /report/:userId 個別用戶的完整診斷報告
模型管理 /models 模型版本、retrain、訓練進度、漂移監控
系統設定 /settings 風險閾值等參數調整

API 端點

功能 方法 路徑
健康檢查 GET /health
批量風險評分 POST /api/v1/predict
用戶風險報告 GET /api/v1/users/{id}/report
儀表板摘要 GET /api/v1/dashboard/summary
交易關聯圖譜 GET /api/v1/graph/{id}
觸發模型重訓練 POST /api/v1/models/retrain
訓練進度查詢 GET /api/v1/models/jobs/{id}
模型版本列表 GET /api/v1/models/versions
版本回滾 POST /api/v1/models/versions/{v}/rollback
漂移偵測狀態 GET /api/v1/models/drift
即時事件通道 WebSocket /ws

完整 API 文件請啟動後端後訪問 http://localhost:8000/docs(Swagger UI)。

文件連結

競賽與規範

系統設計 (SDD)

  • 主 SDD — 整體系統架構與規格
  • 後端 SDD — API、服務層、ML 管線規格
  • 前端 SDD — Dashboard UI 元件與狀態管理規格

開發紀錄


License

本專案的原始碼以 Apache License 2.0 授權釋出。

為避免授權範圍誤解,根目錄 NOTICE 另外說明哪些內容在 Apache-2.0 授權範圍內。除非個別檔案另有註明,下列內容不屬於本 repo 的開源原始碼授權範圍:

  • data/ 下的資料集
  • backend/models/ 下的模型產物、預測輸出與衍生檔案
  • docs/ 下的提案、報告、截圖與其他非程式碼素材
  • repository 根目錄中的競賽 PDF 與其他第三方材料

上述排除項目仍受其各自權利條款或權利人保留。

About

BitoGuard 是一套專為虛擬資產交易平台打造的 AI 智慧風控系統,透過機器學習模型即時偵測可疑用戶行為,協助合規團隊快速辨識高風險帳戶、追蹤資金流向,並自動產出可解釋的風險診斷報告。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors