Change platform to rocket.chat
This commit is contained in:
112
INTRO.md
112
INTRO.md
@@ -65,4 +65,114 @@ Open WebUI 採用**雙層結構**來組織對話:
|
||||
- ✅ 多層結構 - 支援「用戶 → 對話 → 訊息」的層級關係
|
||||
- ✅ 狀態管理 - 清楚標示哪些對話待回覆
|
||||
|
||||
## 架構
|
||||
## Rocket.Chat 整合架構
|
||||
|
||||
### 系統架構圖
|
||||
|
||||
```
|
||||
┌─────────────┐
|
||||
│ Open WebUI │
|
||||
│ 用戶介面 │
|
||||
└──────┬──────┘
|
||||
│ 1. Chat Request
|
||||
│ Headers: X-OpenWebUI-User-Id, X-OpenWebUI-Chat-Id
|
||||
│ X-OpenWebUI-User-Name
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ API (FastAPI - server.py) │
|
||||
├─────────────────────────────────────────────────────────┤
|
||||
│ 2. 解析 Headers 提取 user_id, chat_id, user_name │
|
||||
│ 3. 登入 Rocket.Chat 取得認證 Token │
|
||||
│ 4. 創建/取得用戶頻道 (#user-{user_id}) │
|
||||
│ 5. 在頻道中創建執行緒訊息 │
|
||||
│ 6. 輪詢等待管理員在執行緒中回覆 │
|
||||
│ 7. 將回覆返回給 Open WebUI │
|
||||
└──────┬──────────────────────────┬───────────────────────┘
|
||||
│ │
|
||||
▼ ▼
|
||||
┌─────────────┐ ┌─────────────────────────┐
|
||||
│ PostgreSQL │ │ Rocket.Chat + MongoDB │
|
||||
│ reply_queue │ ├─────────────────────────┤
|
||||
└─────────────┘ │ 頻道: #user-abc123 │
|
||||
│ └── 🧵 chat-001 │
|
||||
│ ├── 用戶訊息 │
|
||||
│ └── 管理員回覆 │
|
||||
└─────────────────────────┘
|
||||
▲
|
||||
│ 8. 管理員回覆
|
||||
│
|
||||
┌─────┴──────┐
|
||||
│ 管理員瀏覽器│
|
||||
└────────────┘
|
||||
```
|
||||
|
||||
### 資料映射關係
|
||||
|
||||
| Open WebUI | Rocket.Chat | 說明 |
|
||||
|-----------|-------------|------|
|
||||
| 用戶 (user_id) | 頻道 (Channel) | 每個用戶一個專屬頻道 `#user-{id}` |
|
||||
| 對話 (chat_id) | 執行緒 (Thread) | 同一對話的多輪訊息在同一執行緒 |
|
||||
| 訊息 (message) | 訊息 (Message) | 用戶和管理員的對話內容 |
|
||||
|
||||
### Rocket.Chat 呈現效果
|
||||
|
||||
```
|
||||
Rocket.Chat 介面:
|
||||
├── 📂 頻道列表
|
||||
│ ├── #user-abc123 (張三)
|
||||
│ │ └── 描述: 用戶: 張三 (ID: abc123...)
|
||||
│ ├── #user-def456 (李四)
|
||||
│ │ └── 描述: 用戶: 李四 (ID: def456...)
|
||||
│ └── #user-xyz789 (王五)
|
||||
│
|
||||
└── 📂 #user-abc123 (張三) 的內容
|
||||
├── 🧵 [對話 chat-001] "如何學習 Python?"
|
||||
│ ├── 💬 張三: "如何學習 Python?"
|
||||
│ └── 💬 管理員: "推薦從基礎開始..."
|
||||
│
|
||||
├── 🧵 [對話 chat-002] "推薦餐廳"
|
||||
│ ├── 💬 張三: "台北有什麼好吃的?"
|
||||
│ └── 💬 管理員: "推薦鼎泰豐..."
|
||||
│
|
||||
└── 🧵 [對話 chat-003] ⚠️ 待回覆
|
||||
└── 💬 張三: "旅遊攻略"
|
||||
```
|
||||
|
||||
### 資料庫結構
|
||||
|
||||
`reply_queue` 表格結構:
|
||||
|
||||
```sql
|
||||
CREATE TABLE reply_queue (
|
||||
id SERIAL PRIMARY KEY,
|
||||
conversation_id VARCHAR(50) UNIQUE NOT NULL,
|
||||
user_id VARCHAR(255),
|
||||
chat_id VARCHAR(255),
|
||||
user_name VARCHAR(255),
|
||||
user_message TEXT NOT NULL,
|
||||
admin_reply TEXT,
|
||||
status VARCHAR(20) DEFAULT 'pending',
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
replied_at TIMESTAMP,
|
||||
rocketchat_room_id VARCHAR(100),
|
||||
rocketchat_thread_id VARCHAR(100)
|
||||
);
|
||||
```
|
||||
|
||||
### 服務列表
|
||||
|
||||
| 服務 | 容器名 | Port | 說明 |
|
||||
|------|-------|------|------|
|
||||
| **PostgreSQL** | tobiichiGPT-postgres | 5432 | 資料庫(記錄追蹤) |
|
||||
| **MongoDB** | tobiichiGPT-mongo | 27017 | Rocket.Chat 資料庫 |
|
||||
| **API** | tobiichiGPT-api | 18000 | OpenAI API 相容端點 |
|
||||
| **Open WebUI** | tobiichiGPT-ui | 10060 | 用戶對話介面 |
|
||||
| **Rocket.Chat** | tobiichiGPT-rocketchat | 13000 | 管理員對話介面 |
|
||||
|
||||
### 技術特點
|
||||
|
||||
1. **雙層映射** - 完美對應 Open WebUI 的用戶+對話結構
|
||||
2. **執行緒隔離** - 每個對話獨立,不會混雜
|
||||
3. **即時通知** - Rocket.Chat 支援桌面和手機推送
|
||||
4. **輕量部署** - 共 5 個容器(含初始化容器)
|
||||
5. **可擴展性** - 支援多管理員協作回覆
|
||||
|
||||
Reference in New Issue
Block a user