# 環境變量配置實現總結 ## 完成的修改 ### 🔧 創建配置工具類 **文件:`lib/config.ts`** 創建了統一的配置管理工具,包含以下功能: 1. **`getAppUrl()`** - 獲取應用基礎 URL - 客戶端:自動使用 `window.location.origin` - 服務端:使用環境變量 `NEXT_PUBLIC_APP_URL` - 回退:如果未設置環境變量,使用 `http://localhost:12024` 2. **`generateShareUrl(evaluationId)`** - 生成評審結果分享連結 - 自動組合基礎 URL 和評審 ID - 格式:`{baseUrl}/results?id={evaluationId}` 3. **`getCurrentUrl()`** - 獲取當前頁面 URL - 客戶端:使用 `window.location.href` - 服務端:使用基礎 URL 4. **`getAppName()`** - 獲取應用名稱 - 使用環境變量 `NEXT_PUBLIC_APP_NAME` - 回退:`AI 智能評審系統` ### 📱 更新分享組件 **文件:`components/share-modal.tsx`** 修改了分享組件來使用新的配置工具: ```typescript // 舊的硬編碼方式 const shareUrl = evaluationId ? `${window.location.origin}/results?id=${evaluationId}` : window.location.href // 新的環境變量方式 const shareUrl = evaluationId ? generateShareUrl(evaluationId) : getCurrentUrl() ``` ### 📋 創建環境變量範例 **文件:`env.example`** 提供了環境變量配置範例: ```bash # 應用配置 NEXT_PUBLIC_APP_URL=http://localhost:12024 NEXT_PUBLIC_APP_NAME=AI 智能評審系統 # 資料庫配置 DB_HOST=localhost DB_PORT=3306 DB_NAME=ai_scoring DB_USER=root DB_PASSWORD= # AI 配置 GEMINI_API_KEY=your_gemini_api_key_here ``` ## 使用方式 ### 🚀 開發環境 1. **創建環境變量文件** ```bash cp env.example .env.local ``` 2. **編輯配置** ```bash # .env.local NEXT_PUBLIC_APP_URL=http://localhost:12024 NEXT_PUBLIC_APP_NAME=AI 智能評審系統 ``` 3. **重啟服務器** ```bash npm run dev ``` ### 🌐 生產環境 在部署平台設置環境變量: ```bash NEXT_PUBLIC_APP_URL=https://yourdomain.com NEXT_PUBLIC_APP_NAME=AI 智能評審系統 ``` ## 技術優勢 ### ✨ 智能適配 - **客戶端渲染**:自動使用當前域名,無需配置 - **服務端渲染**:使用環境變量,支援不同環境 - **回退機制**:確保在任何情況下都能正常工作 ### 🔄 環境靈活性 - **開發環境**:`http://localhost:12024` - **測試環境**:`https://test.yourdomain.com` - **生產環境**:`https://yourdomain.com` ### 📱 功能完整性 - **分享連結**:使用正確的域名 - **QR Code**:包含完整的 URL - **郵件分享**:使用配置的域名 ## 測試驗證 ### ✅ 功能測試 1. **開發環境** - 分享連結應該使用 `http://localhost:12024` - QR Code 包含正確的 URL 2. **生產環境** - 分享連結使用生產域名 - 所有分享功能正常工作 ### 🔍 驗證步驟 1. 點擊分享按鈕 2. 檢查分享連結的域名 3. 測試 QR Code 掃描 4. 驗證郵件分享功能 ## 注意事項 ### ⚠️ 重要提醒 1. **環境變量命名** - 必須使用 `NEXT_PUBLIC_` 前綴才能在客戶端使用 - 變量名稱區分大小寫 2. **文件安全** - `.env.local` 不會被提交到版本控制 - 敏感信息不要放在客戶端環境變量中 3. **部署配置** - 確保在部署平台正確設置環境變量 - 重啟服務器使環境變量生效 ## 結論 通過環境變量配置,分享功能現在具備了更好的靈活性和可維護性: - ✅ 支援多環境部署 - ✅ 自動適配客戶端和服務端 - ✅ 提供回退機制確保穩定性 - ✅ 保持向後兼容性 現在您可以在不同環境中使用正確的域名進行分享,無需修改代碼!