Files
egg e7a06e2b8f chore: Archive all pending OpenSpec proposals
Force archive the following proposals:
- add-audio-device-selector (complete)
- add-embedded-backend-packaging (19/26 tasks)
- add-flexible-deployment-options (20/21 tasks)

New specs created:
- audio-device-management (7 requirements)
- embedded-backend (8 requirements)

Updated specs:
- transcription (+2 requirements for model download progress)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 08:44:04 +08:00

86 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Change: Extract Hardcoded Configurations to Environment Variables
## Why
專案中存在大量硬編碼的路徑、URL、API 端點、埠號及敏感資訊,這些配置散落在前後端程式碼中。為了支援獨立部署(後端部署於 1Panel 伺服器,前端獨立打包),需要將這些配置統一提取到環境變數檔案中管理,提高部署彈性與安全性。
## What Changes
### 後端配置提取
後端使用兩個 Dify 服務:
- **LLM 服務**`DIFY_API_KEY`- 產生會議結論及行動事項
- **STT 服務**`DIFY_STT_API_KEY`- 上傳音訊檔案的語音轉文字
1. **新增環境變數**
- `BACKEND_HOST` - 後端監聽地址預設0.0.0.0
- `BACKEND_PORT` - 後端監聽埠號預設8000
- `DB_POOL_SIZE` - 資料庫連線池大小預設5
- `JWT_EXPIRE_HOURS` - JWT Token 過期時間預設24
- `UPLOAD_TIMEOUT` - 檔案上傳超時時間預設600000ms
- `DIFY_STT_TIMEOUT` - Dify STT 轉錄超時時間預設300000ms
- `LLM_TIMEOUT` - Dify LLM 處理超時時間預設120000ms
- `AUTH_TIMEOUT` - 認證 API 超時時間預設30000ms
- `TEMPLATE_DIR` - Excel 範本目錄路徑
- `RECORD_DIR` - 會議記錄匯出目錄路徑
- `MAX_FILE_SIZE` - 最大上傳檔案大小預設500MB
- `SUPPORTED_AUDIO_FORMATS` - 支援的音訊格式
**註**CORS 保持 `allow_origins=["*"]`,因為前端是 Electron 桌面應用,無需細粒度控制。
2. **已存在環境變數**(確認文件化)
- `DB_HOST`, `DB_PORT`, `DB_USER`, `DB_PASS`, `DB_NAME` - 資料庫配置
- `AUTH_API_URL` - 認證 API 端點
- `DIFY_API_URL` - Dify API 基礎 URL
- `DIFY_API_KEY` - Dify LLM 服務金鑰
- `DIFY_STT_API_KEY` - Dify STT 服務金鑰
- `ADMIN_EMAIL` - 管理員郵箱
- `JWT_SECRET` - JWT 密鑰
### 前端/Electron 配置提取
前端包含 Sidecar本地 Whisper 即時轉錄服務)。
1. **Vite 環境變數**(打包時使用)
- `VITE_API_BASE_URL` - 後端 API 基礎 URL預設http://localhost:8000/api
- `VITE_UPLOAD_TIMEOUT` - 大檔案上傳超時時間預設600000ms
- `VITE_APP_TITLE` - 應用程式標題
2. **Sidecar/Whisper 環境變數**(執行時使用)
- `WHISPER_MODEL` - 模型大小預設medium
- `WHISPER_DEVICE` - 執行裝置預設cpu
- `WHISPER_COMPUTE` - 運算精度預設int8
- `SIDECAR_DIR` - Sidecar 目錄路徑Electron 打包時使用)
### 部署文件與腳本
1. **1Panel 部署指南** - `docs/1panel-deployment.md`
2. **後端部署腳本** - `scripts/deploy-backend.sh`
3. **環境變數範例檔案**
- 更新 `backend/.env.example`
- 新增 `client/.env.example`
## Impact
- Affected specs: `middleware`
- Affected code:
- `backend/app/config.py` - 新增配置項
- `backend/app/database.py` - 使用連線池配置
- `backend/app/routers/ai.py` - 使用 Dify 超時配置
- `backend/app/routers/auth.py` - 使用認證超時配置
- `backend/app/routers/export.py` - 使用目錄路徑配置
- `client/src/services/api.js` - 使用 Vite 環境變數
- `client/src/main.js` - Sidecar 路徑配置
- `start.sh` - 更新啟動腳本
## 部署流程簡化
**IT 只需提供:**
1. 後端伺服器 IP/域名
2. 後端使用的 PORT
**開發者打包前端時:**
1. 設定 `VITE_API_BASE_URL=http://<伺服器>:<PORT>/api`
2. 執行打包命令
3. 分發 EXE 給使用者