Skip to content

exoplanet-spaceapps/backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AI 分析服務系統 (AI Analysis Service)

30核心 CPU 推論系統 - FastAPI + Next.js + PostgreSQL + ONNX Runtime
前端專案: exoplanet-spaceapps/frontend-test.git
CSV/DAT 檔案分析 - 完整的 TDD 開發

CI Pipeline


🚀 快速開始

一鍵部署前端 + 後端

# 部署前端專案(自動化腳本)
sudo ./scripts/deploy_frontend.sh

# 啟動後端服務
make up

# 訪問服務
# Frontend: https://your-domain.com
# API Docs: https://your-domain.com/api/docs
# Grafana:  https://monitoring.your-domain.com

📊 資料庫與資源配置

資料庫選型 ✅

資料庫 用途 配置
PostgreSQL 15 主資料庫(datasets, jobs, reports, audits) 16GB RAM, 10 連線池
Redis 7 快取 + 任務佇列 4GB RAM, 50 連線池
MinIO S3 相容物件儲存(CSV/DAT/PDF) 4GB RAM, 版本控制

完整資料庫策略: docs/DATABASE_STRATEGY.md

30核心 CPU 資源分配

Gunicorn Workers:      4 cores   (API 請求處理)
ONNX Runtime (intra):  24 cores  (AI 推論運算)
ONNX Runtime (inter):  2 cores   (算子並行)
PostgreSQL:            2 cores   (資料庫)
System + Monitor:      2 cores   (OS + 監控)

詳細資源分配: docs/FRONTEND_INTEGRATION_GUIDE.md


📁 專案結構

backend/
├── app/
│   ├── backend/              # FastAPI 後端
│   │   ├── src/
│   │   │   ├── api/          # API 路由
│   │   │   ├── db/           # 資料庫模型
│   │   │   ├── inference/    # ONNX Runtime
│   │   │   ├── uploads/      # 檔案上傳
│   │   │   └── observability/# 監控
│   │   └── tests/            # pytest 測試
│   ├── web/                  # Next.js 前端(已實作)
│   └── shared/               # 共享 schemas
├── deploy/
│   ├── docker-compose.dev.yml    # 開發環境
│   ├── nginx/                    # Nginx 配置
│   ├── postgres/                 # DB 初始化
│   └── monitoring/               # Prometheus + Grafana
├── docs/                     # 完整文件
│   ├── DATABASE_STRATEGY.md      # 資料庫策略 ⭐
│   ├── FRONTEND_INTEGRATION_GUIDE.md  # 前端整合 ⭐
│   └── DEPLOYMENT_SUMMARY.md     # 部署總結
└── scripts/
    └── deploy_frontend.sh    # 一鍵部署腳本 ⭐

🎯 核心功能

CSV/DAT 檔案上傳流程

sequenceDiagram
    Frontend->>API: 1. 請求預先簽名 URL
    API->>MinIO: 2. 生成 15 分鐘短效 URL
    MinIO-->>API: 3. 回傳簽名 URL
    API-->>Frontend: 4. 回傳 URL + checksum
    Frontend->>MinIO: 5. 直接上傳檔案(不經過 API)
    Frontend->>API: 6. 通知上傳完成
    API->>PostgreSQL: 7. 記錄 metadata
    API->>Redis: 8. 入列預處理任務
Loading

AI 推論流程

1. 選擇已上傳的 CSV/DAT 檔案
2. 配置超參數(threshold, max_candidates, temperature)
3. 提交推論作業 → Redis 佇列
4. ONNX Runtime 執行(24核心並行)
5. 生成 PDF 報告(含 manifest)
6. 通知前端完成

🔧 本地開發

環境要求

  • Python 3.11+
  • Node.js 20+
  • Docker & Docker Compose
  • PostgreSQL 15
  • Redis 7
  • MinIO (S3-compatible)

快速設定

# 1. 安裝依賴
make install

# 2. 設定環境變數
cp app/backend/.env.example app/backend/.env
cp app/web/.env.example app/web/.env.local

