diff --git a/README.md b/README.md
index b0201b56..e8a1ae39 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
-

+

**基於 LangGraph 的 AI 股票交易分析平台,結合多個專業 AI 代理進行協作決策**
@@ -26,16 +26,16 @@
### 🎯 核心特色
-| 功能 | 說明 |
-|------|------|
-| 🤖 **多代理協作架構** | 12 個專業化 AI 代理(分析師、研究員、交易員、風險管理)協同工作 |
-| 🌐 **多模型支援** | OpenAI、Anthropic、Gemini、Grok、DeepSeek、Qwen 等 LLM 提供商 |
-| 🔒 **Google OAuth 登入** | 雲端同步 API 設定與歷史報告,支援多裝置同步 |
-| 📊 **美股與台股支援** | 完整支援美股(Yahoo Finance)與台股(FinMind)資料 |
-| 🔑 **BYOK 模式** | 使用者自帶 API 金鑰,前端加密儲存,保障隱私 |
-| 🛡️ **安全防護** | Rate Limiting、Security Headers、API Key 遮罩 |
-| 📱 **響應式設計** | 支援桌面與手機瀏覽器 |
-| 🐳 **Docker 部署** | 一鍵啟動前後端服務 |
+| 功能 | 說明 |
+| ------------------------ | --------------------------------------------------------------- |
+| 🤖 **多代理協作架構** | 12 個專業化 AI 代理(分析師、研究員、交易員、風險管理)協同工作 |
+| 🌐 **多模型支援** | OpenAI、Anthropic、Gemini、Grok、DeepSeek、Qwen 等 LLM 提供商 |
+| 🔒 **Google OAuth 登入** | 雲端同步 API 設定與歷史報告,支援多裝置同步 |
+| 📊 **美股與台股支援** | 完整支援美股(Yahoo Finance)與台股(FinMind)資料 |
+| 🔑 **BYOK 模式** | 使用者自帶 API 金鑰,前端加密儲存,保障隱私 |
+| 🛡️ **安全防護** | Rate Limiting、Security Headers、API Key 遮罩 |
+| 📱 **響應式設計** | 支援桌面與手機瀏覽器 |
+| 🐳 **Docker 部署** | 一鍵啟動前後端服務 |
---
@@ -144,28 +144,31 @@ TradingAgentsX/
## 🤖 AI 代理團隊
### 分析師團隊 (4 位)
-| 代理 | 職責 | 輸出 |
-|------|------|------|
-| 市場分析師 | 技術分析 | RSI、MACD、布林通道、支撐阻力位 |
+
+| 代理 | 職責 | 輸出 |
+| -------------- | -------- | ----------------------------------- |
+| 市場分析師 | 技術分析 | RSI、MACD、布林通道、支撐阻力位 |
| 社群媒體分析師 | 情緒評估 | Reddit/Twitter 情緒指標、投資者信心 |
-| 新聞分析師 | 新聞分析 | 最新新聞摘要、事件影響評估 |
-| 基本面分析師 | 財務分析 | 財報數據、P/E、P/B、盈利能力 |
+| 新聞分析師 | 新聞分析 | 最新新聞摘要、事件影響評估 |
+| 基本面分析師 | 財務分析 | 財報數據、P/E、P/B、盈利能力 |
### 研究團隊 (3 位)
-| 代理 | 職責 |
-|------|------|
+
+| 代理 | 職責 |
+| ---------- | ---------------------------- |
| 看漲研究員 | 多頭觀點論證、上漲催化劑分析 |
-| 看跌研究員 | 空頭觀點論證、下跌風險警告 |
-| 研究經理 | 綜合看漲與看跌觀點的決策 |
+| 看跌研究員 | 空頭觀點論證、下跌風險警告 |
+| 研究經理 | 綜合看漲與看跌觀點的決策 |
### 交易與風險團隊 (5 位)
-| 代理 | 職責 |
-|------|------|
-| 交易員 | 整合所有報告,制定交易計劃 |
-| 激進分析師 | 高風險高回報策略分析 |
-| 保守分析師 | 穩健保守策略與風險控制 |
-| 中立分析師 | 中立平衡策略評估 |
-| 風險經理 | 風險管理綜合決策與最終建議 |
+
+| 代理 | 職責 |
+| ---------- | -------------------------- |
+| 交易員 | 整合所有報告,制定交易計劃 |
+| 激進分析師 | 高風險高回報策略分析 |
+| 保守分析師 | 穩健保守策略與風險控制 |
+| 中立分析師 | 中立平衡策略評估 |
+| 風險經理 | 風險管理綜合決策與最終建議 |
---
@@ -179,11 +182,11 @@ TradingAgentsX/
### 必要的 API 金鑰
-| API | 用途 | 申請網址 |
-|-----|------|----------|
-| OpenAI | GPT 模型 | https://platform.openai.com/api-keys |
+| API | 用途 | 申請網址 |
+| --------------------- | -------------- | -------------------------------------------- |
+| OpenAI | GPT 模型 | https://platform.openai.com/api-keys |
| Alpha Vantage(選填) | 美股基本面資料 | https://www.alphavantage.co/support/#api-key |
-| FinMind(選填) | 台股資料 | https://finmindtrade.com/ |
+| FinMind(選填) | 台股資料 | https://finmindtrade.com/ |
### 安裝步驟
@@ -214,6 +217,7 @@ python -m backend
```
後端服務:
+
- API: http://localhost:8000
- Swagger 文檔: http://localhost:8000/docs
@@ -248,6 +252,7 @@ docker compose down -v
```
服務端口:
+
- 後端: http://localhost:8000
- 前端: http://localhost:3000
@@ -257,13 +262,13 @@ docker compose down -v
### 本地開發 vs 生產環境
-| 功能 | 本地開發 (localhost) | 生產環境 (Railway 等) |
-|------|----------------------|----------------------|
-| Google 登入 | 選用(可不設定) | 建議啟用 |
-| 資料自動清除 | ❌ 不會清除 | ✅ 未登入時離開會清除 |
-| PostgreSQL | 選用 | 必需 |
-| API 設定儲存 | 永久保留 | 登入後雲端同步 |
-| 歷史報告儲存 | 永久保留 | 登入後雲端同步 |
+| 功能 | 本地開發 (localhost) | 生產環境 (Railway 等) |
+| ------------ | -------------------- | --------------------- |
+| Google 登入 | 選用(可不設定) | 建議啟用 |
+| 資料自動清除 | ❌ 不會清除 | ✅ 未登入時離開會清除 |
+| PostgreSQL | 選用 | 必需 |
+| API 設定儲存 | 永久保留 | 登入後雲端同步 |
+| 歷史報告儲存 | 永久保留 | 登入後雲端同步 |
### 前端安全
@@ -272,12 +277,14 @@ docker compose down -v
- **Safari 觸控優化** - 修復 iOS Safari 的觸控事件問題
### 後端安全
+
- **Rate Limiting** - 每分鐘 30 次請求限制
- **Security Headers** - X-Content-Type-Options、X-Frame-Options 等
- **敏感資料遮罩** - API Key 在日誌中自動遮罩
- **CORS 配置** - 限制跨域請求來源
### 雲端同步
+
- **Google OAuth 2.0** - 安全的第三方登入
- **JWT Token** - 無狀態認證
- **雲端備份** - API 設定與歷史報告同步到伺服器
@@ -287,9 +294,11 @@ docker compose down -v
## 📱 使用指南
### 1. 配置 API 金鑰
+
點擊右上角「設定」按鈕,輸入您的 API 金鑰。
### 2. 選擇分析參數
+
- **市場類型**: 美股 / 台股上市 / 台股上櫃
- **股票代碼**: 如 NVDA、2330
- **分析師團隊**: 選擇需要的分析師
@@ -297,14 +306,17 @@ docker compose down -v
- **LLM 模型**: 快速思維模型 + 深層思維模型
### 3. 執行分析
+
點擊「執行分析」,等待 1-5 分鐘(依研究深度而定)。
### 4. 查看結果
+
- **交易決策摘要** - BUY / SELL / HOLD 建議
- **股價走勢圖** - 折線圖 / K 線圖切換
- **12 位代理報告** - 點擊標籤查看詳細分析
### 5. 儲存與下載
+
- **儲存報告** - 保存到本地 / 雲端
- **下載 PDF 報告** - 匯出完整 PDF 分析報告
@@ -319,11 +331,13 @@ docker compose down -v
## 🔌 API 文檔
### 健康檢查
+
```bash
GET /api/health
```
### 執行分析
+
```bash
POST /api/analyze
Content-Type: application/json
@@ -344,6 +358,7 @@ Content-Type: application/json
```
### 查詢任務狀態
+
```bash
GET /api/task/{task_id}
```
@@ -355,25 +370,27 @@ GET /api/task/{task_id}
## 🛠️ 技術棧
### 後端
-| 技術 | 用途 |
-|------|------|
-| FastAPI | 異步 Web 框架 |
-| LangGraph | 多代理工作流編排 |
-| LangChain | LLM 應用開發 |
-| ChromaDB | 向量資料庫(記憶系統)|
-| PostgreSQL | 使用者資料儲存 |
-| SQLAlchemy + asyncpg | 異步資料庫 ORM |
-| Pydantic | 資料驗證 |
+
+| 技術 | 用途 |
+| -------------------- | ---------------------- |
+| FastAPI | 異步 Web 框架 |
+| LangGraph | 多代理工作流編排 |
+| LangChain | LLM 應用開發 |
+| ChromaDB | 向量資料庫(記憶系統) |
+| PostgreSQL | 使用者資料儲存 |
+| SQLAlchemy + asyncpg | 異步資料庫 ORM |
+| Pydantic | 資料驗證 |
### 前端
-| 技術 | 用途 |
-|------|------|
-| Next.js 16 | React 全端框架 |
-| TypeScript | 靜態型別 |
-| Tailwind CSS | 樣式框架 |
-| shadcn/ui | UI 組件庫 |
-| Dexie.js | IndexedDB 封裝 |
-| Recharts | 資料視覺化 |
+
+| 技術 | 用途 |
+| ------------ | -------------- |
+| Next.js 16 | React 全端框架 |
+| TypeScript | 靜態型別 |
+| Tailwind CSS | 樣式框架 |
+| shadcn/ui | UI 組件庫 |
+| Dexie.js | IndexedDB 封裝 |
+| Recharts | 資料視覺化 |
---
@@ -385,11 +402,12 @@ GET /api/task/{task_id}
---
-### API配置頁面
+### API 配置頁面

