diff --git a/INTRO.md b/INTRO.md new file mode 100644 index 0000000..2298244 --- /dev/null +++ b/INTRO.md @@ -0,0 +1,68 @@ +# 功能介紹 + +## 核心概念 + +TobiichiGPT 將 Open WebUI 這類 AI 對話系統的後端改造成由真人管理員回覆的系統。 + +### 基本原理 + +1. **API 中間層** - 提供 OpenAI API 相容端點(`/v1/chat/completions`) +2. **訊息轉發** - 將用戶訊息存入資料庫的 `reply_queue` 表格 +3. **管理員介面** - 使用對話軟體讓真人管理員查看並回覆 +4. **輪詢機制** - API 等待管理員在資料庫中填入回覆後返回給用戶 + +### 技術架構 + +``` +用戶 → Open WebUI → API (FastAPI) → PostgreSQL ← 管理介面 ← 管理員 + ↓ ↓ + 等待回覆 填寫回覆 + ↓ ↓ + 返回給用戶 ←──────────────────────────┘ +``` + +## 需求分析 + +### Open WebUI 的對話結構 + +Open WebUI 採用**雙層結構**來組織對話: + +``` +用戶 A (user_id: abc123) + ├── 對話 1 (chat_id: chat_001) - "教我 Python" + ├── 對話 2 (chat_id: chat_002) - "推薦餐廳" + └── 對話 3 (chat_id: chat_003) - "旅遊攻略" + +用戶 B (user_id: def456) + ├── 對話 1 (chat_id: chat_004) - "程式問題" + └── 對話 2 (chat_id: chat_005) - "健康諮詢" +``` + +**關鍵特性**: +- 一個用戶(user_id)可以創建多個對話(chat_id) +- 每個對話有獨立的主題和訊息串 +- 管理員需要能夠明確追蹤「哪個用戶的哪個對話」 + +### 管理後台需求 + +理想的管理介面應該呈現: + +``` +📂 所有對話(按用戶分組) +├── 👤 張三 (User A) +│ ├── 💬 對話: "教我 Python" (3 則訊息) +│ ├── 💬 對話: "推薦餐廳" (5 則訊息) +│ └── 💬 對話: "旅遊攻略" (2 則訊息) +│ +└── 👤 李四 (User B) + ├── 💬 對話: "程式問題" (1 則訊息) ⚠️ 待回覆 + └── 💬 對話: "健康諮詢" (4 則訊息) +``` + +**核心需求**: +- ✅ 用戶分組 - 能看到每個用戶的所有對話 +- ✅ 對話追蹤 - 同一對話的多輪訊息要串在一起 +- ✅ 多層結構 - 支援「用戶 → 對話 → 訊息」的層級關係 +- ✅ 狀態管理 - 清楚標示哪些對話待回覆 + +## 架構 \ No newline at end of file