📝 更新架構文檔

This commit is contained in:
Minidoracat 2025-06-13 17:03:59 +08:00
parent 7bdb1a0346
commit e6bf5f74ec
5 changed files with 543 additions and 9 deletions

View File

@ -24,6 +24,10 @@ MCP Feedback Enhanced 採用**單一活躍會話 + 持久化 Web UI**的創新
- **持久化 Web UI**: 支援多次循環調用,無需重複開啟瀏覽器
- **實時雙向通信**: WebSocket 實現前後端狀態同步
- **智能資源管理**: 自動清理和會話生命週期管理
- **提示詞管理系統**: 常用提示詞的 CRUD 操作和快速選擇
- **自動提交功能**: 倒數計時器和自動回饋提交機制
- **會話管理功能**: 會話歷史追蹤和統計分析
- **多語言支援**: 繁體中文、簡體中文、英文動態切換
#### 技術棧
- **後端**: Python 3.11+, FastAPI, FastMCP
@ -49,8 +53,9 @@ MCP Feedback Enhanced 採用**單一活躍會話 + 持久化 Web UI**的創新
---
**版本**: 2.3.0
**最後更新**: 2024年12
**版本**: 2.4.0
**最後更新**: 2025年6
**維護者**: Minidoracat
**架構類型**: Web-Only 四層架構
**文檔狀態**: ✅ 已完成全面更新,完全移除 Electron 相關內容
**新功能**: 提示詞管理、自動提交、會話管理、語系切換優化
**文檔狀態**: ✅ 已完成全面更新,包含所有新功能的詳細說明

View File