---
+
### 任務配置頁面

@@ -429,77 +447,66 @@ GET /api/task/{task_id}
### 社群媒體分析師報告
-

---
### 新聞分析師報告
-

---
### 基本面分析師報告
-

---
### 看漲研究員報告
-

---
### 看跌研究員報告
-

---
### 研究經理報告
-

---
### 交易員報告
-

---
### 激進分析師報告
-

---
### 保守分析師報告
-

---
### 中立分析師報告
-

---
### 風險經理報告
-

---
diff --git a/assets/logo.png b/assets/logo.png
index a782d7c0..bc52cfcc 100644
Binary files a/assets/logo.png and b/assets/logo.png differ
diff --git a/frontend/app/apple-icon.png b/frontend/app/apple-icon.png
index a366e742..bc52cfcc 100644
Binary files a/frontend/app/apple-icon.png and b/frontend/app/apple-icon.png differ
diff --git a/frontend/app/apple-touch-icon.png b/frontend/app/apple-touch-icon.png
index a366e742..bc52cfcc 100644
Binary files a/frontend/app/apple-touch-icon.png and b/frontend/app/apple-touch-icon.png differ
diff --git a/frontend/app/favicon.ico b/frontend/app/favicon.ico
index 97897919..bc52cfcc 100644
Binary files a/frontend/app/favicon.ico and b/frontend/app/favicon.ico differ
diff --git a/frontend/app/favicon.png b/frontend/app/favicon.png
index 97897919..bc52cfcc 100644
Binary files a/frontend/app/favicon.png and b/frontend/app/favicon.png differ
diff --git a/frontend/app/icon-192.png b/frontend/app/icon-192.png
index f1c9f126..bc52cfcc 100644
Binary files a/frontend/app/icon-192.png and b/frontend/app/icon-192.png differ
diff --git a/frontend/app/icon-512.png b/frontend/app/icon-512.png
index 61f7ed41..bc52cfcc 100644
Binary files a/frontend/app/icon-512.png and b/frontend/app/icon-512.png differ
diff --git a/frontend/app/icon.png b/frontend/app/icon.png
index a782d7c0..bc52cfcc 100644
Binary files a/frontend/app/icon.png and b/frontend/app/icon.png differ
diff --git a/frontend/app/layout.tsx b/frontend/app/layout.tsx
index 27dbcb2d..1f3db69e 100644
--- a/frontend/app/layout.tsx
+++ b/frontend/app/layout.tsx
@@ -14,15 +14,27 @@ export const metadata: Metadata = {
description: "由 AI 驅動的多代理 LLM 金融交易框架",
icons: {
icon: [
- { url: "/favicon-v5.ico?t=20241217", sizes: "32x32" },
- { url: "/icon-192-v5.png?t=20241217", sizes: "192x192", type: "image/png" },
- { url: "/icon-512-v5.png?t=20241217", sizes: "512x512", type: "image/png" },
- { url: "/icon-v5.png?t=20241217", sizes: "1024x1024", type: "image/png" },
+ { url: "/favicon-v7.png?t=20241218", sizes: "32x32" },
+ {
+ url: "/icon-192-v7.png?t=20241218",
+ sizes: "192x192",
+ type: "image/png",
+ },
+ {
+ url: "/icon-512-v7.png?t=20241218",
+ sizes: "512x512",
+ type: "image/png",
+ },
+ { url: "/icon-v7.png?t=20241218", sizes: "1024x1024", type: "image/png" },
],
apple: [
- { url: "/apple-touch-icon-v5.png?t=20241217", sizes: "180x180", type: "image/png" },
+ {
+ url: "/apple-touch-icon-v7.png?t=20241218",
+ sizes: "180x180",
+ type: "image/png",
+ },
],
- shortcut: "/favicon-v5.ico?t=20241217",
+ shortcut: "/favicon-v7.png?t=20241218",
},
appleWebApp: {
capable: true,
@@ -45,20 +57,56 @@ export default function RootLayout({
return (
-
+
-
+
{/* Timestamp forces iOS Safari to reload new icons */}
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/frontend/app/page.tsx b/frontend/app/page.tsx
index 831a4338..b0c4d3e6 100644
--- a/frontend/app/page.tsx
+++ b/frontend/app/page.tsx
@@ -17,6 +17,16 @@ export default function HomePage() {
{/* Hero Section */}
+
+
+
TradingAgentsX
diff --git a/frontend/public/apple-icon-v5.png b/frontend/public/apple-icon-v5.png
deleted file mode 100644
index 65ef43d8..00000000
Binary files a/frontend/public/apple-icon-v5.png and /dev/null differ
diff --git a/frontend/public/apple-icon-v7.png b/frontend/public/apple-icon-v7.png
new file mode 100644
index 00000000..bc52cfcc
Binary files /dev/null and b/frontend/public/apple-icon-v7.png differ
diff --git a/frontend/public/apple-touch-icon-v5.png b/frontend/public/apple-touch-icon-v5.png
deleted file mode 100644
index 65ef43d8..00000000
Binary files a/frontend/public/apple-touch-icon-v5.png and /dev/null differ
diff --git a/frontend/public/apple-touch-icon-v7.png b/frontend/public/apple-touch-icon-v7.png
new file mode 100644
index 00000000..bc52cfcc
Binary files /dev/null and b/frontend/public/apple-touch-icon-v7.png differ
diff --git a/frontend/public/favicon-v5.ico b/frontend/public/favicon-v5.ico
deleted file mode 100644
index 1eae4af8..00000000
Binary files a/frontend/public/favicon-v5.ico and /dev/null differ
diff --git a/frontend/public/favicon-v5.png b/frontend/public/favicon-v5.png
deleted file mode 100644
index e33e5951..00000000
Binary files a/frontend/public/favicon-v5.png and /dev/null differ
diff --git a/frontend/public/favicon-v7.png b/frontend/public/favicon-v7.png
new file mode 100644
index 00000000..bc52cfcc
Binary files /dev/null and b/frontend/public/favicon-v7.png differ
diff --git a/frontend/public/icon-192-v5.png b/frontend/public/icon-192-v5.png
deleted file mode 100644
index 397c3f27..00000000
Binary files a/frontend/public/icon-192-v5.png and /dev/null differ
diff --git a/frontend/public/icon-192-v7.png b/frontend/public/icon-192-v7.png
new file mode 100644
index 00000000..bc52cfcc
Binary files /dev/null and b/frontend/public/icon-192-v7.png differ
diff --git a/frontend/public/icon-512-v5.png b/frontend/public/icon-512-v5.png
deleted file mode 100644
index 7882da4a..00000000
Binary files a/frontend/public/icon-512-v5.png and /dev/null differ
diff --git a/frontend/public/icon-512-v7.png b/frontend/public/icon-512-v7.png
new file mode 100644
index 00000000..bc52cfcc
Binary files /dev/null and b/frontend/public/icon-512-v7.png differ
diff --git a/frontend/public/icon-v5.png b/frontend/public/icon-v5.png
deleted file mode 100644
index 3dc7f51a..00000000
Binary files a/frontend/public/icon-v5.png and /dev/null differ
diff --git a/frontend/public/icon-v7.png b/frontend/public/icon-v7.png
new file mode 100644
index 00000000..bc52cfcc
Binary files /dev/null and b/frontend/public/icon-v7.png differ
diff --git a/frontend/public/logo.png b/frontend/public/logo.png
new file mode 100644
index 00000000..bc52cfcc
Binary files /dev/null and b/frontend/public/logo.png differ