📝 架構文檔更新

This commit is contained in:
Minidoracat 2025-06-14 20:10:27 +08:00
parent edee06b177
commit f2ad48c3a5
6 changed files with 1002 additions and 61 deletions

View File

@ -26,13 +26,16 @@ MCP Feedback Enhanced 採用**單一活躍會話 + 持久化 Web UI**的創新
- **智能資源管理**: 自動清理和會話生命週期管理
- **提示詞管理系統**: 常用提示詞的 CRUD 操作和快速選擇
- **自動提交功能**: 倒數計時器和自動回饋提交機制
- **會話管理功能**: 會話歷史追蹤和統計分析
- **會話管理功能**: 會話歷史追蹤和統計分析v2.4.3 重構增強)
- **音效通知系統**: 智能音效提醒和自訂音效管理v2.4.3 新增)
- **智能記憶功能**: 輸入框高度記憶和一鍵複製v2.4.3 新增)
- **多語言支援**: 繁體中文、簡體中文、英文動態切換
#### 技術棧
- **後端**: Python 3.11+, FastAPI, FastMCP
- **前端**: HTML5, JavaScript ES6+, WebSocket
- **前端**: HTML5, JavaScript ES6+, WebSocket, Web Audio APIv2.4.3
- **通信**: WebSocket, HTTP REST API
- **存儲**: localStorage會話歷史、音效文件、設定記憶
- **部署**: uvicorn, 跨平台支援
### 🎯 快速導航
@ -50,12 +53,38 @@ MCP Feedback Enhanced 採用**單一活躍會話 + 持久化 Web UI**的創新
- 交互流程圖
- 會話生命週期圖
- 部署拓撲圖
- **音效通知系統架構圖**v2.4.3 新增)
- **會話管理重構流程圖**v2.4.3 新增)
- **智能記憶功能架構圖**v2.4.3 新增)
### 🆕 v2.4.3 版本亮點
#### 🔊 音效通知系統
- **內建音效**: 經典提示音、通知鈴聲、輕柔鐘聲
- **自訂音效**: 支援 MP3、WAV、OGG 格式上傳
- **智能播放**: 會話更新時自動播放通知音效
- **音量控制**: 0-100% 可調節音量
- **瀏覽器相容**: 處理自動播放政策限制
#### 📋 會話管理重構
- **頁籤化設計**: 從側邊欄遷移到獨立頁籤,解決瀏覽器相容性問題
- **本地歷史存儲**: 支援 72 小時可配置保存期限
- **隱私控制**: 三級用戶訊息記錄設定(完整/基本/停用)
- **數據管理**: 匯出和清理功能
- **詳情查看**: 專門的會話詳情彈窗
#### 🧠 智能記憶功能
- **輸入框高度記憶**: 自動保存和恢復輸入框高度
- **一鍵複製**: 專案路徑和會話ID點擊複製
- **設定持久化**: 用戶偏好自動保存
- **國際化支援**: 複製提示支援多語言
---
**版本**: 2.4.0
**最後更新**: 2025年6月
**版本**: 2.4.3
**最後更新**: 2025年6月14日
**維護者**: Minidoracat
**架構類型**: Web-Only 四層架構
**新功能**: 提示詞管理、自動提交、會話管理、語系切換優化
**文檔狀態**: ✅ 已完成全面更新,包含所有新功能的詳細說明
**v2.4.3 新功能**: 音效通知系統、會話管理重構、智能記憶功能、一鍵複製
**歷史功能**: 提示詞管理、自動提交、會話管理、語系切換優化
**文檔狀態**: ✅ 已完成 v2.4.3 全面更新,包含所有新功能的詳細說明和架構分析

View File