@ -92,6 +92,68 @@ except EnvironmentError as e:
**響應**: `200 OK``404 Not Found`
#### GET /api/translations
獲取多語言翻譯資源。
**響應**: `200 OK`
```json
{
"zh-TW": {
"app": {
"title": "MCP Feedback Enhanced"
}
},
"en": {
"app": {
"title": "MCP Feedback Enhanced"
}
},
"zh-CN": {
"app": {
"title": "MCP Feedback Enhanced"
}
}
}
```
#### GET /api/session-status
獲取當前會話狀態。
**響應**: `200 OK`
```json
{
"has_session": true,
"status": "active",
"session_info": {
"project_directory": "./my-project",
"summary": "代碼審查完成",
"feedback_completed": false
}
}
```
#### GET /api/current-session
獲取當前會話詳細信息。
**響應**: `200 OK`
```json
{
"session_id": "550e8400-e29b-41d4-a716-446655440000",
"project_directory": "./my-project",
"summary": "代碼審查完成",
"feedback_completed": false,
"command_logs": "",
"images_count": 0
}
```
**錯誤響應**: `404 Not Found`
```json
{
"error": "沒有活躍會話"
}
```
### WebSocket API
#### 連接端點
@ -160,6 +222,71 @@ ws://localhost:{port}/ws
}
```
#### prompt_management
提示詞管理操作。
```json
{
"type": "prompt_management",
"data": {
"action": "add|update|delete|use",
"prompt": {
"id": "prompt_1_1703123456789",
"name": "代碼審查提示",
"content": "請檢查這段代碼的邏輯正確性和性能優化建議。",
"isAutoSubmit": false
}
}
}
```
**字段說明**:
- `action`: 操作類型add=新增, update=更新, delete=刪除, use=使用)
- `prompt.id`: 提示詞唯一標識符
- `prompt.name`: 提示詞名稱
- `prompt.content`: 提示詞內容
- `prompt.isAutoSubmit`: 是否為自動提交提示詞
#### auto_submit_control
自動提交功能控制。
```json
{
"type": "auto_submit_control",
"data": {
"action": "start|stop|update_settings",
"settings": {
"enabled": true,
"timeout": 30,
"promptId": "prompt_1_1703123456789"
}
}
}
```
**字段說明**:
- `action`: 控制動作start=啟動, stop=停止, update_settings=更新設定)
- `settings.enabled`: 是否啟用自動提交
- `settings.timeout`: 自動提交倒數時間(秒)
- `settings.promptId`: 自動提交使用的提示詞 ID
#### session_management
會話管理操作。
```json
{
"type": "session_management",
"data": {
"action": "get_history|get_stats|clear_history",
"sessionId": "550e8400-e29b-41d4-a716-446655440000"
}
}
```
**字段說明**:
- `action`: 管理動作get_history=獲取歷史, get_stats=獲取統計, clear_history=清除歷史)
- `sessionId`: 會話 ID可選
### 📥 服務器 → 客戶端訊息
#### connection_established
@ -218,6 +345,52 @@ WebSocket 連接建立確認。
}
```
#### auto_submit_status
自動提交狀態更新。
```json
{
"type": "auto_submit_status",
"data": {
"enabled": true,
"countdown": 25,
"promptId": "prompt_1_1703123456789",
"promptName": "代碼審查提示"
}
}
```
**字段說明**:
- `enabled`: 自動提交是否啟用
- `countdown`: 剩餘倒數時間(秒)
- `promptId`: 當前自動提交提示詞 ID
- `promptName`: 當前自動提交提示詞名稱
#### session_history
會話歷史數據。
```json
{
"type": "session_history",
"data": {
"sessions": [
{
"session_id": "session-1",
"summary": "代碼審查完成",
"status": "completed",
"created_at": "2024-12-13T10:30:00Z",
"feedback_length": 150
}
],
"stats": {
"total": 10,
"completed": 8,
"average_feedback_length": 120
}
}
}
```
#### error
錯誤訊息。
@ -289,6 +462,95 @@ def add_websocket(self, websocket: WebSocket) -> None
添加 WebSocket 連接到會話。
### PromptManager API
#### addPrompt()
```python
def addPrompt(self, name: str, content: str) -> dict
```
新增提示詞到管理器。
**參數**:
- `name`: 提示詞名稱(必須唯一)
- `content`: 提示詞內容
**返回值**: 新建的提示詞對象
#### updatePrompt()
```python
def updatePrompt(self, id: str, name: str, content: str) -> dict
```
更新現有提示詞。
#### deletePrompt()
```python
def deletePrompt(self, id: str) -> bool
```
刪除指定提示詞。
#### usePrompt()
```python
def usePrompt(self, id: str) -> dict
```
使用提示詞(更新最近使用記錄)。
#### getPromptsSortedByUsage()
```python
def getPromptsSortedByUsage(self) -> List[dict]
```
獲取按使用頻率排序的提示詞列表,自動提交提示詞優先顯示。
### SessionManager API
#### getCurrentSession()
```python
def getCurrentSession(self) -> dict
```
獲取當前活躍會話信息。
#### getSessionHistory()
```python
def getSessionHistory(self) -> List[dict]
```
獲取會話歷史記錄。
#### getSessionStats()
```python
def getSessionStats(self) -> dict
```
獲取會話統計信息。
### AutoSubmitManager API
#### start()
```python
def start(self, timeoutSeconds: int, promptId: str) -> None
```
啟動自動提交倒數計時器。
#### stop()
```python
def stop(self) -> None
```
停止自動提交倒數計時器。
#### updateSettings()
```python
def updateSettings(self, enabled: bool, timeout: int, promptId: str) -> None
```
更新自動提交設定。
## 📊 狀態碼和錯誤碼
### HTTP 狀態碼
@ -316,6 +578,23 @@ class SessionStatus:
ERROR = "ERROR"
```
### 提示詞狀態
```python
class PromptStatus:
ACTIVE = "active" # 活躍提示詞
AUTO_SUBMIT = "auto_submit" # 自動提交提示詞
ARCHIVED = "archived" # 已歸檔提示詞
```
### 自動提交狀態
```python
class AutoSubmitStatus:
DISABLED = "disabled" # 已停用
ENABLED = "enabled" # 已啟用
COUNTDOWN = "countdown" # 倒數計時中
COMPLETED = "completed" # 已完成提交
```
## 🔒 安全考慮
### 輸入驗證
@ -323,6 +602,9 @@ class SessionStatus:
- 圖片大小限制:單張最大 5MB
- 圖片數量限制:最多 10 張
- 支援的圖片格式PNG, JPEG, GIF, WebP
- 提示詞名稱長度限制:最大 100 字符
- 提示詞內容長度限制:最大 5,000 字符
- 提示詞數量限制:最多 50 個
### 資源保護
- WebSocket 連接數限制:每會話最多 5 個連接
@ -351,8 +633,9 @@ app.add_middleware(
---
**版本**: 2.3.0
**最後更新**: 2024年12
**版本**: 2.4.0
**最後更新**: 2025年6
**維護者**: Minidoracat
**API 版本**: v1
**協議支援**: MCP 2.0+, WebSocket, HTTP/1.1
**新功能**: 自動提交、提示詞管理、會話管理、語系切換優化

View File

@ -40,6 +40,8 @@ graph TB
JS[static/js/<br/>JavaScript 模組<br/>ES6+ 架構]
CSS[static/css/<br/>樣式系統<br/>響應式設計]
LOCALES[locales/<br/>翻譯文件<br/>JSON 格式]
PROMPT_MODULES[prompt/<br/>提示詞管理模組<br/>CRUD 操作]
SESSION_MODULES[session/<br/>會話管理模組<br/>歷史追蹤]
end
subgraph "工具層 - 核心工具"
@ -66,6 +68,12 @@ graph TB
JS -->|WebSocket| WS
WS -->|回傳數據| SESSION
%% 新功能模組
JS -->|載入模組| PROMPT_MODULES
JS -->|載入模組| SESSION_MODULES
PROMPT_MODULES -->|提示詞管理| WS
SESSION_MODULES -->|會話追蹤| WS
%% 支援服務
I18N -->|翻譯服務| ROUTES
I18N -->|語言包| LOCALES
@ -91,7 +99,7 @@ graph TB
class SERVER,TOOL,I18N,DEBUG layer1
class MANAGER,SESSION,MODELS layer2
class MAIN,ROUTES,WS layer3
class HTML,JS,CSS,LOCALES layer4
class HTML,JS,CSS,LOCALES,PROMPT_MODULES,SESSION_MODULES layer4
class ERROR,MEMORY,RESOURCE,BROWSER,PORT,COMPRESS,CLEANUP tools
```
@ -552,6 +560,72 @@ async def websocket_endpoint(websocket: WebSocket):
## 🎨 第四層:前端交互層
### 新功能模組架構
#### 提示詞管理模組群組 (prompt/)
**模組結構**
```mermaid
graph TB
subgraph "提示詞管理模組"
PM[prompt-manager.js<br/>核心管理器<br/>CRUD 操作]
PMO[prompt-modal.js<br/>彈窗組件<br/>編輯界面]
PSU[prompt-settings-ui.js<br/>設定頁面<br/>列表管理]
PIB[prompt-input-buttons.js<br/>輸入按鈕<br/>快速選擇]
end
PM -->|提供數據| PMO
PM -->|提供數據| PSU
PM -->|提供數據| PIB
PMO -->|編輯操作| PM
PSU -->|管理操作| PM
PIB -->|使用操作| PM
```
**核心功能**
- **PromptManager**: 提示詞的增刪改查、排序、自動提交標記
- **PromptModal**: 新增/編輯提示詞的彈窗界面
- **PromptSettingsUI**: 設定頁籤中的提示詞管理界面
- **PromptInputButtons**: 回饋輸入區的快速選擇按鈕
#### 會話管理模組群組 (session/)
**模組結構**
```mermaid
graph TB
subgraph "會話管理模組"
SM[session-manager.js<br/>會話控制器<br/>狀態管理]
SDM[session-data-manager.js<br/>數據管理器<br/>歷史記錄]
SU[session-utils.js<br/>工具函數<br/>狀態判斷]
end
SM -->|數據操作| SDM
SM -->|工具函數| SU
SDM -->|狀態回調| SM
```
**核心功能**
- **SessionManager**: 當前會話的狀態管理和控制
- **SessionDataManager**: 會話歷史記錄和統計數據管理
- **SessionUtils**: 會話狀態判斷和工具函數
#### 自動提交功能整合
**整合架構**
```mermaid
graph LR
subgraph "自動提交功能"
ASM[AutoSubmitManager<br/>倒數計時器<br/>狀態控制]
PM[PromptManager<br/>提示詞選擇<br/>自動標記]
SM[SettingsManager<br/>設定存儲<br/>配置管理]
end
ASM -->|選擇提示詞| PM
ASM -->|保存設定| SM
PM -->|提供提示詞| ASM
SM -->|載入設定| ASM
```
### templates/ - HTML 模板系統
**模板結構**

