mcp-feedback-enhanced/docs/architecture/component-details.md
2025-06-11 03:25:08 +08:00

286 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 組件詳細說明
## 🏗️ 四層架構組件
MCP Feedback Enhanced 採用清晰的四層架構設計,每層負責特定的功能領域。
### 組件關係圖
```mermaid
graph TB
subgraph "第一層MCP 服務層"
SERVER[server.py<br/>MCP 服務器]
TOOL[interactive_feedback<br/>核心工具]
I18N[i18n.py<br/>國際化支援]
end
subgraph "第二層Web UI 管理層"
MANAGER[WebUIManager<br/>單例管理器]
SESSION[WebFeedbackSession<br/>會話模型]
RESULT[FeedbackResult<br/>結果模型]
end
subgraph "第三層Web 服務層"
MAIN[main.py<br/>FastAPI 應用]
ROUTES[main_routes.py<br/>路由處理]
WS[WebSocket<br/>實時通信]
end
subgraph "第四層:前端交互層"
HTML[feedback.html<br/>主頁面]
JS[app.js<br/>交互邏輯]
CSS[樣式文件]
end
subgraph "工具層"
BROWSER[browser.py<br/>瀏覽器控制]
NETWORK[network.py<br/>網路工具]
PORT[port_manager.py<br/>埠管理]
CLEANUP[session_cleanup_manager.py<br/>清理管理]
COMPRESS[compression_*.py<br/>壓縮工具]
end
SERVER --> MANAGER
TOOL --> SESSION
MANAGER --> MAIN
SESSION --> ROUTES
ROUTES --> HTML
HTML --> JS
BROWSER --> MANAGER
NETWORK --> MAIN
PORT --> MAIN
CLEANUP --> SESSION
COMPRESS --> ROUTES
```
## 🔧 第一層MCP 服務層
### server.py - MCP 服務器核心
```python
# 核心功能架構
class MCPServer:
def __init__(self):
self.app = FastMCP("mcp-feedback-enhanced")
self.setup_tools()
@self.app.tool()
async def interactive_feedback(
project_directory: str,
summary: str,
timeout: int = 600
) -> dict:
# 環境檢測與驗證
# Web UI 啟動
# 會話管理
# 回饋等待與處理
```
**主要職責**:
- MCP 協議實現和工具註冊
- 環境檢測 (Local/SSH/WSL)
- Web UI 生命週期管理
- 與 AI 助手的接口層
### interactive_feedback 工具
```mermaid
flowchart TD
START[工具調用] --> VALIDATE[參數驗證]
VALIDATE --> ENV[環境檢測]
ENV --> LAUNCH[啟動 Web UI]
LAUNCH --> SESSION[創建/更新會話]
SESSION --> WAIT[等待用戶回饋]
WAIT --> TIMEOUT{超時檢查}
TIMEOUT -->|未超時| FEEDBACK[接收回饋]
TIMEOUT -->|超時| ERROR[超時錯誤]
FEEDBACK --> RETURN[返回結果]
ERROR --> RETURN
```
### i18n.py - 國際化支援
- **多語言支援**: 繁體中文、簡體中文、英文
- **動態語言切換**: 基於用戶偏好自動選擇
- **模組化翻譯**: 分離的語言包管理
## 🎛️ 第二層Web UI 管理層
### WebUIManager - 核心管理器
```python
class WebUIManager:
def __init__(self):
self.current_session: Optional[WebFeedbackSession] = None
self.global_active_tabs: Dict[str, dict] = {}
self.app: Optional[FastAPI] = None
self.server_process: Optional[subprocess.Popen] = None
```
**關鍵特性**:
- **單例模式**: 確保全局唯一實例
- **會話生命週期**: 創建、更新、清理會話
- **智能瀏覽器開啟**: 避免重複開啟視窗
- **資源管理**: 自動清理和錯誤處理
### WebFeedbackSession - 會話模型
```mermaid
stateDiagram-v2
[*] --> WAITING: 會話創建
WAITING --> FEEDBACK_PROCESSING: 用戶提交
FEEDBACK_PROCESSING --> FEEDBACK_SUBMITTED: 處理完成
FEEDBACK_SUBMITTED --> WAITING: 新會話更新
FEEDBACK_SUBMITTED --> [*]: 會話結束
note right of WAITING
等待用戶輸入
顯示 AI 摘要
end note
note right of FEEDBACK_PROCESSING
處理回饋數據
圖片壓縮等
end note
```
**狀態管理**:
- `WAITING`: 等待用戶回饋
- `FEEDBACK_PROCESSING`: 處理回饋中
- `FEEDBACK_SUBMITTED`: 回饋已提交
## 🌐 第三層Web 服務層
### main.py - FastAPI 應用
```python
class FastAPIApp:
def __init__(self):
self.app = FastAPI()
self.setup_middleware()
self.setup_routes()
self.setup_websocket()
def setup_middleware(self):
# CORS 設定
# 靜態文件服務
# 錯誤處理中間件
```
**核心功能**:
- HTTP 路由處理
- WebSocket 連接管理
- 靜態資源服務
- 中間件配置
### main_routes.py - 路由處理
```mermaid
graph LR
subgraph "HTTP 路由"
GET[GET /]
FEEDBACK[GET /feedback]
STATIC[靜態資源]
end
subgraph "WebSocket 路由"
WS[/ws]
MSG[訊息處理]
BROADCAST[廣播機制]
end
GET --> FEEDBACK
FEEDBACK --> STATIC
WS --> MSG
MSG --> BROADCAST
```
**WebSocket 訊息類型**:
- `connection_established`: 連接建立
- `session_updated`: 會話更新
- `submit_feedback`: 提交回饋
- `feedback_received`: 回饋確認
- `status_update`: 狀態更新
## 🎨 第四層:前端交互層
### feedback.html - 主頁面
```html
<!-- 核心結構 -->
<div id="app">
<header><!-- 標題和狀態 --></header>
<main>
<section id="ai-summary"><!-- AI 摘要顯示 --></section>
<section id="feedback-form"><!-- 回饋表單 --></section>
<section id="image-upload"><!-- 圖片上傳 --></section>
</main>
<footer><!-- 狀態指示器 --></footer>
</div>
```
### app.js - 交互邏輯
```javascript
class FeedbackApp {
constructor() {
this.websocket = null;
this.currentSession = null;
this.feedbackState = 'WAITING';
}
// WebSocket 管理
initWebSocket() { /* ... */ }
handleWebSocketMessage(data) { /* ... */ }
// 用戶交互
submitFeedback() { /* ... */ }
handleImageUpload() { /* ... */ }
// UI 更新
updateSessionDisplay() { /* ... */ }
updateFeedbackState() { /* ... */ }
}
```
**前端特性**:
- **響應式設計**: 適配不同螢幕尺寸
- **實時狀態同步**: WebSocket 雙向通信
- **圖片上傳**: 拖拽上傳和自動壓縮
- **多語言支援**: 動態語言切換
## 🛠️ 工具層組件
### browser.py - 瀏覽器控制
```python
class BrowserManager:
@staticmethod
def open_browser(url: str, environment: str):
if environment == "local":
webbrowser.open(url)
elif environment == "ssh":
# SSH 隧道處理
elif environment == "wsl":
# WSL 特殊處理
```
### port_manager.py - 埠管理
- **動態埠分配**: 自動尋找可用埠
- **埠衝突檢測**: 避免埠佔用問題
- **埠範圍配置**: 可配置的埠範圍
### session_cleanup_manager.py - 清理管理
```mermaid
graph TD
TIMER[定時器啟動] --> CHECK[檢查會話狀態]
CHECK --> TIMEOUT{會話超時?}
TIMEOUT -->|是| CLEANUP[執行清理]
TIMEOUT -->|否| WAIT[等待下次檢查]
CLEANUP --> WEBSOCKET[關閉 WebSocket]
WEBSOCKET --> PROCESS[終止進程]
PROCESS --> MEMORY[釋放內存]
MEMORY --> WAIT
WAIT --> CHECK
```
**清理策略**:
- **超時清理**: 會話超時自動清理
- **資源回收**: WebSocket、進程、內存
- **優雅關閉**: 確保資源正確釋放
---
**下一步**: 查看 [交互流程文檔](./interaction-flows.md) 了解完整的交互機制