實作完整分享、刪除、下載報告功能
This commit is contained in:
196
ENVIRONMENT_CONFIG_GUIDE.md
Normal file
196
ENVIRONMENT_CONFIG_GUIDE.md
Normal file
@@ -0,0 +1,196 @@
|
||||
# 環境變量配置指南
|
||||
|
||||
## 概述
|
||||
|
||||
為了讓應用在不同環境中使用不同的域名,我們已經將硬編碼的 localhost URL 改為環境變量配置。
|
||||
|
||||
## 配置方式
|
||||
|
||||
### 1. 創建環境變量文件
|
||||
|
||||
在項目根目錄創建 `.env.local` 文件:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
### 2. 不同環境的配置
|
||||
|
||||
#### 開發環境 (`.env.local`)
|
||||
```bash
|
||||
NEXT_PUBLIC_APP_URL=http://localhost:12024
|
||||
NEXT_PUBLIC_APP_NAME=AI 智能評審系統 (開發版)
|
||||
```
|
||||
|
||||
#### 測試環境 (`.env.test`)
|
||||
```bash
|
||||
NEXT_PUBLIC_APP_URL=https://test.yourdomain.com
|
||||
NEXT_PUBLIC_APP_NAME=AI 智能評審系統 (測試版)
|
||||
```
|
||||
|
||||
#### 生產環境 (`.env.production`)
|
||||
```bash
|
||||
NEXT_PUBLIC_APP_URL=https://yourdomain.com
|
||||
NEXT_PUBLIC_APP_NAME=AI 智能評審系統
|
||||
```
|
||||
|
||||
## 技術實現
|
||||
|
||||
### 🔧 配置工具類 (`lib/config.ts`)
|
||||
|
||||
創建了統一的配置管理工具:
|
||||
|
||||
```typescript
|
||||
// 獲取應用基礎 URL
|
||||
export function getAppUrl(): string {
|
||||
// 在客戶端使用 window.location.origin
|
||||
if (typeof window !== 'undefined') {
|
||||
return window.location.origin
|
||||
}
|
||||
|
||||
// 在服務端使用環境變量
|
||||
return process.env.NEXT_PUBLIC_APP_URL || 'http://localhost:12024'
|
||||
}
|
||||
|
||||
// 生成分享連結
|
||||
export function generateShareUrl(evaluationId: string): string {
|
||||
const baseUrl = getAppUrl()
|
||||
return `${baseUrl}/results?id=${evaluationId}`
|
||||
}
|
||||
```
|
||||
|
||||
### 📱 分享組件更新
|
||||
|
||||
修改了 `components/share-modal.tsx` 來使用配置工具:
|
||||
|
||||
```typescript
|
||||
import { generateShareUrl, getCurrentUrl } from "@/lib/config"
|
||||
|
||||
// 生成分享連結
|
||||
const shareUrl = evaluationId
|
||||
? generateShareUrl(evaluationId)
|
||||
: getCurrentUrl()
|
||||
```
|
||||
|
||||
## 使用說明
|
||||
|
||||
### 🚀 開發環境設置
|
||||
|
||||
1. **複製環境變量範例**
|
||||
```bash
|
||||
cp env.example .env.local
|
||||
```
|
||||
|
||||
2. **修改配置**
|
||||
編輯 `.env.local` 文件,設置您的開發環境 URL:
|
||||
```bash
|
||||
NEXT_PUBLIC_APP_URL=http://localhost:12024
|
||||
```
|
||||
|
||||
3. **重啟開發服務器**
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### 🌐 部署到生產環境
|
||||
|
||||
1. **設置生產環境變量**
|
||||
在您的部署平台(如 Vercel、Netlify 等)設置環境變量:
|
||||
```bash
|
||||
NEXT_PUBLIC_APP_URL=https://yourdomain.com
|
||||
```
|
||||
|
||||
2. **自動部署**
|
||||
環境變量會在部署時自動生效
|
||||
|
||||
## 功能特色
|
||||
|
||||
### ✨ 智能 URL 生成
|
||||
|
||||
- **客戶端**:自動使用當前域名
|
||||
- **服務端**:使用環境變量配置
|
||||
- **回退機制**:如果環境變量未設置,使用 localhost:12024
|
||||
|
||||
### 🔄 環境適配
|
||||
|
||||
- **開發環境**:使用 localhost
|
||||
- **測試環境**:使用測試域名
|
||||
- **生產環境**:使用正式域名
|
||||
|
||||
### 📱 分享功能
|
||||
|
||||
- **QR Code**:自動使用正確的域名
|
||||
- **分享連結**:包含正確的完整 URL
|
||||
- **郵件分享**:使用配置的域名
|
||||
|
||||
## 注意事項
|
||||
|
||||
### ⚠️ 重要提醒
|
||||
|
||||
1. **環境變量命名**
|
||||
- 客戶端可用的變量必須以 `NEXT_PUBLIC_` 開頭
|
||||
- 只有 `NEXT_PUBLIC_` 前綴的變量才能在客戶端代碼中使用
|
||||
|
||||
2. **安全考慮**
|
||||
- 不要在環境變量中存儲敏感信息
|
||||
- API 密鑰等敏感數據使用服務端專用變量
|
||||
|
||||
3. **文件忽略**
|
||||
- `.env.local` 文件已在 `.gitignore` 中,不會被提交到版本控制
|
||||
|
||||
## 測試驗證
|
||||
|
||||
### ✅ 功能測試
|
||||
|
||||
1. **開發環境測試**
|
||||
```bash
|
||||
npm run dev
|
||||
# 訪問 http://localhost:12024/results
|
||||
# 測試分享功能,確認 URL 正確
|
||||
```
|
||||
|
||||
2. **生產環境測試**
|
||||
```bash
|
||||
npm run build
|
||||
npm run start
|
||||
# 測試分享功能,確認使用生產域名
|
||||
```
|
||||
|
||||
### 🔍 驗證方法
|
||||
|
||||
- 檢查分享連結是否使用正確的域名
|
||||
- 驗證 QR Code 是否包含正確的 URL
|
||||
- 測試郵件分享是否使用正確的域名
|
||||
|
||||
## 故障排除
|
||||
|
||||
### 🐛 常見問題
|
||||
|
||||
1. **環境變量不生效**
|
||||
- 確認變量名以 `NEXT_PUBLIC_` 開頭
|
||||
- 重啟開發服務器
|
||||
- 檢查 `.env.local` 文件位置
|
||||
|
||||
2. **分享連結錯誤**
|
||||
- 檢查 `NEXT_PUBLIC_APP_URL` 是否正確設置
|
||||
- 確認 URL 格式正確(包含 http:// 或 https://)
|
||||
|
||||
3. **部署後 URL 不正確**
|
||||
- 在部署平台設置環境變量
|
||||
- 確認變量名稱和值正確
|
||||
|
||||
## 結論
|
||||
|
||||
通過環境變量配置,分享功能現在可以在不同環境中使用正確的域名,提供更好的靈活性和可維護性。無論是在開發、測試還是生產環境,都能確保分享連結使用正確的 URL。
|
Reference in New Issue
Block a user