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>
This commit is contained in:
egg
2025-12-22 08:44:04 +08:00
parent c36f4167f2
commit e7a06e2b8f
19 changed files with 1551 additions and 0 deletions

View File

@@ -0,0 +1,85 @@
# 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 給使用者