# 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://<伺服器>:/api` 2. 執行打包命令 3. 分發 EXE 給使用者