@ -270,22 +270,81 @@ ws://localhost:{port}/ws
- `settings.timeout`: 自動提交倒數時間(秒)
- `settings.promptId`: 自動提交使用的提示詞 ID
#### session_management
#### session_managementv2.4.3 重構增強)
會話管理操作。
```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|export_history|view_details",
"sessionId": "550e8400-e29b-41d4-a716-446655440000",
"options": {
"retentionHours": 72,
"privacyLevel": "full",
"includeUserMessages": true
}
}
}
```
**字段說明**:
- `action`: 管理動作get_history=獲取歷史, get_stats=獲取統計, clear_history=清除歷史)
- `action`: 管理動作get_history=獲取歷史, get_stats=獲取統計, clear_history=清除歷史, export_history=匯出歷史, view_details=查看詳情
- `sessionId`: 會話 ID可選
- `options.retentionHours`: 歷史保存時間(小時)
- `options.privacyLevel`: 隱私等級full=完整, basic=基本, disabled=停用)
- `options.includeUserMessages`: 是否包含用戶訊息記錄
#### audio_managementv2.4.3 新增)
音效管理操作。
```json
{
"type": "audio_management",
"data": {
"action": "update_settings|test_audio|upload_custom|delete_custom",
"settings": {
"enabled": true,
"volume": 75,
"selectedAudioId": "notification-ding"
},
"customAudio": {
"id": "custom_1_1703123456789",
"name": "自訂提示音",
"data": "data:audio/mp3;base64,//uQx...",
"mimeType": "audio/mp3"
}
}
}
```
**字段說明**:
- `action`: 操作類型update_settings=更新設定, test_audio=測試播放, upload_custom=上傳自訂音效, delete_custom=刪除自訂音效)
- `settings.enabled`: 是否啟用音效通知
- `settings.volume`: 音量0-100
- `settings.selectedAudioId`: 選中的音效 ID
- `customAudio`: 自訂音效數據
#### height_managementv2.4.3 新增)
輸入框高度管理。
```json
{
"type": "height_management",
"data": {
"action": "save_height|load_height",
"elementId": "combinedFeedbackText",
"height": 200,
"settingKey": "combinedFeedbackTextHeight"
}
}
```
**字段說明**:
- `action`: 操作類型save_height=保存高度, load_height=載入高度)
- `elementId`: 元素 ID
- `height`: 高度值(像素)
- `settingKey`: 設定鍵名
### 📥 服務器 → 客戶端訊息
@ -366,7 +425,7 @@ WebSocket 連接建立確認。
- `promptId`: 當前自動提交提示詞 ID
- `promptName`: 當前自動提交提示詞名稱
#### session_history
#### session_historyv2.4.3 增強)
會話歷史數據。
```json
@ -379,18 +438,99 @@ WebSocket 連接建立確認。
"summary": "代碼審查完成",
"status": "completed",
"created_at": "2024-12-13T10:30:00Z",
"feedback_length": 150
"completed_at": "2024-12-13T10:35:00Z",
"feedback_length": 150,
"user_messages": [
{
"timestamp": "2024-12-13T10:32:00Z",
"content": "代碼看起來不錯",
"type": "text",
"submission_method": "manual"
}
],
"project_directory": "./my-project"
}
],
"stats": {
"total": 10,
"completed": 8,
"average_feedback_length": 120
"average_feedback_length": 120,
"today_count": 3,
"average_duration": 300
},
"retention_info": {
"retention_hours": 72,
"oldest_session": "2024-12-11T10:30:00Z",
"cleanup_count": 2
}
}
}
```
#### audio_notificationv2.4.3 新增)
音效通知觸發。
```json
{
"type": "audio_notification",
"data": {
"trigger": "session_updated",
"audioId": "notification-ding",
"volume": 75,
"timestamp": "2024-12-13T10:30:00Z"
}
}
```
**字段說明**:
- `trigger`: 觸發事件session_updated=會話更新, feedback_received=回饋接收)
- `audioId`: 播放的音效 ID
- `volume`: 播放音量
- `timestamp`: 觸發時間
#### audio_settings_updatev2.4.3 新增)
音效設定更新通知。
```json
{
"type": "audio_settings_update",
"data": {
"settings": {
"enabled": true,
"volume": 75,
"selectedAudioId": "soft-chime"
},
"availableAudios": [
{
"id": "default-beep",
"name": "經典提示音",
"isDefault": true
},
{
"id": "custom_1",
"name": "自訂音效1",
"isDefault": false
}
]
}
}
```
#### height_settings_updatev2.4.3 新增)
高度設定更新通知。
```json
{
"type": "height_settings_update",
"data": {
"elementId": "combinedFeedbackText",
"height": 200,
"saved": true,
"timestamp": "2024-12-13T10:30:00Z"
}
}
```
#### error
錯誤訊息。
@ -505,7 +645,7 @@ def getPromptsSortedByUsage(self) -> List[dict]
獲取按使用頻率排序的提示詞列表,自動提交提示詞優先顯示。
### SessionManager API
### SessionManager APIv2.4.3 重構增強)
#### getCurrentSession()
```python
@ -516,17 +656,108 @@ def getCurrentSession(self) -> dict
#### getSessionHistory()
```python
def getSessionHistory(self) -> List[dict]
def getSessionHistory(self, retentionHours: int = 72) -> List[dict]
```
獲取會話歷史記錄。
獲取會話歷史記錄,支援保存期限過濾
#### getSessionStats()
```python
def getSessionStats(self) -> dict
```
獲取會話統計信息。
獲取會話統計信息,包含今日統計和平均時長。
#### exportSessionHistory()
```python
def exportSessionHistory(self, format: str = "json") -> str
```
匯出會話歷史數據。
**參數**:
- `format`: 匯出格式json, csv
#### cleanupExpiredSessions()
```python
def cleanupExpiredSessions(self, retentionHours: int = 72) -> int
```
清理過期會話記錄。
**返回值**: 清理的會話數量
### AudioManager APIv2.4.3 新增)
#### playNotification()
```python
def playNotification(self) -> None
```
播放通知音效。
#### updateSettings()
```python
def updateSettings(self, enabled: bool, volume: int, selectedAudioId: str) -> None
```
更新音效設定。
#### addCustomAudio()
```python
def addCustomAudio(self, name: str, audioData: str, mimeType: str) -> dict
```
新增自訂音效。
**參數**:
- `name`: 音效名稱
- `audioData`: Base64 編碼的音效數據
- `mimeType`: MIME 類型audio/mp3, audio/wav, audio/ogg
#### deleteCustomAudio()
```python
def deleteCustomAudio(self, audioId: str) -> bool
```
刪除自訂音效。
#### getAllAudios()
```python
def getAllAudios(self) -> List[dict]
```
獲取所有可用音效(內建 + 自訂)。
### TextareaHeightManager APIv2.4.3 新增)
#### registerTextarea()
```python
def registerTextarea(self, elementId: str, settingKey: str) -> bool
```
註冊 textarea 元素進行高度管理。
#### saveHeight()
```python
def saveHeight(self, elementId: str, height: int) -> None
```
保存 textarea 高度到設定。
#### loadHeight()
```python
def loadHeight(self, elementId: str) -> int
```
從設定載入 textarea 高度。
#### unregisterTextarea()
```python
def unregisterTextarea(self, elementId: str) -> None
```
取消註冊 textarea 元素。
### AutoSubmitManager API
@ -595,6 +826,32 @@ class AutoSubmitStatus:
COMPLETED = "completed" # 已完成提交
```
### 音效通知狀態v2.4.3 新增)
```python
class AudioNotificationStatus:
DISABLED = "disabled" # 已停用
ENABLED = "enabled" # 已啟用
PLAYING = "playing" # 播放中
ERROR = "error" # 播放錯誤
```
### 會話歷史狀態v2.4.3 新增)
```python
class SessionHistoryStatus:
ACTIVE = "active" # 活躍會話
COMPLETED = "completed" # 已完成會話
EXPIRED = "expired" # 已過期會話
ARCHIVED = "archived" # 已歸檔會話
```
### 隱私等級v2.4.3 新增)
```python
class PrivacyLevel:
FULL = "full" # 完整記錄
BASIC = "basic" # 基本記錄
DISABLED = "disabled" # 停用記錄
```
## 🔒 安全考慮
### 輸入驗證
@ -605,6 +862,15 @@ class AutoSubmitStatus:
- 提示詞名稱長度限制:最大 100 字符
- 提示詞內容長度限制:最大 5,000 字符
- 提示詞數量限制:最多 50 個
- **音效文件限制v2.4.3 新增)**
- 支援格式MP3, WAV, OGG
- 單個文件最大2MB
- 自訂音效數量:最多 20 個
- 音效名稱長度:最大 50 字符
- **會話歷史限制v2.4.3 新增)**
- 預設保存期限72 小時
- 最大保存期限168 小時7天
- 單個會話最大用戶訊息數100 條
### 資源保護
- WebSocket 連接數限制:每會話最多 5 個連接
@ -633,9 +899,10 @@ app.add_middleware(
---
**版本**: 2.4.0
**最後更新**: 2025年6月
**版本**: 2.4.3
**最後更新**: 2025年6月14日
**維護者**: Minidoracat
**API 版本**: v1
**協議支援**: MCP 2.0+, WebSocket, HTTP/1.1
**新功能**: 自動提交、提示詞管理、會話管理、語系切換優化
**協議支援**: MCP 2.0+, WebSocket, HTTP/1.1, Web Audio API
**v2.4.3 新功能**: 音效通知系統、會話管理重構、智能記憶功能、一鍵複製
**歷史功能**: 自動提交、提示詞管理、會話管理、語系切換優化

View File

@ -588,26 +588,106 @@ graph TB
- **PromptSettingsUI**: 設定頁籤中的提示詞管理界面
- **PromptInputButtons**: 回饋輸入區的快速選擇按鈕
#### 會話管理模組群組 (session/)
#### 會話管理模組群組 (session/) - v2.4.3 重構增強
**模組結構**
```mermaid
graph TB
subgraph "會話管理模組"
subgraph "會話管理模組v2.4.3 重構)"
SM[session-manager.js<br/>會話控制器<br/>狀態管理]
SDM[session-data-manager.js<br/>數據管理器<br/>歷史記錄]
SU[session-utils.js<br/>工具函數<br/>狀態判斷]
SDM[session-data-manager.js<br/>數據管理器<br/>本地存儲增強]
SUR[session-ui-renderer.js<br/>UI 渲染器<br/>頁籤化設計]
SDM_MODAL[session-details-modal.js<br/>詳情彈窗<br/>會話詳細資訊]
end
SM -->|數據操作| SDM
SM -->|工具函數| SU
SM -->|UI 渲染| SUR
SM -->|詳情顯示| SDM_MODAL
SDM -->|狀態回調| SM
SUR -->|用戶操作| SM
SDM_MODAL -->|查看操作| SM
```
**v2.4.3 重構亮點**
- **從側邊欄遷移到頁籤**: 解決瀏覽器相容性問題
- **本地歷史存儲**: 支援 72 小時可配置保存期限
- **隱私控制**: 三級用戶訊息記錄設定(完整/基本/停用)
- **數據管理**: 匯出和清理功能
- **UI 重新設計**: 專門的渲染器和詳情彈窗
**核心功能**
- **SessionManager**: 當前會話的狀態管理和控制
- **SessionDataManager**: 會話歷史記錄和統計數據管理
- **SessionUtils**: 會話狀態判斷和工具函數
- **SessionDataManager**: 會話歷史記錄、統計數據和本地存儲管理
- **SessionUIRenderer**: 專門的 UI 渲染器,負責會話列表和狀態顯示
- **SessionDetailsModal**: 會話詳情彈窗,提供完整的會話資訊查看
#### 音效通知模組群組 (audio/) - v2.4.3 新增
**模組結構**
```mermaid
graph TB
subgraph "音效通知系統v2.4.3 新增)"
AM[audio-manager.js<br/>音效管理器<br/>播放控制]
ASU[audio-settings-ui.js<br/>設定界面<br/>音效配置]
DA[DefaultAudios<br/>內建音效<br/>Base64 編碼]
CA[CustomAudios<br/>自訂音效<br/>用戶上傳]
end
subgraph "Web Audio API"
AUDIO[Audio 物件]
BASE64[Base64 音效數據]
end
AM -->|管理界面| ASU
AM -->|內建音效| DA
AM -->|自訂音效| CA
AM -->|播放控制| AUDIO
AUDIO -->|數據來源| BASE64
ASU -->|設定保存| SettingsManager
```
**核心功能**
- **AudioManager**: 音效播放控制、音量管理、音效選擇
- **AudioSettingsUI**: 音效設定界面、上傳管理、測試播放
- **內建音效**: 經典提示音、通知鈴聲、輕柔鐘聲
- **自訂音效**: 支援 MP3、WAV、OGG 格式上傳和管理
**技術特性**
- **Web Audio API**: 使用原生 Audio 物件進行播放
- **Base64 存儲**: 音效文件以 Base64 格式存儲在 localStorage
- **音量控制**: 0-100% 可調節音量
- **瀏覽器相容性**: 處理自動播放政策限制
#### 智能記憶功能 - v2.4.3 新增
**輸入框高度管理**
```mermaid
graph TB
subgraph "高度管理系統"
THM[TextareaHeightManager<br/>高度管理器]
RO[ResizeObserver<br/>尺寸監控]
DEBOUNCE[防抖機制<br/>500ms 延遲]
end
subgraph "存儲機制"
SETTINGS[SettingsManager]
HEIGHT_KEY[combinedFeedbackTextHeight]
end
TEXTAREA[combinedFeedbackText] --> RO
RO --> THM
THM --> DEBOUNCE
DEBOUNCE --> SETTINGS
SETTINGS --> HEIGHT_KEY
THM -->|恢復高度| TEXTAREA
```
**一鍵複製功能**
- **專案路徑複製**: 點擊路徑文字即可複製到剪貼簿
- **會話ID複製**: 點擊會話ID即可複製
- **複製反饋**: 視覺提示複製成功狀態
- **國際化支援**: 複製提示支援多語言
#### 自動提交功能整合
@ -883,6 +963,110 @@ class ImageHandler {
- **性能優化**: 延遲載入和資源快取
- **無障礙支援**: 鍵盤導航和螢幕閱讀器支援
### static/css/ - 樣式系統v2.4.3 擴展)
**樣式文件結構**
```
static/css/
├── styles.css # 主樣式文件
├── prompt-management.css # 提示詞管理樣式
├── session-management.css # 會話管理樣式
└── audio-management.css # 音效管理樣式v2.4.3 新增)
```
**v2.4.3 新增樣式特性**
**audio-management.css - 音效管理樣式**
```css
/* 音效管理區塊樣式 */
.audio-management-section {
background: var(--bg-tertiary);
border: 1px solid var(--border-color);
border-radius: 12px;
padding: 20px;
margin-bottom: 20px;
transition: all 0.3s ease;
}
/* 音效設定控制項 */
.audio-setting-item {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 16px;
padding: 12px 0;
border-bottom: 1px solid var(--border-color);
}
/* 音量控制滑桿 */
.audio-volume-slider {
width: 120px;
height: 6px;
background: var(--bg-secondary);
border-radius: 3px;
outline: none;
}
/* 自訂音效列表 */
.audio-custom-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 12px;
background: var(--bg-primary);
border: 1px solid var(--border-color);
border-radius: 8px;
margin-bottom: 8px;
}
```
**session-management.css - 會話管理樣式增強**
```css
/* v2.4.3 頁籤化設計 */
.session-tab-content {
padding: 20px;
background: var(--bg-primary);
border-radius: 8px;
margin-top: 16px;
}
/* 會話卡片樣式 */
.session-card {
background: var(--bg-secondary);
border: 1px solid var(--border-color);
border-radius: 8px;
padding: 16px;
margin-bottom: 12px;
transition: all 0.3s ease;
}
.session-card:hover {
border-color: var(--accent-color);
box-shadow: 0 2px 8px rgba(0, 122, 204, 0.1);
}
/* 一鍵複製按鈕樣式 */
.copy-button {
background: transparent;
border: none;
color: var(--accent-color);
cursor: pointer;
padding: 2px 6px;
border-radius: 4px;
transition: background-color 0.2s ease;
}
.copy-button:hover {
background: var(--bg-tertiary);
}
```
**響應式設計增強**
- **移動設備優化**: 音效控制項在小螢幕下垂直排列
- **觸控友好**: 按鈕和滑桿適配觸控操作
- **視覺反饋**: 懸停和點擊狀態的視覺提示
- **深色主題**: 完整的深色主題支援
## 🛠️ 工具層組件
### utils/error_handler.py - 錯誤處理框架
@ -1181,8 +1365,9 @@ tests/
---
**版本**: 2.3.0
**最後更新**: 2024年12月
**版本**: 2.4.3
**最後更新**: 2025年6月14日
**維護者**: Minidoracat
**架構類型**: Web-Only 四層架構
**技術棧**: Python 3.11+, FastAPI, FastMCP, WebSocket
**v2.4.3 新功能**: 音效通知系統、會話管理重構、智能記憶功能
**技術棧**: Python 3.11+, FastAPI, FastMCP, WebSocket, Web Audio API

View File

@ -46,12 +46,14 @@ graph TB
- **內存**: 512MB 可用內存
- **磁盤**: 100MB 可用空間
- **網路**: 可訪問的網路連接
- **瀏覽器**: 支援 Web Audio API 的現代瀏覽器v2.4.3 音效功能)
#### 推薦配置
- **Python**: 3.12+
- **內存**: 1GB+ 可用內存
- **磁盤**: 500MB+ 可用空間
- **磁盤**: 500MB+ 可用空間(包含音效文件存儲)
- **CPU**: 2 核心或更多
- **瀏覽器**: Chrome 90+, Firefox 88+, Safari 14+(完整功能支援)
### 安裝方式
@ -61,7 +63,7 @@ graph TB
uvx mcp-feedback-enhanced@latest web
# 指定版本
uvx mcp-feedback-enhanced@2.3.0 web
uvx mcp-feedback-enhanced@2.4.3 web
```
#### 2. 使用 pip
@ -223,6 +225,8 @@ mcp-feedback-enhanced web [OPTIONS]
| `--debug` | `bool` | `False` | 啟用調試模式 |
| `--no-browser` | `bool` | `False` | 不自動開啟瀏覽器 |
| `--timeout` | `int` | `600` | 預設會話超時時間(秒) |
| `--audio-enabled` | `bool` | `True` | 啟用音效通知v2.4.3 新增) |
| `--session-retention` | `int` | `72` | 會話歷史保存時間小時v2.4.3 新增) |
### 環境變數
@ -232,6 +236,8 @@ export MCP_FEEDBACK_HOST=0.0.0.0
export MCP_FEEDBACK_PORT=9000
export MCP_FEEDBACK_DEBUG=true
export MCP_FEEDBACK_TIMEOUT=1200
export MCP_FEEDBACK_AUDIO_ENABLED=true
export MCP_FEEDBACK_SESSION_RETENTION=72
```
### 配置文件
@ -250,6 +256,101 @@ export MCP_FEEDBACK_TIMEOUT=1200
"ui": {
"default_language": "zh-TW",
"theme": "light"
},
"audio": {
"enabled": true,
"default_volume": 75,
"max_custom_audios": 20,
"max_file_size_mb": 2
},
"session_history": {
"retention_hours": 72,
"max_retention_hours": 168,
"privacy_level": "full",
"auto_cleanup": true
}
}
```
## 🆕 v2.4.3 版本部署考慮
### 音效通知系統部署
#### 瀏覽器相容性檢查
```javascript
// 檢查 Web Audio API 支援
function checkAudioSupport() {
if (typeof Audio === 'undefined') {
console.warn('Web Audio API 不支援,音效功能將被停用');
return false;
}
return true;
}
```
#### 音效文件存儲配置
```json
{
"audio_storage": {
"type": "localStorage",
"max_size_mb": 10,
"compression": true,
"fallback_enabled": true
}
}
```
#### 自動播放政策處理
```bash
# 部署時需要考慮瀏覽器自動播放限制
# Chrome: 需要用戶交互後才能播放音效
# Firefox: 預設允許音效播放
# Safari: 需要用戶手勢觸發
```
### 會話管理重構部署
#### localStorage 容量規劃
```javascript
// 估算存儲需求
const estimatedStorage = {
sessions_per_day: 50,
average_session_size_kb: 5,
retention_days: 3,
total_size_mb: (50 * 5 * 3) / 1024 // 約 0.73 MB
};
```
#### 隱私設定配置
```json
{
"privacy_defaults": {
"user_message_recording": "full",
"retention_hours": 72,
"auto_cleanup": true,
"export_enabled": true
}
}
```
### 智能記憶功能部署
#### ResizeObserver 支援檢查
```javascript
// 檢查 ResizeObserver 支援
if (typeof ResizeObserver === 'undefined') {
console.warn('ResizeObserver 不支援,高度記憶功能將使用 fallback');
// 使用 window.resize 事件作為 fallback
}
```
#### 設定存儲優化
```json
{
"memory_settings": {
"debounce_delay_ms": 500,
"max_stored_heights": 10,
"cleanup_interval_hours": 24
}
}
```
@ -266,9 +367,19 @@ curl http://localhost:8000/health
# 響應示例
{
"status": "healthy",
"version": "2.3.0",
"version": "2.4.3",
"uptime": "2h 30m 15s",
"active_sessions": 1
"active_sessions": 1,
"features": {
"audio_notifications": true,
"session_history": true,
"smart_memory": true
},
"storage": {
"session_history_count": 25,
"custom_audio_count": 3,
"localStorage_usage_mb": 1.2
}
}
```
@ -309,7 +420,41 @@ MAX_WEBSOCKET_CONNECTIONS = 50
#### 常見問題
1. **埠被佔用**
**v2.4.3 新增問題**
1. **音效無法播放**
```bash
# 檢查瀏覽器自動播放政策
# 解決方案:用戶需要先與頁面交互
console.log('請點擊頁面任意位置以啟用音效功能');
# 檢查音效文件格式
# 支援格式MP3, WAV, OGG
# 最大文件大小2MB
```
2. **會話歷史丟失**
```bash
# 檢查 localStorage 容量
# 解決方案:清理過期數據或增加保存期限
localStorage.getItem('sessionHistory');
# 檢查隱私設定
# 確認用戶訊息記錄等級設定正確
```
3. **輸入框高度不記憶**
```bash
# 檢查 ResizeObserver 支援
if (typeof ResizeObserver === 'undefined') {
console.warn('瀏覽器不支援 ResizeObserver');
}
# 檢查設定存儲
localStorage.getItem('combinedFeedbackTextHeight');
```
4. **埠被佔用**
```bash
# 檢查埠使用情況
netstat -tulpn | grep 8000
@ -391,6 +536,13 @@ sudo firewall-cmd --reload
- 平均回應時間
- 錯誤率
### v2.4.3 新增指標
- 音效播放成功率
- 會話歷史存儲使用量
- 自訂音效上傳數量
- 輸入框高度調整頻率
- localStorage 使用量
### 監控工具集成
```python
# Prometheus 指標
@ -399,8 +551,92 @@ from prometheus_client import Counter, Histogram, Gauge
session_counter = Counter('mcp_sessions_total', 'Total sessions created')
response_time = Histogram('mcp_response_time_seconds', 'Response time')
active_sessions = Gauge('mcp_active_sessions', 'Active sessions')
# v2.4.3 新增指標
audio_plays = Counter('mcp_audio_plays_total', 'Total audio notifications played')
audio_errors = Counter('mcp_audio_errors_total', 'Total audio playback errors')
session_history_size = Gauge('mcp_session_history_size_bytes', 'Session history storage size')
custom_audio_count = Gauge('mcp_custom_audio_count', 'Number of custom audio files')
height_adjustments = Counter('mcp_height_adjustments_total', 'Total textarea height adjustments')
```
---
**完成**: 架構文檔體系已建立完成,包含完整的技術文檔和部署指南。
## 🔄 版本升級指南
### 從 v2.4.2 升級到 v2.4.3
#### 1. 備份現有數據
```bash
# 備份用戶設定
cp ~/.mcp-feedback/settings.json ~/.mcp-feedback/settings.json.backup
# 備份提示詞數據
cp ~/.mcp-feedback/prompts.json ~/.mcp-feedback/prompts.json.backup
```
#### 2. 升級軟體
```bash
# 使用 uvx 升級
uvx mcp-feedback-enhanced@2.4.3 web
# 或使用 pip 升級
pip install --upgrade mcp-feedback-enhanced==2.4.3
```
#### 3. 驗證新功能
```bash
# 檢查音效功能
curl http://localhost:8000/health | jq '.features.audio_notifications'
# 檢查會話歷史功能
curl http://localhost:8000/health | jq '.features.session_history'
# 檢查智能記憶功能
curl http://localhost:8000/health | jq '.features.smart_memory'
```
#### 4. 配置遷移
```json
// 新增的配置項目會自動使用預設值
{
"audio": {
"enabled": true,
"volume": 75,
"selectedAudioId": "default-beep"
},
"sessionHistory": {
"retentionHours": 72,
"privacyLevel": "full"
},
"smartMemory": {
"heightMemoryEnabled": true
}
}
```
### 回滾指南
如果需要回滾到 v2.4.2
```bash
# 停止服務
pkill -f mcp-feedback-enhanced
# 安裝舊版本
pip install mcp-feedback-enhanced==2.4.2
# 恢復備份設定
cp ~/.mcp-feedback/settings.json.backup ~/.mcp-feedback/settings.json
# 重新啟動服務
mcp-feedback-enhanced web
```
---
**版本**: 2.4.3
**最後更新**: 2025年6月14日
**維護者**: Minidoracat
**新功能**: 音效通知系統、會話管理重構、智能記憶功能、一鍵複製
**完成**: 架構文檔體系已更新完成,包含 v2.4.3 版本的完整技術文檔和部署指南。

View File

@ -553,7 +553,7 @@ sequenceDiagram
Modal->>UI: 填入提示詞內容
```
### 會話管理流程
### 會話管理流程v2.4.3 重構增強)
```mermaid
sequenceDiagram
@ -561,52 +561,148 @@ sequenceDiagram
participant Server as MCP 服務器
participant SM as SessionManager
participant SDM as SessionDataManager
participant SUR as SessionUIRenderer
participant UI as 前端界面
Note over AI,UI: 📊 會話生命週期管理
Note over AI,UI: 📊 會話生命週期管理v2.4.3 重構)
AI->>Server: interactive_feedback()
Server->>SM: createSession()
SM->>SDM: addCurrentSession()
SDM->>UI: 更新會話顯示
SDM->>SUR: renderCurrentSession()
SUR->>UI: 更新會話顯示(頁籤化設計)
Note over AI,UI: 📝 用戶回饋處理
UI->>Server: submit_feedback
Server->>SM: processFeedback()
SM->>SDM: updateSessionStatus()
SDM->>SDM: 記錄回饋數據
SDM->>SDM: 記錄回饋數據(本地存儲)
SM->>AI: 返回回饋結果
Note over AI,UI: 📚 會話歷史管理
Note over AI,UI: 📚 會話歷史管理v2.4.3 增強)
SM->>SDM: addSessionToHistory()
SDM->>SDM: 檢查完成狀態
alt 會話已完成
SDM->>SDM: 加入歷史記錄
SDM->>SDM: 加入歷史記錄localStorage
SDM->>SDM: updateStats()
SDM->>UI: 觸發 onHistoryChange
SDM->>SUR: renderSessionHistory()
SUR->>UI: 觸發 onHistoryChange
else 會話未完成
SDM->>SDM: 跳過歷史記錄
end
Note over AI,UI: 🔍 歷史查詢
Note over AI,UI: 🔍 歷史查詢與管理
UI->>SDM: getSessionHistory()
SDM-->>UI: 返回歷史列表
SDM-->>UI: 返回歷史列表72小時內
UI->>SDM: getSessionStats()
SDM-->>UI: 返回統計數據
UI->>SDM: exportSessionHistory()
SDM-->>UI: 返回匯出數據
UI->>SDM: cleanupExpiredSessions()
SDM->>SDM: 清理過期會話
```
### 音效通知系統流程v2.4.3 新增)
```mermaid
sequenceDiagram
participant WS as WebSocket
participant AM as AudioManager
participant ASU as AudioSettingsUI
participant AUDIO as Web Audio API
participant User as 用戶
Note over WS,User: 🔊 音效通知觸發流程
WS->>AM: session_updated 事件
AM->>AM: checkNotificationEnabled()
alt 音效通知已啟用
AM->>AM: getSelectedAudio()
AM->>AUDIO: 創建 Audio 物件
AM->>AUDIO: 設定音量和來源
AUDIO->>User: 播放通知音效
AM->>AM: logPlaybackSuccess()
else 音效通知已停用
AM->>AM: logSkippedNotification()
end
Note over WS,User: 🎵 音效設定管理
User->>ASU: 開啟音效設定
ASU->>AM: getAudioSettings()
AM-->>ASU: 返回當前設定
ASU->>User: 顯示設定界面
User->>ASU: 調整音量
ASU->>AM: updateVolume(volume)
AM->>AM: saveSettings()
User->>ASU: 選擇音效
ASU->>AM: selectAudio(audioId)
AM->>AM: saveSettings()
User->>ASU: 測試播放
ASU->>AM: testPlayAudio(audioId)
AM->>AUDIO: 播放測試音效
AUDIO->>User: 播放音效
Note over WS,User: 📁 自訂音效管理
User->>ASU: 上傳自訂音效
ASU->>ASU: validateAudioFile()
ASU->>AM: addCustomAudio(file)
AM->>AM: convertToBase64()
AM->>AM: saveToLocalStorage()
ASU->>User: 顯示上傳成功
```
### 智能記憶功能流程v2.4.3 新增)
```mermaid
sequenceDiagram
participant User as 用戶
participant TEXTAREA as 輸入框
participant THM as TextareaHeightManager
participant RO as ResizeObserver
participant SM as SettingsManager
Note over User,SM: 📏 輸入框高度記憶
User->>TEXTAREA: 調整輸入框高度
TEXTAREA->>RO: 觸發尺寸變化事件
RO->>THM: handleResize(element)
THM->>THM: debounce(500ms)
THM->>SM: saveHeight(elementId, height)
SM->>SM: 保存到 localStorage
Note over User,SM: 🔄 高度恢復
User->>User: 重新載入頁面
THM->>SM: loadHeight(elementId)
SM-->>THM: 返回保存的高度
THM->>TEXTAREA: 應用保存的高度
TEXTAREA->>User: 顯示恢復的高度
Note over User,SM: 📋 一鍵複製功能
User->>User: 點擊專案路徑
User->>User: 觸發複製事件
User->>User: 複製到剪貼簿
User->>User: 顯示複製成功提示
User->>User: 點擊會話ID
User->>User: 觸發複製事件
User->>User: 複製到剪貼簿
User->>User: 顯示複製成功提示(多語言)
```
## 📊 狀態同步機制
### WebSocket 訊息類型
### WebSocket 訊息類型v2.4.3 擴展)
```mermaid
graph LR
subgraph "服務器 → 客戶端"
CE[connection_established<br/>連接建立]
SU[session_updated<br/>會話更新]
SU[session_updated<br/>會話更新<br/>🔊 觸發音效通知]
FR[feedback_received<br/>回饋確認]
ST[status_update<br/>狀態更新]
ASS[auto_submit_status<br/>自動提交狀態]
SH[session_history<br/>會話歷史]
SH[session_history<br/>會話歷史<br/>📚 v2.4.3 增強]
AN[audio_notification<br/>音效通知<br/>🔊 v2.4.3 新增]
end
subgraph "客戶端 → 服務器"
@ -615,7 +711,9 @@ graph LR
LS[language_switch<br/>語言切換]
PM[prompt_management<br/>提示詞管理]
ASC[auto_submit_control<br/>自動提交控制]
SM[session_management<br/>會話管理]
SM[session_management<br/>會話管理<br/>📋 v2.4.3 重構]
AM[audio_management<br/>音效管理<br/>🎵 v2.4.3 新增]
HM[height_management<br/>高度管理<br/>📏 v2.4.3 新增]
end
```
@ -742,8 +840,9 @@ async def wait_for_feedback(self, timeout: int = 600):
---
**版本**: 2.3.0
**最後更新**: 2024年12月
**版本**: 2.4.3
**最後更新**: 2025年6月14日
**維護者**: Minidoracat
**架構類型**: Web-Only 四層架構
**核心特性**: 持久化會話、智能環境適配、無縫狀態切換
**v2.4.3 新功能**: 音效通知系統、會話管理重構、智能記憶功能

