# 系統架構說明 (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 會話、壓縮並總結歷史對話,確保長期執行的效能與穩定度。