View File

@ -473,6 +473,127 @@ function handleSessionUpdated(data) {
}
```
## 🚀 新功能交互流程
### 自動提交功能流程
```mermaid
sequenceDiagram
participant User as 用戶
participant UI as 前端界面
participant ASM as AutoSubmitManager
participant PM as PromptManager
participant WS as WebSocket
Note over User,WS: 🔧 設定自動提交
User->>UI: 開啟設定頁籤
UI->>PM: 獲取提示詞列表
PM-->>UI: 返回提示詞(自動提交優先)
User->>UI: 選擇提示詞並設定倒數時間
UI->>ASM: updateSettings(enabled, timeout, promptId)
ASM->>WS: 保存設定到服務器
Note over User,WS: ⏰ 自動提交執行
WS->>UI: session_updatedAI 新調用)
UI->>ASM: checkAutoSubmitConditions()
ASM->>ASM: 檢查設定和狀態
alt 條件滿足
ASM->>ASM: start(timeout, promptId)
ASM->>UI: 顯示倒數計時器
loop 每秒更新
ASM->>UI: updateCountdownDisplay(remaining)
end
ASM->>PM: getPromptById(promptId)
PM-->>ASM: 返回提示詞內容
ASM->>UI: 填入提示詞到輸入框
ASM->>WS: submit_feedback自動提交
else 條件不滿足
ASM->>UI: 隱藏倒數計時器
end
```
### 提示詞管理流程
```mermaid
sequenceDiagram
participant User as 用戶
participant UI as 設定界面
participant PM as PromptManager
participant Modal as PromptModal
participant Storage as LocalStorage
Note over User,Storage: 📝 新增提示詞
User->>UI: 點擊「新增提示詞」
UI->>Modal: showAddModal()
Modal->>User: 顯示編輯表單
User->>Modal: 輸入名稱和內容
Modal->>PM: addPrompt(name, content)
PM->>PM: 驗證數據和唯一性
PM->>Storage: 保存到 localStorage
PM->>UI: 觸發 onPromptsChange 回調
UI->>UI: refreshPromptList()
Note over User,Storage: ✏️ 編輯提示詞
User->>UI: 點擊編輯按鈕
UI->>Modal: showEditModal(prompt)
Modal->>User: 顯示預填表單
User->>Modal: 修改內容
Modal->>PM: updatePrompt(id, name, content)
PM->>Storage: 更新 localStorage
PM->>UI: 觸發回調更新界面
Note over User,Storage: 🎯 使用提示詞
User->>UI: 在輸入區點擊提示詞按鈕
UI->>PM: getPromptsSortedByUsage()
PM-->>UI: 返回排序後列表
UI->>Modal: showSelectModal(prompts)
User->>Modal: 選擇提示詞
Modal->>PM: usePrompt(id)
PM->>Storage: 更新使用記錄
Modal->>UI: 填入提示詞內容
```
### 會話管理流程
```mermaid
sequenceDiagram
participant AI as AI 助手
participant Server as MCP 服務器
participant SM as SessionManager
participant SDM as SessionDataManager
participant UI as 前端界面
Note over AI,UI: 📊 會話生命週期管理
AI->>Server: interactive_feedback()
Server->>SM: createSession()
SM->>SDM: addCurrentSession()
SDM->>UI: 更新會話顯示
Note over AI,UI: 📝 用戶回饋處理
UI->>Server: submit_feedback
Server->>SM: processFeedback()
SM->>SDM: updateSessionStatus()
SDM->>SDM: 記錄回饋數據
SM->>AI: 返回回饋結果
Note over AI,UI: 📚 會話歷史管理
SM->>SDM: addSessionToHistory()
SDM->>SDM: 檢查完成狀態
alt 會話已完成
SDM->>SDM: 加入歷史記錄
SDM->>SDM: updateStats()
SDM->>UI: 觸發 onHistoryChange
else 會話未完成
SDM->>SDM: 跳過歷史記錄
end
Note over AI,UI: 🔍 歷史查詢
UI->>SDM: getSessionHistory()
SDM-->>UI: 返回歷史列表
UI->>SDM: getSessionStats()
SDM-->>UI: 返回統計數據
```
## 📊 狀態同步機制
### WebSocket 訊息類型
@ -484,12 +605,17 @@ graph LR
SU[session_updated<br/>會話更新]
FR[feedback_received<br/>回饋確認]
ST[status_update<br/>狀態更新]
ASS[auto_submit_status<br/>自動提交狀態]
SH[session_history<br/>會話歷史]
end
subgraph "客戶端 → 服務器"
SF[submit_feedback<br/>提交回饋]
HB[heartbeat<br/>心跳檢測]
LS[language_switch<br/>語言切換]
PM[prompt_management<br/>提示詞管理]
ASC[auto_submit_control<br/>自動提交控制]
SM[session_management<br/>會話管理]
end
```
@ -498,15 +624,34 @@ graph LR
```mermaid
stateDiagram-v2
[*] --> WAITING: 會話創建/更新
WAITING --> FEEDBACK_PROCESSING: 用戶提交回饋
WAITING --> AUTO_SUBMIT_READY: 自動提交條件滿足
AUTO_SUBMIT_READY --> AUTO_SUBMIT_COUNTDOWN: 啟動倒數計時
AUTO_SUBMIT_COUNTDOWN --> FEEDBACK_PROCESSING: 自動提交執行
WAITING --> FEEDBACK_PROCESSING: 用戶手動提交回饋
FEEDBACK_PROCESSING --> FEEDBACK_SUBMITTED: 處理完成
FEEDBACK_SUBMITTED --> WAITING: 新會話更新
FEEDBACK_SUBMITTED --> [*]: 會話結束
AUTO_SUBMIT_COUNTDOWN --> WAITING: 用戶取消自動提交
WAITING --> ERROR: 連接錯誤
FEEDBACK_PROCESSING --> ERROR: 處理錯誤
AUTO_SUBMIT_COUNTDOWN --> ERROR: 自動提交錯誤
ERROR --> WAITING: 錯誤恢復
ERROR --> [*]: 致命錯誤
note right of AUTO_SUBMIT_READY
檢查自動提交設定:
- 功能已啟用
- 已選擇提示詞
- 當前狀態為等待回饋
end note
note right of AUTO_SUBMIT_COUNTDOWN
倒數計時狀態:
- 顯示剩餘時間
- 允許用戶取消
- 時間到自動提交
end note
```
## 🛡️ 錯誤處理和恢復

