Bloom_Ware / docs /architecture.md
XiaoBai1221's picture
docs: add architecture and features documentation and update requirements and README
c7b9514

系統架構說明 (System Architecture)

Bloom Ware 「小花」專案採用現代化的前後端分離架構,結合多項領先的 AI 技術與穩定可擴展的後端框架。

1. 後端架構 (Backend - FastAPI)

後端採用 Python 的 FastAPI 框架,提供非同步、高效能的 API 服務與 WebSocket 長連接管理。

  • app.py: 應用的進入點。負責配置 Lifespan(啟動/關閉事件)、Middleware(如 CORS, CSP)、定義 WebSocket 的連線(/ws),並掛載靜態前端資源。
  • core/ (核心邏輯):
    • 資料庫 (database/): 與 Firebase Firestore 進行連線,處理使用者資料、對話紀錄與記憶的 CRUD 操作。
    • 驗證 (auth.py): 處理 JWT Token 生成與解析,並整合 Google OAuth 登入機制。
    • Pipeline (pipeline.py): 負責串接使用者的輸入到大語言模型(LLM)的資料流。
    • 記憶體系統 (memory_system.py): 管理對話上下文,提供 AI 摘要。
  • features/services/ (業務與 AI 服務):
    • 封裝了與 OpenAI 溝通的 ai_service.py
    • voice_binding.py: 負責聲紋註冊狀態機管理。
    • MCP (Model Context Protocol) 工具集:整合天氣、交通 (TDX)、位置查詢等外部 API。
  • websocket/:
    • manager.py: 管理所有連線的使用者會話,處理訊息派發、連線逾時清理等。

2. 前端架構 (Frontend)

本系統將前端拆分為「登入驗證層」與「沉浸式互動層」。

  • 登入介面 (bloom-ware-login/out):
    • 基於 Next.js 與 React 構建,編譯為靜態資源後由 FastAPI 掛載於 /login 路徑。
    • 提供 Google 登入、一般信箱登入,以及跳轉至語音註冊的入口。
  • 主互動介面 (static/frontend/):
    • 專注於 沉浸式語音體驗 的純靜態應用(HTML/CSS/JS)。
    • 以「小花」的視覺形象(如動態花朵動畫)作為介面核心。
    • 透過 WebRTC/MediaRecorder 擷取音訊,透過 WebSocket 傳送給後端,並將後端回傳的音訊進行播放,且畫面會隨情緒狀態與音量產生動態回饋。

3. 基礎設施與部署 (Infrastructure)

  • Docker 化: 提供完整的 Dockerfile,確保在各種環境下執行的一致性。
  • Hugging Face Space: 系統原生設計為可直接部署於 Hugging Face Space 上,支援無伺服器架構的容器化執行。
  • 排程與背景任務:
    • 啟動時即開啟 asyncio 背景任務,定期清理過期的 WebSocket 會話、壓縮並總結歷史對話,確保長期執行的效能與穩定度。