# GUI 開發計劃
**文檔版本**: 1.0
**制定日期**: 2025年11月1日
**預計開發時間**: Phase 2 (4-8週) + Phase 3 (12-16週)
**狀態**: 規劃階段
---
## 📋 目錄
- [GUI 策略總覽](#gui-策略總覽)
- [Phase 2: Simple GUI Wrapper](#phase-2-simple-gui-wrapper)
- [Phase 3: Standalone Application](#phase-3-standalone-application)
- [框架評估與選擇](#框架評估與選擇)
- [介面設計](#介面設計)
- [打包策略](#打包策略)
- [開發時程](#開發時程)
---
## GUI 策略總覽
### 兩階段 GUI 開發
```
Phase 1: CLI Tool (已規劃)
↓
└─ 2-3 weeks, 完整 CLI 功能
Phase 2: Simple GUI Wrapper (3-6 months later)
↓
├─ 輕量級 GUI 包裝 CLI 核心
├─ Gooey 或 PySimpleGUI
├─ 4-8 weeks development
└─ 依然需要 Python 環境
Phase 3: Standalone Application (6-12 months later)
↓
├─ 完整獨立應用
├─ Electron 或 Tauri
├─ 12-16 weeks development
└─ 無需 Python 環境
```
### 決策點
**何時開發 Phase 2 GUI?**
- ✅ CLI 工具穩定使用 3-6 個月
- ✅ 收到用戶反饋需要 GUI
- ✅ 非技術用戶群體增長到 30%+
- ✅ 有開發資源和時間投入
**何時開發 Phase 3 Standalone?**
- ✅ Phase 2 GUI 使用廣泛
- ✅ 明確市場需求(調查/反饋)
- ✅ 非技術用戶比例達 50%+
- ✅ 有充足預算($6k-12k)
---
## Phase 2: Simple GUI Wrapper
### 目標
將 CLI 工具包裝成簡單的圖形介面,降低使用門檻。
### 核心原則
1. **最小化改動**: 復用所有 CLI 邏輯
2. **快速開發**: 4-8 週完成
3. **輕量級**: 不增加太多依賴
4. **保留 CLI**: GUI 作為可選介面
---
### 框架選擇: Gooey vs PySimpleGUI
#### Option A: Gooey ⭐⭐⭐⭐⭐
**優勢**:
- 🎯 **零代碼改動**: 直接包裝 argparse/Typer CLI
- ⚡ **開發速度**: 1-2 週即可完成
- 🎨 **自動 UI 生成**: 從命令參數自動生成介面
- 📦 **輕量級**: 依賴少,易於打包
**範例**:
```python
# cli/gui.py
from gooey import Gooey, GooeyParser
@Gooey(
program_name="FHL Bible MCP Server",
program_description="Easily install FHL Bible to MCP clients",
default_size=(800, 600),
navigation='SIDEBAR',
sidebar_title="Commands",
show_success_modal=True,
show_failure_modal=True,
richtext_controls=True,
language="zh_TW",
image_dir="assets/images",
)
def main():
parser = GooeyParser(description="FHL Bible MCP Server")
# 添加子命令
subparsers = parser.add_subparsers(dest='command', help='Commands')
# Setup 命令
setup_parser = subparsers.add_parser('setup', help='Install to MCP clients')
setup_parser.add_argument(
'--platform',
metavar='Platform',
choices=['claude', 'vscode', 'openai', 'all'],
widget='Dropdown',
help='Target platform'
)
setup_parser.add_argument(
'--auto',
metavar='Auto Install',
action='store_true',
widget='BlockCheckbox',
help='Automatically install to all detected platforms'
)
setup_parser.add_argument(
'--force',
metavar='Force Overwrite',
action='store_true',
widget='BlockCheckbox',
help='Force overwrite existing configuration'
)
# Status 命令
status_parser = subparsers.add_parser('status', help='Check installation status')
status_parser.add_argument(
'--platform',
metavar='Platform',
choices=['all', 'claude', 'vscode', 'openai'],
widget='Dropdown',
default='all',
help='Check specific platform'
)
status_parser.add_argument(
'--verbose',
metavar='Verbose',
action='store_true',
widget='BlockCheckbox',
help='Show detailed information'
)
# Doctor 命令
doctor_parser = subparsers.add_parser('doctor', help='Diagnose problems')
doctor_parser.add_argument(
'--fix',
metavar='Auto Fix',
action='store_true',
widget='BlockCheckbox',
help='Automatically fix detected issues'
)
# Test 命令
test_parser = subparsers.add_parser('test', help='Test connection')
test_parser.add_argument(
'--platform',
metavar='Platform',
choices=['all', 'claude', 'vscode', 'openai'],
widget='Dropdown',
default='all',
help='Test specific platform'
)
args = parser.parse_args()
# 執行對應的 CLI 命令
from fhl_bible_mcp.cli import commands
if args.command == 'setup':
commands.setup.command(
platform=args.platform,
auto=args.auto,
force=args.force
)
elif args.command == 'status':
commands.status.command(
platform=args.platform,
verbose=args.verbose
)
elif args.command == 'doctor':
commands.doctor.command(fix=args.fix)
elif args.command == 'test':
commands.test.command(platform=args.platform)
if __name__ == '__main__':
main()
```
**介面預覽**:
```
╔═══════════════════════════════════════════════════════╗
║ FHL Bible MCP Server ║
╠═════════════════╦═════════════════════════════════════╣
║ Commands ║ Setup ║
║ ║ ║
║ ▶ Setup ║ Platform: [▼ all ] ║
║ Status ║ ║
║ Doctor ║ ☐ Auto Install ║
║ Test ║ ☐ Force Overwrite ║
║ Update ║ ║
║ Uninstall ║ ║
║ ║ ║
║ ║ [ Start ] ║
║ ║ ║
║ ║ ─────── Output ─────── ║
║ ║ Detecting platforms... ║
║ ║ ✓ Claude Desktop found ║
║ ║ ✓ VS Code found ║
║ ║ Installation complete! ║
╚═════════════════╩═════════════════════════════════════╝
```
**部署方式**:
```bash
# 安裝 GUI 版本
pip install fhl-bible-mcp[gui]
# 啟動 GUI
fhl-bible-gui
# 或直接運行
python -m fhl_bible_mcp.cli.gui
```
---
#### Option B: PySimpleGUI ⭐⭐⭐⭐
**優勢**:
- 🎨 **自定義介面**: 完全控制 UI 設計
- 📱 **響應式**: 更好的用戶體驗
- 🔧 **靈活性**: 可以實現複雜交互
**缺點**:
- ⏱️ **開發時間長**: 需要 4-6 週
- 💰 **授權**: 商業使用需要購買授權($99-299/year)
**範例**:
```python
# cli/gui_psg.py
import PySimpleGUI as sg
from fhl_bible_mcp.cli.platform.detector import PlatformDetector
from fhl_bible_mcp.cli.platform.installer import PlatformInstaller
# 主題設置
sg.theme('DarkBlue3')
def create_main_window():
"""創建主視窗"""
# 側邊欄
sidebar = [
[sg.Text('FHL Bible MCP Server', font=('Any', 14, 'bold'))],
[sg.HSeparator()],
[sg.Button('Setup', size=(15, 1), key='-SETUP-')],
[sg.Button('Status', size=(15, 1), key='-STATUS-')],
[sg.Button('Doctor', size=(15, 1), key='-DOCTOR-')],
[sg.Button('Test', size=(15, 1), key='-TEST-')],
[sg.Button('Update', size=(15, 1), key='-UPDATE-')],
[sg.Button('Uninstall', size=(15, 1), key='-UNINSTALL-')],
[sg.HSeparator()],
[sg.Button('Exit', size=(15, 1), key='-EXIT-')],
]
# 主內容區域
setup_layout = [
[sg.Text('Platform Selection:')],
[sg.Combo(
['All Detected', 'Claude Desktop', 'VS Code', 'OpenAI Desktop'],
default_value='All Detected',
key='-PLATFORM-',
size=(30, 1)
)],
[sg.HSeparator()],
[sg.Checkbox('Auto Install', key='-AUTO-', default=True)],
[sg.Checkbox('Force Overwrite', key='-FORCE-', default=False)],
[sg.Checkbox('Create Backup', key='-BACKUP-', default=True)],
[sg.HSeparator()],
[sg.Button('Install', key='-INSTALL-BTN-', size=(10, 1))],
[sg.HSeparator()],
[sg.Text('Output:')],
[sg.Multiline(
size=(60, 15),
key='-OUTPUT-',
autoscroll=True,
disabled=True
)],
]
# 主佈局
layout = [
[
sg.Column(sidebar, vertical_alignment='top'),
sg.VSeparator(),
sg.Column(setup_layout, key='-CONTENT-', expand_x=True, expand_y=True)
]
]
return sg.Window(
'FHL Bible MCP Server',
layout,
size=(900, 600),
finalize=True,
resizable=True
)
def run_gui():
"""運行 GUI"""
window = create_main_window()
while True:
event, values = window.read()
if event in (sg.WIN_CLOSED, '-EXIT-'):
break
elif event == '-SETUP-':
# 切換到 Setup 視圖
pass
elif event == '-INSTALL-BTN-':
# 執行安裝
platform = values['-PLATFORM-']
auto = values['-AUTO-']
force = values['-FORCE-']
window['-OUTPUT-'].update('Starting installation...\n')
# 檢測平台
detector = PlatformDetector()
platforms = detector.detect_all()
# 安裝
for p in platforms:
installer = PlatformInstaller(p, force=force)
success = installer.install()
if success:
window['-OUTPUT-'].update(
f'✓ Installed to {p.display_name}\n',
append=True
)
else:
window['-OUTPUT-'].update(
f'✗ Failed to install to {p.display_name}\n',
append=True
)
window['-OUTPUT-'].update('\nInstallation complete!\n', append=True)
window.close()
if __name__ == '__main__':
run_gui()
```
---
### 框架推薦
**推薦: Gooey** ⭐⭐⭐⭐⭐
**理由**:
1. **開發速度**: 1-2 週 vs 4-6 週
2. **維護成本**: 幾乎零維護
3. **授權成本**: 免費 vs $99-299/year
4. **代碼復用**: 100% 復用 CLI 邏輯
**PySimpleGUI 適用情況**:
- 需要高度自定義的 UI
- 有預算購買商業授權
- 需要複雜的互動功能
---
### Phase 2 實作計劃
#### Week 1-2: Gooey 整合
**任務**:
1. 安裝和配置 Gooey
2. 創建 GUI 入口點
3. 配置 UI 佈局和樣式
4. 測試所有命令
**代碼結構**:
```
fhl_bible_mcp/
├── cli/
│ ├── app.py # CLI 入口
│ ├── gui.py # GUI 入口(Gooey)
│ └── commands/ # 共用命令邏輯
```
**產出**:
- ✅ 功能完整的 GUI 應用
- ✅ 所有 CLI 命令可用
- ✅ 中文本地化
- ✅ 自定義圖標和主題
---
#### Week 3-4: 測試與優化
**任務**:
1. 跨平台測試(Windows/macOS/Linux)
2. 用戶體驗優化
3. 錯誤處理和提示優化
4. 文檔更新
**測試重點**:
- ✅ 所有命令正常工作
- ✅ 輸出顯示正確
- ✅ 錯誤提示友善
- ✅ 介面響應流暢
---
#### Week 5-6: 打包與發布
**任務**:
1. 使用 PyInstaller 打包
2. 創建安裝程式
3. 發布到 PyPI(含 GUI)
4. 更新文檔和範例
**發布方式**:
```bash
# CLI + GUI 一起安裝
pip install fhl-bible-mcp[gui]
# 僅 CLI
pip install fhl-bible-mcp
# 下載可執行文件(無需 Python)
# Windows: fhl-bible-gui.exe
# macOS: FHL_Bible_GUI.app
# Linux: fhl-bible-gui.AppImage
```
---
## Phase 3: Standalone Application
### 目標
創建完全獨立的桌面應用,無需 Python 環境。
### 技術選擇
#### Option A: Electron + React ⭐⭐⭐⭐⭐
**優勢**:
- 🎨 **最佳 UX**: 現代化介面
- 🔧 **豐富生態**: NPM 套件豐富
- 📱 **跨平台**: 一次開發,到處運行
- 🌐 **Web 技術**: 熟悉的開發體驗
**缺點**:
- 📦 **體積大**: 50-150MB
- 💰 **開發成本**: 12-16 週
- 🔌 **需要後端**: Python 服務器與前端通信
---
#### Option B: Tauri + React/Vue ⭐⭐⭐⭐
**優勢**:
- 📦 **輕量級**: 5-20MB(比 Electron 小 70%)
- ⚡ **性能好**: 原生 Rust 後端
- 🔒 **安全**: 更好的沙箱機制
- 🎨 **現代 UI**: Web 前端
**缺點**:
- 🆕 **較新**: 生態不如 Electron 成熟
- 📚 **學習曲線**: 需要學習 Rust
---
### 推薦: Electron + React ⭐⭐⭐⭐⭐
**理由**:
1. **成熟穩定**: 生態完善,案例豐富
2. **開發效率**: React 開發速度快
3. **易於維護**: 大量開發者熟悉
4. **豐富資源**: 文檔、教程、套件豐富
---
### 架構設計
#### 整體架構
```
┌─────────────────────────────────────────┐
│ Electron Main Process │
│ (Node.js + Python Bridge) │
├─────────────────────────────────────────┤
│ Renderer Process │
│ (React + TypeScript + Tailwind CSS) │
├─────────────────────────────────────────┤
│ Python Backend │
│ (FastAPI + fhl-bible-mcp) │
└─────────────────────────────────────────┘
```
#### 通信方式
**方案 A: HTTP API** (推薦)
```
React Frontend ←→ HTTP ←→ FastAPI (Python)
```
**優勢**:
- 簡單明瞭
- 易於調試
- 前後端完全解耦
**方案 B: IPC**
```
React ←→ IPC ←→ Electron Main ←→ Python子進程
```
**優勢**:
- 性能更好
- 無需 HTTP 服務器
**推薦**: 方案 A(HTTP API),開發和維護更簡單
---
### 介面設計
#### 主視窗佈局
```
╔════════════════════════════════════════════════════════╗
║ FHL Bible MCP Server [_ □ ×] ║
╠════════════════════════════════════════════════════════╣
║ ║
║ ╔══════════════════════════════════════════════════╗ ║
║ ║ Welcome ║ ║
║ ║ ║ ║
║ ║ FHL Bible MCP Server allows you to easily ║ ║
║ ║ connect Bible resources to AI assistants. ║ ║
║ ║ ║ ║
║ ║ Detected Platforms: ║ ║
║ ║ ┌────────────────────────────────────────────┐ ║ ║
║ ║ │ ✓ Claude Desktop v1.2.0 │ ║ ║
║ ║ │ ✓ VS Code v1.85.0 │ ║ ║
║ ║ │ ✗ OpenAI Desktop Not installed │ ║ ║
║ ║ └────────────────────────────────────────────┘ ║ ║
║ ║ ║ ║
║ ║ [ Setup All ] [ Manage ] [ Test ] ║ ║
║ ╚══════════════════════════════════════════════════╝ ║
║ ║
║ ┌─ Quick Actions ─────────────────────────────────┐ ║
║ │ • Check Installation Status │ ║
║ │ • Run Diagnostics │ ║
║ │ • Test Connections │ ║
║ │ • View Documentation │ ║
║ └─────────────────────────────────────────────────┘ ║
╚════════════════════════════════════════════════════════╝
```
#### 安裝精靈流程
**Step 1: 選擇平台**
```
┌─────────────────────────────────────────┐
│ Select Platforms to Install │
│ │
│ ☑ Claude Desktop Detected │
│ ☑ VS Code Detected │
│ ☐ OpenAI Desktop Not found │
│ ☐ Cursor Not found │
│ │
│ [Cancel] [Next >] │
└─────────────────────────────────────────┘
```
**Step 2: 確認配置**
```
┌─────────────────────────────────────────┐
│ Configuration Preview │
│ │
│ Claude Desktop │
│ ├─ Config Path: ~/.config/Claude/... │
│ ├─ Backup: Yes │
│ └─ Command: python -m fhl_bible_mcp... │
│ │
│ VS Code │
│ ├─ Config Path: ~/.config/Code/... │
│ ├─ Backup: Yes │
│ └─ Settings: User │
│ │
│ [< Back] [Install] │
└─────────────────────────────────────────┘
```
**Step 3: 安裝進度**
```
┌─────────────────────────────────────────┐
│ Installing... │
│ │
│ Claude Desktop │
│ ████████████████████████ 100% │
│ ✓ Backup created │
│ ✓ Configuration updated │
│ ✓ Installation verified │
│ │
│ VS Code │
│ ████████████████████████ 100% │
│ ✓ Settings updated │
│ ✓ Installation verified │
│ │
│ [Finish] │
└─────────────────────────────────────────┘
```
---
### 前端技術棧
#### React + TypeScript + Vite
```json
{
"dependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.20.0",
"@tanstack/react-query": "^5.12.0",
"axios": "^1.6.0",
"zustand": "^4.4.7"
},
"devDependencies": {
"typescript": "^5.3.0",
"vite": "^5.0.0",
"@vitejs/plugin-react": "^4.2.0",
"tailwindcss": "^3.3.0",
"electron": "^28.0.0",
"electron-builder": "^24.9.0"
}
}
```
#### UI 組件庫
**推薦: shadcn/ui + Radix UI** ⭐⭐⭐⭐⭐
**理由**:
- 🎨 現代化設計
- 📦 Tree-shakable(按需引入)
- 🔧 高度可定製
- ♿ 無障礙支援
**替代方案**:
- Ant Design
- Material-UI
- Chakra UI
---
### 後端 API 設計
#### FastAPI 服務器
```python
# gui/backend/main.py
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
from typing import List, Optional
from fhl_bible_mcp.cli.platform.detector import PlatformDetector
from fhl_bible_mcp.cli.platform.installer import PlatformInstaller
app = FastAPI(title="FHL Bible MCP Server API")
# CORS 設置
app.add_middleware(
CORSMiddleware,
allow_origins=["http://localhost:5173"], # Vite dev server
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# 數據模型
class Platform(BaseModel):
name: str
display_name: str
version: Optional[str]
is_installed: bool
config_path: str
class InstallRequest(BaseModel):
platforms: List[str]
force: bool = False
backup: bool = True
# API 端點
@app.get("/api/platforms", response_model=List[Platform])
async def get_platforms():
"""獲取已檢測的平台"""
detector = PlatformDetector()
platforms = detector.detect_all()
return [
Platform(
name=p.name,
display_name=p.display_name,
version=p.version,
is_installed=p.is_installed,
config_path=str(p.config_path)
)
for p in platforms
]
@app.post("/api/install")
async def install(request: InstallRequest):
"""安裝到平台"""
detector = PlatformDetector()
all_platforms = detector.detect_all()
results = []
for platform_name in request.platforms:
platform = next((p for p in all_platforms if p.name == platform_name), None)
if not platform:
raise HTTPException(status_code=404, detail=f"Platform {platform_name} not found")
installer = PlatformInstaller(platform, force=request.force, backup=request.backup)
success = installer.install()
results.append({
"platform": platform_name,
"success": success
})
return {"results": results}
@app.post("/api/test/{platform_name}")
async def test_connection(platform_name: str):
"""測試連接"""
# 實作測試邏輯
pass
@app.get("/api/status")
async def get_status():
"""獲取狀態"""
# 實作狀態檢查
pass
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8765)
```
---
### 打包策略
#### Electron Builder 配置
```json
// electron-builder.json
{
"appId": "com.fhlbible.mcp",
"productName": "FHL Bible MCP Server",
"directories": {
"output": "dist"
},
"files": [
"out/**/*",
"python-dist/**/*"
],
"extraResources": [
{
"from": "python-dist",
"to": "python"
}
],
"win": {
"target": ["nsis"],
"icon": "assets/icon.ico"
},
"mac": {
"target": ["dmg", "zip"],
"icon": "assets/icon.icns",
"category": "public.app-category.utilities"
},
"linux": {
"target": ["AppImage", "deb", "rpm"],
"icon": "assets/icon.png",
"category": "Utility"
},
"nsis": {
"oneClick": false,
"allowToChangeInstallationDirectory": true,
"createDesktopShortcut": true,
"createStartMenuShortcut": true
}
}
```
#### Python 打包
**使用 PyInstaller**:
```bash
# 打包 Python 後端為可執行文件
pyinstaller --onefile \
--name fhl-bible-backend \
--hidden-import fhl_bible_mcp \
gui/backend/main.py
# 將打包結果放入 Electron app
```
**目錄結構**:
```
app/
├── electron/
│ ├── main.js
│ └── preload.js
├── frontend/
│ ├── src/
│ └── dist/
├── python-dist/
│ └── fhl-bible-backend(.exe)
└── package.json
```
---
### 開發時程 (Phase 3)
#### Month 1-2: 基礎架構
| Week | 任務 | 產出 |
|------|------|------|
| 1-2 | 專案設置 | Electron + React + FastAPI 整合 |
| 3-4 | API 開發 | 後端 API 完整實作 |
| 5-6 | 基礎 UI | 主視窗、導航、佈局 |
| 7-8 | 平台檢測 UI | 平台列表、狀態顯示 |
---
#### Month 3: 核心功能
| Week | 任務 | 產出 |
|------|------|------|
| 9-10 | 安裝精靈 | 完整的安裝流程 UI |
| 11-12 | 診斷與測試 | Doctor 和 Test 介面 |
---
#### Month 4: 優化與打包
| Week | 任務 | 產出 |
|------|------|------|
| 13 | UI/UX 優化 | 動畫、過渡、錯誤處理 |
| 14 | 打包測試 | Windows/macOS/Linux 打包 |
| 15 | Beta 測試 | 用戶測試和反饋 |
| 16 | 正式發布 | 發布到各平台 |
---
## 成本分析
### Phase 2: Simple GUI Wrapper
| 項目 | 成本 | 說明 |
|------|------|------|
| **開發時間** | 4-8 週 | 1 開發者 |
| **第三方授權** | $0 | Gooey 免費 |
| **設計資源** | $0-500 | 圖標、Logo(可選) |
| **測試** | $0 | 社群測試 |
| **總計** | **$0-500** | |
---
### Phase 3: Standalone Application
| 項目 | 成本 | 說明 |
|------|------|------|
| **開發時間** | 12-16 週 | 1-2 開發者 |
| **UI/UX 設計** | $2,000-4,000 | 專業設計師 |
| **代碼簽名** | $300-500 | Windows + macOS |
| **測試** | $500-1,000 | Beta 測試、QA |
| **第三方服務** | $0 | 使用開源工具 |
| **總計** | **$2,800-5,500** | |
**如果外包**:
- UI/UX 設計: $3,000-5,000
- 前端開發: $8,000-12,000
- 後端整合: $2,000-3,000
- 測試與發布: $1,000-2,000
- **總計**: $14,000-22,000
---
## 決策建議
### Phase 2 決策點
**3-6 個月後評估**:
| 指標 | 目標 | 決策 |
|------|------|------|
| CLI 月活用戶 | > 500 | 考慮 Phase 2 |
| 非技術用戶比例 | > 30% | 強烈推薦 Phase 2 |
| GUI 需求反饋 | > 50 個請求 | 優先 Phase 2 |
| 開發資源 | 1 人 * 6 週 | 可行 |
**建議**:
- ✅ 優先開發:Gooey wrapper(快速、低成本)
- ⏸️ 觀望:PySimpleGUI(授權成本、開發時間長)
---
### Phase 3 決策點
**6-12 個月後評估**:
| 指標 | 目標 | 決策 |
|------|------|------|
| 總用戶數 | > 2,000 | 考慮 Phase 3 |
| Phase 2 GUI 用戶 | > 50% | 強烈推薦 Phase 3 |
| 非技術用戶 | > 50% | 必要 |
| 市場調查 | 明確付費意願 | ROI 正向 |
| 預算 | $6k-12k | 可行 |
**建議**:
- ✅ 市場驗證充分後再投入
- ⚠️ 考慮眾籌或贊助
- 💡 評估是否提供付費版本(企業功能)
---
## 相關文檔
- 📄 [部署策略總覽](DEPLOYMENT_STRATEGY.md)
- 📄 [多平台支援設計](MULTI_PLATFORM_SUPPORT.md)
- 📄 [CLI 實作計劃](CLI_IMPLEMENTATION_PLAN.md)
- 📄 [開發路線圖](DEPLOYMENT_ROADMAP.md)
---
**最後更新**: 2025年11月1日