Files
Meeting_Assistant/openspec/changes/archive/2025-12-14-extract-environment-variables/proposal.md
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

3.4 KiB
Raw Blame History

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 給使用者