View File

@ -65,6 +65,9 @@ graph TB
HTML[HTML 模板<br/>feedback.html/index.html]
JS[JavaScript 模組<br/>app.js + 功能模組]
CSS[樣式系統<br/>響應式設計]
PROMPT[提示詞管理<br/>PromptManager + UI 組件]
SESSION_MGR[會話管理<br/>SessionManager + 歷史追蹤]
AUTO_SUBMIT[自動提交<br/>AutoSubmitManager + 倒數計時]
end
subgraph "工具層"
@ -98,6 +101,14 @@ graph TB
WS -->|HTTP/WebSocket| BROWSER_UI
BROWSER_UI --> USER
%% 新功能模組連接
JS --> PROMPT
JS --> SESSION_MGR
JS --> AUTO_SUBMIT
PROMPT --> WS
SESSION_MGR --> WS
AUTO_SUBMIT --> WS
I18N --> ROUTES
DEBUG --> SERVER
UTILS --> MANAGER
@ -154,6 +165,9 @@ graph TB
- 響應式 HTML/CSS 設計
- 實時 WebSocket 通信
- 豐富的用戶交互功能
- **提示詞管理系統**:常用提示詞的 CRUD 操作和快速選擇
- **會話管理功能**:會話歷史追蹤和統計分析
- **自動提交機制**:倒數計時器和自動回饋提交
### 3. 單一活躍會話模式
```mermaid
@ -281,6 +295,18 @@ auto-refresh-manager → app
- 設定管理 (settings-manager.js)
- UI 控制 (ui-manager.js)
- 自動刷新 (auto-refresh-manager.js)
- **提示詞管理模組群組**
- prompt-manager.js (核心管理器)
- prompt-modal.js (編輯彈窗)
- prompt-settings-ui.js (設定界面)
- prompt-input-buttons.js (快速選擇按鈕)
- **會話管理模組群組**
- session-manager.js (會話控制器)
- session-data-manager.js (數據管理器)
- session-utils.js (工具函數)
- **自動提交功能**
- 整合在 app.js 中的 AutoSubmitManager
- 與提示詞管理和設定管理的深度整合
## 📊 性能特性與優化
@ -436,7 +462,8 @@ graph LR
---
**版本**: 2.3.0
**最後更新**: 2024年12
**版本**: 2.4.0
**最後更新**: 2025年6
**維護者**: Minidoracat
**架構類型**: Web-Only 四層架構
**新功能**: 提示詞管理、自動提交、會話管理、語系切換優化