View File

@ -25,6 +25,9 @@ MCP Feedback Enhanced 採用**單一活躍會話 + 持久化 Web UI**的創新
- HTML5 + CSS3 (現代化 UI)
- JavaScript ES6+ (模組化架構)
- WebSocket API (雙向通信)
- Web Audio API (音效通知系統)
- localStorage API (本地數據存儲)
- ResizeObserver API (元素尺寸監控)
- 響應式設計 (多設備支援)
**開發工具**
@ -66,8 +69,10 @@ graph TB
JS[JavaScript 模組<br/>app.js + 功能模組]
CSS[樣式系統<br/>響應式設計]
PROMPT[提示詞管理<br/>PromptManager + UI 組件]
SESSION_MGR[會話管理<br/>SessionManager + 歷史追蹤]
SESSION_MGR[會話管理<br/>SessionManager + 歷史追蹤<br/>v2.4.3 重構增強]
AUTO_SUBMIT[自動提交<br/>AutoSubmitManager + 倒數計時]
AUDIO_MGR[音效通知系統<br/>AudioManager + 自訂音效<br/>v2.4.3 新增]
MEMORY_MGR[智能記憶功能<br/>高度管理 + 一鍵複製<br/>v2.4.3 新增]
end
subgraph "工具層"
@ -105,9 +110,13 @@ graph TB
JS --> PROMPT
JS --> SESSION_MGR
JS --> AUTO_SUBMIT
JS --> AUDIO_MGR
JS --> MEMORY_MGR
PROMPT --> WS
SESSION_MGR --> WS
AUTO_SUBMIT --> WS
AUDIO_MGR --> WS
MEMORY_MGR --> WS
I18N --> ROUTES
DEBUG --> SERVER
@ -166,8 +175,10 @@ graph TB
- 實時 WebSocket 通信
- 豐富的用戶交互功能
- **提示詞管理系統**:常用提示詞的 CRUD 操作和快速選擇
- **會話管理功能**:會話歷史追蹤和統計分析
- **會話管理功能**:會話歷史追蹤和統計分析v2.4.3 重構增強)
- **自動提交機制**:倒數計時器和自動回饋提交
- **音效通知系統**智能音效提醒和自訂音效管理v2.4.3 新增)
- **智能記憶功能**輸入框高度記憶和一鍵複製v2.4.3 新增)
### 3. 單一活躍會話模式
```mermaid
@ -300,10 +311,17 @@ auto-refresh-manager → app
- prompt-modal.js (編輯彈窗)
- prompt-settings-ui.js (設定界面)
- prompt-input-buttons.js (快速選擇按鈕)
- **會話管理模組群組**
- **會話管理模組群組v2.4.3 重構增強)**
- session-manager.js (會話控制器)
- session-data-manager.js (數據管理器)
- session-utils.js (工具函數)
- session-data-manager.js (數據管理器,新增本地存儲)
- session-ui-renderer.js (UI 渲染器,頁籤化設計)
- session-details-modal.js (詳情彈窗)
- **音效通知模組群組v2.4.3 新增)**
- audio-manager.js (音效管理器)
- audio-settings-ui.js (音效設定界面)
- **智能記憶功能v2.4.3 新增)**
- textarea-height-manager.js (輸入框高度管理)
- 一鍵複製功能整合在各 UI 組件中
- **自動提交功能**
- 整合在 app.js 中的 AutoSubmitManager
- 與提示詞管理和設定管理的深度整合
@ -364,21 +382,127 @@ auto-refresh-manager → app
- **併發控制**: 安全的多執行緒操作
- **數據驗證**: 嚴格的輸入驗證和清理
## 🆕 v2.4.3 版本新功能架構
### 1. 音效通知系統架構
**系統組成**
```mermaid
graph TB
subgraph "音效通知系統"
AM[AudioManager<br/>音效管理器]
ASU[AudioSettingsUI<br/>設定界面]
DA[DefaultAudios<br/>內建音效]
CA[CustomAudios<br/>自訂音效]
end
subgraph "Web Audio API"
AUDIO[Audio 物件]
BASE64[Base64 音效數據]
end
subgraph "設定存儲"
LS[localStorage]
SM[SettingsManager]
end
AM --> ASU
AM --> DA
AM --> CA
AM --> AUDIO
AUDIO --> BASE64
ASU --> SM
SM --> LS
WS[WebSocket] -->|會話更新事件| AM
AM -->|播放通知| AUDIO
```
**核心特性**
- **內建音效**: 經典提示音、通知鈴聲、輕柔鐘聲
- **自訂音效**: 支援 MP3、WAV、OGG 格式上傳
- **音量控制**: 0-100% 可調節音量
- **測試播放**: 即時測試音效效果
- **設定持久化**: 音效偏好自動保存
### 2. 會話管理重構架構
**從側邊欄到頁籤的遷移**
```mermaid
graph LR
subgraph "v2.4.2 設計"
SIDEBAR[左側邊欄<br/>會話管理]
COMPAT[瀏覽器相容性問題<br/>小視窗按鈕無法點擊]
end
subgraph "v2.4.3 重構"
TAB[獨立頁籤<br/>會話管理]
ENHANCED[增強功能<br/>本地存儲 + 隱私控制]
end
SIDEBAR -->|重構| TAB
COMPAT -->|解決| ENHANCED
```
**新增功能模組**
- **session-ui-renderer.js**: 專門的 UI 渲染器
- **session-details-modal.js**: 會話詳情彈窗
- **本地歷史存儲**: 支援 72 小時可配置保存期限
- **隱私控制**: 三級用戶訊息記錄設定
- **數據管理**: 匯出和清理功能
### 3. 智能記憶功能架構
**輸入框高度管理**
```mermaid
graph TB
subgraph "高度管理系統"
THM[TextareaHeightManager<br/>高度管理器]
RO[ResizeObserver<br/>尺寸監控]
DEBOUNCE[防抖機制<br/>500ms 延遲]
end
subgraph "存儲機制"
SETTINGS[SettingsManager]
HEIGHT_KEY[combinedFeedbackTextHeight]
end
TEXTAREA[combinedFeedbackText] --> RO
RO --> THM
THM --> DEBOUNCE
DEBOUNCE --> SETTINGS
SETTINGS --> HEIGHT_KEY
THM -->|恢復高度| TEXTAREA
```
**一鍵複製功能**
- **專案路徑複製**: 點擊路徑文字即可複製
- **會話ID複製**: 點擊會話ID即可複製
- **複製反饋**: 視覺提示複製成功
- **國際化支援**: 複製提示支援多語言
## 🔄 核心工作流程
### AI 助手調用流程
### AI 助手調用流程v2.4.3 增強)
```mermaid
sequenceDiagram
participant AI as AI 助手
participant MCP as MCP 服務
participant WM as WebUIManager
participant UI as Web UI
participant AUDIO as 音效管理器
participant User as 用戶
AI->>MCP: interactive_feedback()
MCP->>WM: 創建/更新會話
WM->>UI: 啟動 Web 服務
WM->>User: 智能開啟瀏覽器
Note over UI,AUDIO: v2.4.3 新增音效通知
UI->>AUDIO: 會話更新事件
AUDIO->>User: 播放通知音效
User->>UI: 提交回饋
UI->>WM: WebSocket 傳送
WM->>MCP: 回饋完成
@ -462,8 +586,9 @@ graph LR
---
**版本**: 2.4.0
**最後更新**: 2025年6月
**版本**: 2.4.3
**最後更新**: 2025年6月14日
**維護者**: Minidoracat
**架構類型**: Web-Only 四層架構
**新功能**: 提示詞管理、自動提交、會話管理、語系切換優化
**v2.4.3 新功能**: 音效通知系統、會話管理重構、智能記憶功能、一鍵複製
**歷史功能**: 提示詞管理、自動提交、會話管理、語系切換優化