# 3. 啟動所有服務
make up

# 4. 執行測試
make test

# 5. 訪問服務
# API: http://localhost:8000/docs
# Frontend: http://localhost:3000

🧪 測試

測試覆蓋率

  • Backend: 80%+ (pytest)
  • Frontend: 40 個 E2E 測試 (Playwright)
  • Integration: k6 負載測試
# 後端單元測試
cd app/backend
poetry run pytest -v --cov=src

# 前端 E2E 測試
cd app/web
npm run test:e2e

# 負載測試
./scripts/load_test.sh

📈 監控與告警

Grafana 儀表板(已建立)

  1. API 儀表板: 請求率、錯誤率、P95/P99 延遲
  2. 系統儀表板: 30核心 CPU、記憶體、磁碟 I/O
  3. 推論儀表板: 吞吐量、批次大小、NUMA 平衡

關鍵告警(27 條規則)

  • API 錯誤率 >5%
  • CPU 使用率 >95%
  • 記憶體使用 >95%
  • 磁碟空間 <10%

啟動監控:

cd deploy/monitoring
docker-compose -f docker-compose.monitoring.yml up -d

# 訪問 Grafana: http://localhost:3001 (admin/admin)

🚦 部署檢查清單

前端部署

  • Clone frontend-test.git 至 /var/www/frontend-test
  • 設定 .env.production
  • npm run build
  • Nginx 配置指向 dist/ 目錄
  • 測試前端載入

後端部署

  • 啟動 PostgreSQL + Redis + MinIO
  • 執行資料庫遷移
  • 上傳 ONNX 模型
  • 啟動 FastAPI
  • 測試 API /health

整合測試

  • 前端連接 API 成功
  • 上傳 CSV 成功
  • 推論執行成功
  • 報告生成成功

📚 文件索引

文件 說明
DATABASE_STRATEGY.md 資料庫選型與資源分配 ⭐
FRONTEND_INTEGRATION_GUIDE.md 前端整合完整指南 ⭐
DEPLOYMENT_SUMMARY.md 部署總結與檢查清單
PRESIGN_API.md 上傳 API 規格
observability-implementation.md 監控實作

🔒 安全功能

  • ✅ TLS/HTTPS 強制加密
  • ✅ HSTS + 安全標頭
  • ✅ 檔案上傳白名單(CSV/DAT/JSON)
  • ✅ 預先簽名 URL(15分鐘短效)
  • ✅ SHA256 校驗碼驗證
  • ✅ 路徑遍歷防護
  • ✅ 審計日誌(所有操作)
  • ⏳ JWT/OIDC 認證(待整合)
  • ⏳ 速率限制(待配置)

📊 效能指標

預期吞吐量(30核心)

配置 吞吐量 P95 延遲
保守 ~50 req/s <500ms
平衡 ~80 req/s <800ms
激進 ~120 req/s <1200ms

CSV/DAT 處理時間

檔案大小 預處理 推論 總時間
1MB ~1s ~2s ~3s
10MB ~3s ~5s ~8s
100MB ~10s ~15s ~25s
1GB ~30s ~60s ~90s
5GB (max) ~120s ~300s ~420s

🤝 貢獻指南

  1. Fork 專案
  2. 創建 feature branch (git checkout -b feature/AmazingFeature)
  3. 執行測試 (make test)
  4. Commit (git commit -m 'Add AmazingFeature')
  5. Push (git push origin feature/AmazingFeature)
  6. 開啟 Pull Request

📄 授權

MIT License


🙏 致謝

  • NASA Space Apps Challenge - 專案靈感
  • ONNX Runtime - CPU 優化推論引擎
  • FastAPI - 現代 Python Web 框架
  • Next.js - React 生產級框架

專案狀態: ✅ 生產就緒
最後更新: 2025-10-05
維護者: AI Team

About

AI-powered exoplanet analysis service with FastAPI ML inference (Random Forest & Ensemble), React visualization, and Docker deployment. Supports CSV/DAT uploads with real-time predictions and 3D WebGL rendering.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors